如何读取文件行(整数)并对从 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);
}
比如说,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);
}