I 함수를 갖고, n은 파일의 수를 분석 할 수 있으며, I는 결과를 분석 구조체의 어레이를 통과하고있어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];
하지만 제대로 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