以下是我的意见:
Instruments
我正在尝试为每一行添加所有这些数字,然后在终端中将它们打印出来,如下所示:
david 10 40 70
sam 9 45 31
miranda 10 20 50
zhang 10 26 41
如何从一行中的第二个单词开始对这些数字求和?以下是我的代码:
david 120
sam 85
etc...
答案 0 :(得分:3)
您可以尝试strsplit()(编辑:或strtok(),因为@ 1.618建议,与PHP的strsplit有点不同),然后使用atoi()
我不确定C标准库中是否存在strsplit(),您可能需要自己重新编码:它需要 char * (您的字符串要拆分)和 char (分隔符,在本例中为空格),并应返回 char ** ,其中您可以传递给 atoi()的子串(单词) 强>
答案 1 :(得分:1)
如果缓冲区为空终止,则可以在没有特殊字符串拆分功能的情况下进行,并处理任意数量的数字。
int sumline(char *buf)
{
int sum=0;
size_t i;
for(i=0; buf[i] != '\0'; i++)
{
if(buf[i] == ' ' && isdigit(buf[i+1]))
{
sum += atoi(buf+i+1);
}
}
return sum;
}
只需迭代字符,每当你点击一个空格时,从下一个字符开始对字符串运行atoi
。