【发布时间】:2016-10-21 21:45:16
【问题描述】:
说,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;
}
}
【问题讨论】:
-
@Olaf 删除了不必要的信息。现在有人会评论“请发布代码”
-
请张贴代码。您将需要编写代码来寻找块之间的近似边界,然后向前搜索直到找到换行符。换行位置是一个块的结尾,换行后的字节是下一个块的开始。因此,您需要一个包含
begin和end值的数组,并且您需要在启动线程之前计算这些值。您可以在每个fgets之后使用ftell来查看您是否已到达终点。 -
您需要提出一个具体的问题,以帮助您克服下一个阻碍您的问题。您不能只是转储不完整的代码并要求为您完成。