이해할 수없는 방식으로 작동하는 C 프로그램을 작성했습니다. 나는 ... 나는 코드가 전혀 그것을 물어 보지 때 fscanf를 사용하여 다른 변수에 변수 이름을 쓰는 것 같다 C.에 대해 좀 더 배울 수있는 희망이를 게시하고C 코드가 fscanf로 읽은 값을 잘못 표시합니다.
#include <stdio.h>
#include <stdlib.h>
int main() {
float BCL[6];
float varsRA[23],varsLA[23],varsBB[23],varsPV[23];
FILE *inputfil;
int i;
inputfil = fopen ("file.txt", "rt");
for(i=0;i<24;i++) {
fscanf(inputfil,"%f %f %f %f\n", &(varsRA[i]), &(varsLA[i]), &(varsBB[i]), &(varsPV[i]));
}
i=23;
printf("vars%d:%f %f %f %f\n",i,varsRA[i], varsLA[i], varsBB[i], varsPV[i]);
i=0;
while(!feof(inputfil)) {
fscanf(inputfil,"%f ",&(BCL[i]));
i++;
}
i=23;
printf("vars%d:%f %f %f %f\n",i,varsRA[i], varsLA[i], varsBB[i], varsPV[i]);
fclose(inputfil);
return 0;
}
결과는 다음과 같습니다
vars23:-66.336823 -68.164223 -57.850136 -60.762585
vars23:-66.336823 -68.164223 -57.850136 177.000000
왜 varsPV의 마지막 값이 나는 파일의 나머지 부분을 읽을 때, BCL의 첫 번째 값 인 177으로 변경되었습니다! N
이 어디
for(i=0;i<24;i++) {
fscanf(inputfil,"%f %f %f %f\n", &(varsRA[i]), &(varsLA[i]), &(varsBB[i]), &(varsPV[i]));
}
배열 인덱스, 0
에서 N - 1
에 실행이 배열의 경계를 넘어 액세스하는 귀하의 도움을
많은 감사, 마르타
모든 답변 주셔서 감사합니다. 나는 지금 Matlab에 익숙하다. C의 제로 인덱스는 항상 나를 던진다. – user1760043