题目:
编写toArray()函数,原型为 int toArray(char *str ,char c, int arr[]),输入数字串,将字符串str按字符c分割,并将其中的数字保存到ayy数组中。
如输入123,456,789 指定分割字符为 ’ , ’ 则arr[0]=123,arr[1]=456,arr[2]=789
思路:
现预读一边字符串,将分隔符的位置记录在flag数组中,每次取两个分割符之间的字符(如flag[2]=5,flag[3]=8,则我们要的数据就是第6,7位)到buf进行转换(atoi函数),再放到arr[]中,需要注意的是由于头尾没有分隔符,所以我们人为加入分隔符的位置,如第一个分隔符的位置为-1,最后一个分割符的位置就是字符串的长度。
代码如下:
#include <stdio.h>
#include <stdlib.h>
int toArray(char *str,char c,int arr[])
{
int i,j;
int k=1;
int n=0;
int a=0;
int x=0;
int flag[10];
char buf[16];
i=strlen(str);
for(j=0;j<i;j++)
{
if(str[j]==c)
{
flag[k]=j;
k++;
}
}
flag[0]=-1;
flag[k]=i;
a=0;
for(j=0;j<=k;j++)
{
printf("flag[%d]=%d\n",j,flag[j]);
}
printf("output: ");
for(j=0;j<k;j++)
{
memset(buf,0,sizeof(buf));
x=0;
for(n=flag[a]+1;n<flag[a+1];n++)
{
buf[x]=str[n];
x++;
}
arr[j]=atoi(buf);
printf("%d ",arr[j]);
a++;
}
printf("\n");
return 1;
}
int main()
{
char *s[32];
char c=',';
int array[32];
scanf("%s",s);
printf("input: %s\n",s);
toArray(s,c,array);
return 0;
}
运行结果如下: