从第二个字开始的文件行上的和数 - C编程

时间:2015-05-11 03:53:45

标签: c string file

以下是我的意见:

Instruments

我正在尝试为每一行添加所有这些数字,然后在终端中将它们打印出来,如下所示:

 david 10 40 70
 sam 9 45 31
 miranda 10 20 50
 zhang 10 26 41

如何从一行中的第二个单词开始对这些数字求和?以下是我的代码:

david 120
sam 85
etc...

2 个答案:

答案 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