说,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;
}
}
答案 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);
}