저는 csv 문자열을 구문 분석하기 위해 C에서 strtok()을 사용하고 있습니다.csv 파일을 두 번 토큰 화합니다.
내 예를 들어 문자열 :
str= "name1 secondname1 cin,name2 secondname2 cin"
구분 기호와 I 처음 사용 strtok를 ","와 두 번째 나는 ""와 문자열을 구분합니다.
char delims1[] = ",";
char delims2[] = " ";
char *result1 = NULL;
char *result2 = NULL;
result1 = strtok(str, delims1);
while (result1 != NULL) {
result2 = strtok(result1,delims2);
while (result2 != NULL) {
printf("%s\n" ,result2);
}
result1 = strtok(NULL, delims1);
}
예상 결과는 다음과 같습니다에 StackOverflow에
name1
secondname1
cin
name2
secondname2
cin
'str'과 'divided'란 무엇이며 무엇이 들어 있습니까? 그 코드를 보여줘야합니다. 또한, 실제로 어떤 결과를 얻고 있습니까? 당신은 당신의 질문이 무엇인지 진술하지 않습니다. –
질문이 어디에 있습니까? –
'strtok()'문제의 아름다운 데모. 거의 항상 사용하는 것은 나쁜 기능입니다. 그것의 결함의 목록은 다양하지만, 특히 당신이 원하는 것처럼 계속 진행되는 두 개의 분할 세트를 가질 수는 없습니다. 시도해야한다면,'strtok_r()'또는'strtok_s()'(POSIX와 Windows, 대략적으로)를 사용하십시오. 내부 while 루프에서'strtok()'에 대한 호출을 놓치고 있으므로'result2'가 변경되지 않으므로 코드는 영구 루프가됩니다. 'strtok() '이나 그 패밀리는 샘플 데이터로 작업 할 수 있지만 일반 CSV 데이터 구문 분석에는 현명하게 사용할 수 없습니다. –