我在linux上遇到了scanf和循环的问题。
#include <stdio.h> #include <stdlib.h> #include <stdio_ext.h> int main(int argc,char ** argv){ int i = 0; char s[255]; char c; while(i<10){ printf("Here : "); scanf(" %s",s); printf("%sn",s); i++; while((c = getchar()) != 'n' && c != EOF); } return EXIT_SUCCESS; }
如果在Linux的shell中,如果我这样执行我的文件:
echo "lol" | ./testWhileScanf
那么结果将是这样的:
在这里:哈哈
在win32中打开,处理和渲染SVG文件(C ++)
我能始终确定通过findwindowexfind的控件的层级顺序吗?
“SendMessage”为C ++中的3个不同的进程
添加条目DNS客户端parsing器caching,而不使用主机文件
ManagementScope可以用来从Windows发送wbem查询到Linux / MacOS客户端吗? C#
在这里:哈哈
在这里:哈哈
在这里:哈哈
在这里:哈哈
在这里:哈哈
在这里:哈哈
在这里:哈哈
在这里:哈哈
在这里:哈哈
我不知道为什么这是结果,我的代码行是刷新stdin,没有这种问题。
寻求解决scheme我尝试: __fpurge , fpurge , fflush但没有工作。
我只想得到:
这里 ? : 大声笑
这里 ? :
并等待input。 当然,我错过了这里的东西..但我不能确定什么= /
C ++将原始audio从22050提高到48000 Hz
/lib/x86_64-linux-gnu/libthread_db.so.1该文件不存在
GCC没有链接库。 它编译,但由此产生的库缺less必要的参考资料
在同一行中打印,并在C中暂停
你打电话时
scanf(" %s",s);
这是第一次,它设置为lol ,并返回1 。 当你第二次调用它时,没有进一步的输入,所以scanf在没有设置变量的情况下返回零。 但是,您的代码会忽略scanf的返回值,并且无论如何都会打印出来。
if (scanf(" %254s",s) != 1) break;
注意格式字符串中的大小限制器,它将防止scanf导致缓冲区溢出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。