【发布时间】:2014-06-19 06:00:12
【问题描述】:
我已经阅读了许多问题、博客和书籍,但我想我只是无法正确地关联事物。 scanf 扫描后做什么?它读取除空格、制表符和换行符之外的所有内容,但它对换行符有什么作用? 扫描输入后,我无法以任何方式删除换行符。 例如,将其视为输入:-
5
Abcdefgh
现在,我已将 5 扫描为整数,
scanf("%d", &i);
但是如何删除 '\n' 以便一次读取一个字符前面的所有内容?我想使用:-
while((c=getchar())!='\n'){//Do something}
'\n' 应该是字符串之后的那个,但是 getchar() 得到 5 之后的那个,并且循环甚至在运行一次之前就终止了。我想我只是错过了一个小技巧。
scanf("%d", &i);
while((c=getchar())!='\n'){
//Do something with the character
}
输入文件:-
5
ABCDEF
期望 while 循环运行,而它不运行。因为它在 5 之后捕获 '\n'。我尝试在 scanf() 和 while() 之间添加 getchar(),但随后程序卡住并且什么也不做。
【问题讨论】: