每日一题C语言5

题目:
编写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;
}

运行结果如下:
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值