セイは、File1.datのは含まれています。私が作成しようと悩みを抱えていファイルライン(整数)を読み込み、ラインAからラインBまでの合計をどのようにすることができますか?
123
545
3576
3453
345
34
...
123 //1000th line
addNumbersが終了(変数)を整列する(変数)を開始ラインから合計を計算するために機能します。各子プロセス/パイプは、ファイルの独自の部分を計算し、各部分合計を最終合計に加算し、その合計を出力することです。
変数fileReadは、関数に渡されるファイルオブジェクトです。
I. 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 OK感謝 –
@Olafは、不要な情報を削除しました。今誰かが "コードを投稿してください"とコメントします –
コードを投稿してください。あなたはチャンク間のおおよその境界にシークし、改行を見つけるまで前方に検索するコードを書く必要があります。改行位置は1つのチャンクの終わりであり、改行の後のバイトは次のチャンクの始まりです。したがって、 'begin'と' end'値の配列が必要です。スレッドを開始する前にそれらの値を計算する必要があります。それぞれの 'fgets'の後に' ftell'を使って終わりに達したかどうかを調べることができます。 – user3386109