나는 csv 문자열을 구문 분석하기 위해 c에서 strtok()을 사용하고 있습니다. 먼저 정확한 크기의 문자열을 할당 할 수 있도록 토큰의 수를 알아 내기 위해 토큰 화합니다. 마지막으로 토큰 화에 사용했던 것과 동일한 변수를 사용합니다. 매번 두 번째로 그래도 그래도 strtok(NULL, ",")은 더 많은 토큰이 파싱 되어도 NULL을 반환합니다.
아래 프로그램에서 파일의 각 줄을 문자열로 읽고 문자열을 분석하여 개별 단어를 표시하려고합니다. 문제는 프로그램 이제 파일의 첫 번째 행만 출력합니다. 왜 이런 일이 일어나는지 이해가 안되니? #include<iostream>
#include<string>
#include<fstream>
#include<cstdio>
using namespace s
파일에서 데이터를 읽으려고하고 토큰 화하고 정렬합니다. 그러나 strtok이 실행될 때 비정상적으로 작동합니다. 때로는 작동하지 않는 경우가 있으며 매우 짧거나 홀수의 토큰이 있습니다. Valgrind의이 strtok를가 초기화되지 않은 값에 의존하기 때문에 생각하는 것 같다 (내가 생각하는) : == 7069 == 조건부 점프 또는 이동은 초기화되지 않은
3 개의 필드가 쉼표로 구분 된 텍스트 파일이 있습니다. 내 텍스트 파일의 내용 예 : 12345, 진정한 프로그래밍 초보자, BS ME 파일을 프로그램에로드하려면 아래 코드를 사용하십시오 .... 내 문제는 때때로 코드가 작동하고 때로는 작동하지 않는다는 것입니다. (오류 메시지가 나타나지 않으면 프로그램이 닫히고 계속되지 않습니다.) 나는 또한 텍스트
세그먼트 화 오류를주는 프로그램을 디버깅하는 데 시간을 보내고 있습니다. 이 버그는 꽤 비결정적이고 간헐적이며 성가시다. 나는 strtok의 부름에 그것을 좁혔다. 세그먼트 화 오류를 일으키는 두 개의 다른 스레드에서 문자열을 분할하는 것이 strtok의 호출이라고 생각합니다. strtok을 두 개의 다른 스레드에서 호출 할 수 있습니까? 감사합니다.