getchar () 및 C에서 문장과 단어 계산
-
18-09-2019 - |
문제
주어진 텍스트 파일에서 단어, 음절 및 문장의 수를 초래하기 위해 특정 규칙을 따르는 프로그램을 만들고 있습니다.
문장은 a에서 끝나는 공백으로 분리 된 단어 모음입니다. 또는 ! 또는 ? 그러나 이것은 또한 문장입니다.
Greetings, earthlings..
내가이 프로그램에 접근하는 방식은 getChar ()를 사용하여 한 번에 한 문자를 텍스트 파일을 스캔하는 것입니다. 메모리에서 전체 텍스트 파일로 작업 할 수 없으므로 한 번에 하나의 문자 또는 단어 여야합니다.
다음은 내 딜레마입니다. getchar ()를 사용하여 현재 문자가 무엇인지 알 수 있습니다. EOF 문자를 찾을 때까지 루프에서 getChar ()를 계속 사용합니다. 그러나 문장이 끝에 여러 기간이 있다면 여전히 단일 문장입니다. 이는 내가 분석하는 마지막 캐릭터와 그 이후의 캐릭터가 무엇인지 알아야한다는 것을 의미합니다. 내 생각을 통해 이것은 또 다른 getChar () 호출을 의미하지만, 다음 캐릭터에서 스캔 할 때 문제가 발생합니다 (이제 캐릭터를 건너 뛰었습니다).
위의 문장이 실제로 문장이라고 판단 할 수있는 방법에 대한 제안이 있습니까?
감사합니다. 설명이나 다른 것이 필요한 경우 알려주세요.
해결책
당신은 매우 간단한 것을 구현하면됩니다 상태 머신. 문장의 끝을 찾으면 새 문장의 시작을 찾을 때까지 해당 상태에 남아 있습니다 (일반적으로 이것은.! 또는?와 같은 터미네이터 이외의 백인이 아닌 공간 캐릭터가 될 것입니다.
다른 팁
확장 가능한 문법이 필요합니다. 예를 들어 정규 표현식을 살펴보고 하나를 만들려고 노력하십시오.
일반적으로 인간 언어는 다양하고 어리석은 일이 아니며 특히 언어를 분석하거나 다른 언어를 구어체하는 경우 쉽게 구분할 수 없습니다. 일부 언어에서는 단어와 문장의 구별이 무엇인지 명확하지 않을 수도 있습니다. ~이다.