如何读取文件行(整​​数)并对从 A 行到 B 行的总数求和?

How can I read a file line (integer) and sum the total from line A to line B?

比如说,file1.dat 包含:

123
545
3576
3453
345
34
...
123     //1000th line

我在尝试编写 addNumbers 函数来计算从行开始(变量)到行结束(变量)的总数时遇到了问题。每个 child process/pipe 是计算它自己的文件部分,将每个部分总和添加到最终总数中并打印该总数。

变量 fileRead 是传递给函数的文件 object。

我。 E. 4child个流程,1000行,每个流程做250行。 这是我的工作代码。有什么问题请追问。:

division = numberOfLines/numberOfPipes;
int begin = currentPipe*division;
int end = begin + division;

for(i=begin; i<end; i++)
{
    fseek(fileRead, begin, SEEK_CUR);
    while(fgets(line,sizeof line,fileRead)!= NULL)
    {
    total+= total + line;
    }
}

问题...几个问题,在这里:

while(fgets(line,sizeof line,fileRead)!= NULL)
{
    total += total + line;
}

首先是您尝试将 char *line 用作数字。那是行不通的。与高级语言不同,C 不会将字符串转换为数字。您需要明确地执行此操作,通常使用 atoi(line).

您的 C 编译器应该警告您类型不匹配,这表明您没有 运行 警告。默认情况下,大多数 C 编译器不会打开警告,您需要打开它们。通常这与 -Wall 类似 cc -Wall -g test.c -o test.

接下来,total += total + line; 表示 total = total + total + line,这可能不是您的意思(如果是,您应该将其写下来以明确说明)。我假设你的意思是 total += line.


将它们放在一起...

while(fgets(line, sizeof(line), fileRead)!= NULL) {
    total += atoi(line);
}