저는 텍스트 파일을 구문 분석하려고하며 각 단어를 키로 단어와 함께 값과 해시 테이블에 추가하려고합니다. 이 문제는 읽기 부분 인 것으로 입증되고 있습니다. 파일은 구두점과 특수 문자가 포함되어있어 매우 큰 "일반"텍스트 파일입니다. 나는 단어 경계로 읽은 모든 비 알파벳 문자를 다뤄야한다. 나는 기본적인 것을 이것으로 가고 있습니다 그러나C - 단어 경계로 알파벳이 아닌 문자를 읽으십시오.
char buffer[128];
while(fscanf(fp, "%127[A-Za-z]%*c", buffer) == 1) {
printf("%s\n", buffer);
memset(buffer, 0, 128);
}
, 실제로 공백 앞에 비 알파벳 문자를 명중 할 때마다 초크 (예를 들어,로 읽을 것이다 "는, 고양이) (갈색이었다" "가 고양이가 "). 나는 그 문제가 그 코드와 어떤 관련이 있는지 알고 있지만, 그 문제를 해결하는 방법을 모르겠습니다. 전체 라인을 읽고 수동으로 파싱하는 것이 더 낫지 않습니까? scanf
을 시도하고 있습니다. 왜냐하면이 형식 문자열을 사용하여 수행 할 수있는 미니 정규식에 대한 좋은 후보라고 느꼈기 때문입니다.
% "[A-Za-z] % * [^ A-Za-z]"'쉬운 수정으로. – BLUEPIXY
감사! 그것은 내가 필요로했던 것을했다. –
fscanf (fp, "% 127 [A-Za-z]", 버퍼) == {while (fscanf (fp, "% * *^A-Za-z" '% 127 [A-Za-z] % * [^ A-Za-z] "'는 아닙니다. 두 접근법 모두 선택적 글자 그룹으로 처리 할 수 있습니다. 그 뒤에는 비 문자가 뒤 따른다. – chux