텍스트 파일을 구문 분석하고 단어 .word
을 발견하면 나머지 줄을 가져 오려고합니다. 다음은 지금까지 내가 가지고있는 것입니다 :문자열에 대한 포인터 - C
char *word_ptr;
if (strstr(token, ":")){
// Some code
}
else if ((word_ptr = strstr(token, ".word"))) {
char *string_wanted = word_ptr + 6;
printf("Rest: '%s'\n", string_wanted);
}
string_wanted
이 올바르게 인쇄되지 않습니다. else-if
문에 지정할 때 word_ptr을 올바르게 사용하고 있습니까? string_wanted
이 아무 것도 인쇄하지 않습니다. 6 대신 7을 추가하면 'ize'가 인쇄됩니다. 내 텍스트 파일에 단어 크기가 있었지만 이제는 파일을 삭제하고 파일을 삭제하고 다시 만들고 깨끗한 빌드를 완료하면 'ize'라는 단어가 계속 나타납니다 !! 파일에 더 이상 존재하지 않으므로 어디에서 왔습니까 ?? 나는 '크기'라는 단어가 파일에 더 이상 존재하지 않는다는 사실에 실망합니다. 이제
array: .word 0:10
array_size: .word 10
난 그냥 두 번째 줄을 제거가 그래서, : array: .word 0:10
왜 아닙니다 여기
(나는 단어 '는 어때'를했을 때) 파일이 속입니다 word_ptr 0시 10 분 그것을 밖으로 6 인쇄 할 때 인쇄? 나는 word_ptr이 .word를 가리키고 있다고 확신한다. 왜냐하면 나는 그것을 인쇄 할 때 .word를 인쇄하기 때문이다. 줄을 토큰화할 때array:
이 토큰 화되어지고 있기 때문에 거기에 도착한다는 것을 알고 있습니다.
제안 사항?
도움 주셔서 감사합니다.
strstr에서 NULL 테스트를 시도 했습니까? – Serdalis
그 이유는 무엇입니까? null이 아닌 경우에만 코드 블록이 실행되지 않습니까? – darksky
사실이 코드의 유일한 문제점은 (테스트 케이스를 제공 한 상태에서) 다른 프로그램에 도달하지 못한다는 것입니다. 내 프로그램에서 모든 것을 해결했을 때, 전체 코드를 게시하십시오. 코드 당신이 게시 한 아무런 문제가 없습니다. – Serdalis