我正在运行一个带有来自文本文件的重定向输入的C程序,如下所示:
./a.out < data.txt
data.txt是一堆单词,每行一个,如下所示:
WORDONE
WORDTWO
WORDTHREE
WORDFOUR
我的程序一次输入一个字。有没有办法检测我什么时候到达最后一个字?有没有办法在使用重定向输入时检查EOF?
以下是我阅读输入的代码:
int main() {
char word[51];
while(getNextWord(word)) {
printf("%s\n", word);
}
}
int getNextWord(char word[51]) {
char input[51];
scanf("%s", input);
if (strcmp(input, word) != 0) {
strcpy(word, input);
return 1;
} else {
return 0;
}
}
答案 0 :(得分:1)
添加支票以确保scanf
成功。
而不仅仅是:
scanf("%s", input);
使用:
// Specify a maximum width to prevent buffer overflow
if ( scanf("%50s", input) == 1 )
{
// Success. Use input.
return 1;
}
else
{
// Most likely EOF has been reached.
// Do the right thing.
return 0;
}