好的,我正在使用 C 语言编写拼写检查程序。我遇到的问题是将系统词典中的一个单词读入程序。我已经搜索了一个答案,但我找不到任何完全正确的东西,可能是因为这是一个非常基本的东西。这是我到目前为止的代码。
void readWord(FILE * stream, int buffer[]){
15
16 while(fgetc(stream) != 10){
17 buffer[i] = fgetc(stream);
18 printf("copying %d to buffer\n", buffer[i]); //added for debugging
19 }
20 return;
21 }
以下是函数调用中使用的变量以及调用
int buffer[WIZE];
readWord(dictionary, buffer, WSIZE);
字典指向/usr/share/dict/words,并且有代码可以确保它正确打开,但我没有把它放在这个问题中;也许这毕竟是问题所在。这应该输出 Aarhus,但它会输出:
Dictionary opened successfully
copying 97 to buffer
copying 104 to buffer
copying 115 to buffer
我想知道是否每次程序执行第 16 行文件位置都会更新到下一个字符?如果指针从第二个字符开始,则输出是 Aarhus 的每隔一个字母。
readWord 函数还用于从文本文件中读取单个单词进行检查,这就是我没有使用 getline 的原因。还有其他函数可以将缓冲区连同终端空字符一起刷新为字符串并显示。这只是处理一次从文件中获取一个单词的问题。