-1
C로 CSV 파일을 읽고 strtok()의 토큰을 배열에 저장하려고합니다. 여하튼, CSV 파일에 여러 줄이있을 때 올바른 토큰 출력을 얻지 못합니다. CSV 파일은 다음과 같습니다 (이 예를 들어 그냥 두 줄, 실제 파일은 100 개 이상의 라인이있을 것이다) :strtok() 올바른 값을 인쇄하지 않습니다
abc,def,ghi
jkl,mno
내 코드입니다 : 나는에 문자열을 쉼표로 구분 된 각을 원하는
void main() {
FILE *fp;
fp = fopen("simple.csv", "r");
const char s[2] = ",";
char *token;
char *out[5];
int i = 0;
if (fp != NULL)
{
char line[50];
while (fgets(line, sizeof line, fp) != NULL)
{
token = strtok(line, s);
//for (token; token != NULL; token = strtok(NULL, ","))
while (token != NULL)
{
out[i++] = token;
//printf("%s", token);
token = strtok(NULL, s);
}
printf("%s\n", out[0]);
}
//for (i = 0; i < 5; i++)
fclose(fp);
}
else {
printf("error opening file");
}
}
루프를 통해 배열에 저장 될 수 있습니다. 내가 배열 (out[0]
)의 첫 번째 요소를 인쇄 할 때 는, 출력은 다음과 같습니다
abc
jkl
난 그냥 토큰 것으로 예상하면서 :
ABC
사람이 나를 주시기 바랍니다 수 문제가 뭔지 알아?
넌 * 모든 * 'fgets' 대한 * 같은 *'line' 버퍼를 사용한다. 따라서 결과는 입력의 모든 라인을 덮어 씁니다. – kaylum
나는 초보자입니다. 이 문제를 해결하는 방법을 알려주시겠습니까? –
예 첫 번째 열입니다. 각 문자열을 CSV 파일에 배열로 저장하고 싶습니다. –