如何读取文件行(整​​数)并将A行与B行的总和相加?

时间:2016-10-21 21:45:16

标签: c scanf fseek

说,file1.dat包含:

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

我在尝试编写addNumbers函数以计算从行Begin(变量)到行End(变量)的总数时遇到问题。每个子进程/管道都要计算自己的文件部分,将每个部分总和添加到最终总数中并打印该总数。

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

予。 E. 4个子进程,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;
    }
}

1 个答案:

答案 0 :(得分:1)

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

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);
}