나는 포인터와 그와 같은 것을 아주 새로 도입했다. 이 함수는 문자 배열을 가져 와서 따옴표가있는 곳을 제외하고 구성 요소 단어로 나눠야합니다 (따옴표 안에 모든 것이 함께 유지됩니다).토큰 화 C 블록의 세그먼트 오류
따옴표에 대한 지원을 추가하기 전에 완벽하게 작동했지만 이제는 세그먼트 오류가 발생합니다. (가) 문자열의 끝을 확인하지 않는 line
이상
int parse(char *line, char **args) {
int argc = 0;
while (*line != '\0') {
if (*line == '\'' || *line == '\"') {
*args++ = line;
++argc; ++line;
while (*line != '\'' || *line != '\"')
++line;
++line;
}
else {
while (*line == ' ' || *line == '\t' || *line == '\n')
*line++ = '\0';
*args++ = line;
++argc;
while (*line != '\0' && *line != ' ' && *line != '\t' && *line != '\n')
++line;
}
}
*--args = '\0';
return --argc;
}
당신이이 함수를 호출하는 방법을 보여 할 수없이 당신에게 문제
을 제공하는 것입니다? 어떤 변수 (및 선언/정의/초기화)를 함수에 전달합니까? 질문을 편집하여 [Minimal, Complete, Verifiable example] (http://stackoverflow.com/help/mcve)를 포함시킬 수 있습니까? –
또한 디버거에서 실행 해 보았습니까? 충돌이 발생하는 시점과 위치가 중지되며 변수와 호출 스택을 검사 할 수 있습니다. 코드에 크래시가 없으면 코드를 찾을 때까지 호출 스택을 이동합니다. –