지금 나는 학교에서 C 프로그램으로 일하고 있으며 파일에서 텍스트를 읽는 데 문제가 있습니다. 나는 Java로만 작업했기 때문에 아직 C에 익숙하지는 못하지만 꽤 간단하다고 확신 할 지 모르지만 철저하게 문제가 발생합니다. 나는 각 단어에 받아 보관해야파일에서 데이터 읽기, 영문자 만
boo22 $ Book5555bOoKiNg # BOO # TeX123tEXT (JOHN)를
을 : 여기
우리가 읽을 수있는 텍스트 파일에 서식 할 수있는 방법의 예 데이터 구조에서 단어는 알파 문자이므로 숫자 나 특수 문자는 없습니다. 이미 데이터 구조가 올바르게 작동하므로 각 단어를 char 배열로 가져와 내 구조에 추가해야합니다. 알파가 아닌 char 값이 될 때까지 각 문자를 계속 읽어야합니다. 나는 파일에서 스캔하는 여러 가지 방법을 조사해 보았고 내 시나리오에 가장 적합한 것이 있는지 잘 모르겠습니다. 그것이 내가 STR 단어인지 아닌지 확인해야 다음 문 경우 첫 번째 충돌하지 않는 경우 가char str[MAX_WORD_SIZE];
char c;
int index = 0;
while (fscanf(dictionaryInputFile, "%c", c) != EOF) //while not at end of file
{
if (isalpha(c)) //if current character is a letter
{
tolower(c); //ignores case in word
str[index] = c; //add char to string
index++;
}
else if (str[0] != '\0') //If a word
{
str[index] = '\0'; //Make sure no left over characters in String
dictionaryRoot = insertNode(str, dictionaryRoot); //insert word to dictionary
index = 0; //reset index
str[index] = '\0'; //Set first character to null since word has been added
}
}
내 생각은, 그건되었다 : 여기
내가 내 입력을 지금 가지고있는 코드입니다 왜 str의 0 인덱스가 null인지 아닌지를 검사한다. 나는 내가 가지고있는 문장이 맞지 않을지라도 추측하고있다. 그러나 현재 데이터 구조에 추가 될 때 str을 null로 재설정하는 방법을 알 수 없다. 지금 이걸 실행할 때 txt 파일을 인수로 전달하면 분할 오류가 발생합니다.저는 제대로 된 트랙인지 알고 싶지만이 데이터를 읽는 방법에 대한 도움이되지는 않을 것입니다.
처음으로 여기에 올리는 글입니다. 나에게 알려주지 않으면 더 많은 정보를 기쁜 마음으로 알려 드리겠습니다.
1) 'fscanf (dictionaryInputFile "%의 C', c) '->'fscanf (dictionaryInputFile"%의 C ", 및 c) '루프가 추가되지 않고 종료 될 때 – BLUEPIXY
2) 단어가 처리되고 . – BLUEPIXY
제안'int c; while ((c = fgetc (dictionaryInputFile))! = EOF)'- (고맙습니다 @ BLUEPIXY). – chux