나는 csv 문자열을 구문 분석하기 위해 c에서 strtok()
을 사용하고 있습니다. 먼저 정확한 크기의 문자열을 할당 할 수 있도록 토큰의 수를 알아 내기 위해 토큰 화합니다. 마지막으로 토큰 화에 사용했던 것과 동일한 변수를 사용합니다. 매번 두 번째로 그래도 그래도 strtok(NULL, ",")
은 더 많은 토큰이 파싱 되어도 NULL
을 반환합니다. 누군가 내가 잘못하고있는 것을 말해 줄 수 있습니까?문자열을 두 번 토큰 화하여 strtok()로
char* tok;
int count = 0;
tok = strtok(buffer, ",");
while(tok != NULL) {
count++;
tok = strtok(NULL, ",");
}
//allocate array
tok = strtok(buffer, ",");
while(tok != NULL) {
//do other stuff
tok = strtok(NULL, ",");
}
그래서 두 번째 while 루프에서는 더 많은 토큰이 있더라도 첫 번째 토큰이 발견 된 후에 항상 종료됩니다. 아무도 내가 뭘 잘못하고 있는지 알아?
요즘 누구나 'strtok()'가 무엇인지 아는 사람들은 분명하지만 누구도 설명서를 읽지 못했습니까? 아무도 내가 C를 배울 때 그것에 대해 말하지 않았지만, 내가 그것에 대해 알게 되 자마자 그것에 대해 읽었습니다. –