내 프로그램에서 .txt 파일의 텍스트를 수신합니다. 다음은 텍스트 행의 예는 다음과 같습니다realloc 문제 - "다음 크기가 유효하지 않음"
12X15의 DE3의 DS4는 dn9 g2,7 m5,9 m3,1 h2,2 나는 각각의 덩어리를 헤어 strtok를()를 사용하는 것을 시도하고있다
본문; 그런 다음 각 청크를 배열의 요소로 넣습니다. 문자열 배열입니다. 여기
지금까지 내 코드입니다 :void parseFile(char ** argv) {
FILE *textFile;
char *string;
char **lineToken;
int i;
textFile = fopen(argv[1], "r");
lineToken = malloc(sizeof(1));
string = malloc(sizeof(MAX_CHAR));
while(fgets(string, MAX_CHAR, textFile) != NULL) { /* Get first line of text */
lineToken[0] = strtok(string, " "); /* Put first element in lineToken[0] */
for(i = 1; i; i++) {
/* Realloc because total number of elements is unknown */
lineToken = realloc(lineToken, i + 1);
/* Put new strtok'd string into lineToken[i] */
lineToken[i] = strtok(NULL, " ");
}
for(i = 0; i; i++) {
move(i, 0);
printw("%s", lineToken[i]);
refresh();
}
}
free(lineToken);
free(string);
} /* End of function */
하지만이 realloc과 오류가 점점 계속 : 여기
lineToken = malloc(sizeof(1));
당신이 할당 :
*** glibc detected *** ./bin/a3RunMe: realloc(): invalid next size: 0x01f2a270 ***
Aborted
확실히 'printw' 대신에'printf'를 사용했습니다. – ajay
사과드립니다. 나는 ncurses 라이브러리를 사용하고 있으므로 화면에 텍스트를 인쇄하려면 printw가 필요하다. – Plaidypus