【发布时间】:2012-06-18 01:41:03
【问题描述】:
好的,我正在使用 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);
dictionary 指向 /usr/share/dict/words,并且有代码可以确保它正确打开,但我没有把它放在这个问题中;也许这毕竟是问题所在。这应该输出 Aarhus,但它输出的是:
Dictionary opened successfully
copying 97 to buffer
copying 104 to buffer
copying 115 to buffer
我想知道是否每次程序执行第 16 行时文件位置都会更新到下一个字符?如果指针从第二个字符开始,则输出是每隔一个 Aarhus 字母。
readWord 函数也用于从文本文件中读取单个单词进行检查,这就是我没有使用 getline 的原因。还有其他函数可以将缓冲区连同终端空字符一起刷新为字符串并显示。这只是处理一次从文件中获取一个单词的问题。
【问题讨论】:
-
当你执行 while 语句时你正在读取一个字符,当你分配给 buffer[i] 时你正在读取另一个字符。您也没有在任何地方增加 i...