나는 텍스트 파일을 가지고 있는데 그것을 한 줄씩 읽고 행을 배열에 넣고 싶습니다.C : 배열로 파일 읽기
FILE *f;
char line[LINE_SIZE];
char *lines;
int num_righe;
f = fopen("spese.dat", "r");
if(f == NULL) {
f = fopen("spese.dat", "w");
}
while(fgets(line, LINE_SIZE, f)) {
num_righe++;
lines = realloc(lines, (sizeof(char)*LINE_SIZE)*num_righe);
strcpy(lines[num_righe-1], line);
}
fclose(f);
오류는 다음과 같습니다 :
spese.c:29: warning: assignment makes integer from pointer without a cast
spese.c:30: warning: incompatible implicit declaration of built-in function ‘strcpy’
spese.c:30: warning: passing argument 1 of ‘strcpy’ makes pointer from integer without a cast
어떤 도움을 컴파일하는 동안
코드 조각 뒤에 오류를 준다? 감사
당신은 정말 당신의 프로그램에 헤더 #INCLUDE을 포함해야한다. 좋은 일을하지 않았 으면 좋겠다. -fno-builtin은 당신에게 경고하지 못했을 것이고 프로그램은 gcc에 의해 조용히 컴파일되었을 것이다. –
나는 if (! f) fopen ("spese.dat", "w")의 값에 대해 모호하다. 부품. 이 조건이 발생하면 f는 쓰기를 위해 열려 있고 fgets()는 성공할 수 없습니다. 또한 약간의 에러 검사가 전체적으로 좋을 것입니다. 특히 realloc()은 오래된 버퍼를 해제하지 않고 실패 할 경우 NULL을 반환합니다. – RBerteig
@RBerteig. 나는 동의한다. 오류 검사는 현재와 거리가 멀다. – Tom