私は、関数、nは分析しようとするファイルの数である、と私は結果を分析構造体の配列を渡しているC-反復処理*
struct Analysis reduce (int n, void* results)
を持っています。次のように分析構造体が定義されている
:
struct Analysis {
int ascii[128]; //frequency of ascii characters in the file
int lineLength; //longest line in the file
int lineNum; //line number of longest line
char* filename;
}
私は、このような、
struct Analysis resArray[n];
struct Analysis* ptr = results;
resArray[0] = ptr[0];
としてvoid *型にキャストしましたが、私はきちんとresArrayを反復処理する方法を見つけ出すことはできません。私は試しました
for (i = 0; i < n; i++){
printf("lineLength: %d\n", resArray[i].lineLength);
}
n = 3で、私はごみ値を取得しています。 resArray [0]は正しいですが、resArray [1]は非常に高い数値で、resArray [2]は0にすぎません。なぜresArray [1]またはresArray [2]が正しい値を返さないのでしょうか?私がアドレスを間違ってインクリメントしていたのであれば意味をなさないでしょうが、特定のインデックスで配列にアクセスしています。かなりここに失われた! 「何か」があるので
'resArray [i]'の代わりに 'ptr [i]'を試してみてください。 – BLUEPIXY
'resArray [0] = ptr [0];を使用して' results'の最初の要素を 'resArray'の最初の要素にコピーしています。他の値は、不安定化されないままである。 – LPs
'resArray [1]またはresArray [2]が正しい値を与えるのはなぜですか?なぜこれらの要素に割り当てが行われなかったのか? 'resArray [0] = ptr [0];で行ったことは、最初の要素を引っ張っていました。他のすべては配列内の* indeterminate *です。しかし、なぜ最初の場所でそれらを別の配列に入れるのですか? 'ptr [i] .linelength'だけで何が問題になっていますか? – WhozCraig