2013-01-22 85 views
2

我试图重定向一个文件作为stdin输入(其中一个要求)。我无法弄清楚如何检查下一个输入是否为空或者是否完成。如何检查下一个输入是否为空?

像这样

./a.out program < file.txt 

所以这是我想要做的事。

char string[10]; 

while (the input is NOT empty) 
{ 
    scanf("%s",&string); 
    printf("%s",string); 
} 

给定的文件看起来像这样

abc 
abcd 
abcde 
abcdef 

回答

2

如果你做到以下几点,就只有当scanf不能读别的停止。

while(scanf("%s", string) != EOF){ 
    printf("%s", string); 

} 

顺便说扫描一个字符串,我们不能利用&因为它已经是一个指针。

+0

我编码方式类似于这一点。 scanf的手册页通知:“如果在任何转换(例如文件结尾- 发生)之前发生输入故障,则EOF值为 。” – Heartinpiece

+0

非常感谢,这个伎俩。自从我的学校为了考试而封锁它,并且尚未解除封锁之后,我无法访问我的终端上的手册页。 – blaz1nthunder

2

你可以叫feofstdin

while (!feof(stdin)) { 
    scanf("%s", string); // You do not need & for strings 
    printf("%s",string); 
} 
+0

非常感谢,我尝试了上面这一个。他们两人都工作。 – blaz1nthunder

+0

@ user1993422不客气!如果您的问题得到解决,请考虑接受其中一种解决方案,以表明您并未主动寻找改进的解决方案,并在堆栈溢出时获得新徽章。 – dasblinkenlight