파일에서 한 줄을 읽고 문자를 분리 한 다음 malloc의 int 배열로 읽으려고합니다. atoi를 사용하여 char을 int로 캐스팅 할 때 분할 오류가 발생하는 것 같아서 int를 배열에 할당 할 수 없습니다. 어떤 도움을 주시면 감사하겠습니다.
int main(int argc, char * argv[]){
FILE *in;
in = fopen(argv[1], "r");
FILE *out;
out = fopen(argv[2], "w");
int numDays;
char ignore[256];
fscanf(in, "%d", &numDays);
fgets(ignore, sizeof(ignore), in);
int *timeArray = (int *) malloc(numDays * sizeof(int)); ;
char buffer[256];
fgets(buffer, 256, in);
const char delimiter[2] = " ";
char *token;
token = strtok(buffer, delimiter);
int index = 0;
while( token != NULL ) {
printf( "%s\n", token);
token = strtok(NULL, delimiter);
int val = atoi(token);
timeArray[index] = val;
index++;
}
return(0);
}
남은 토큰이 없으면를 strtok()
반환합니다 NULL
. 그러나 atoi(token)
즉시 호출 하면 NULL
. 루프 상태 while (token != NULL)
는 루프 본문이 끝날 때까지 확인되지 않으므로 도움이되지 않습니다.
결과를 사용하기 전에 테스트가 완료되도록 루프를 재구성해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다