繁体   English   中英

如何读取文件行(整​​数)并将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函数以计算从行Begin(变量)到行End(变量)的总数时遇到麻烦。 每个子进程/管道将计算其自己的文件部分,将每个部分和添加到最终总计中并打印该总计。

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

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

问题...这里有几个问题:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM