我曾尝试编写一个程序,在循环中读取标准输入中的字符,并将其十进制值每行写入一个标准输出,直到出现EOF
。
我的代码是:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char c;
while (c != 'n' && c != EOF) {
scanf("%c",&c);
printf("%dn",c);
}
}
输入时:
Hi!
Line 2
输出应为:
72
105
33
10
76
105
110
101
32
50
10
如何获得2行作为输入并读取输入作为字符?
如何获得2行作为输入并将"Enter"读取为字符?
好吧,您已经在阅读"Enter"(即n
(。事实上,您也在使用它来终止while
循环。因此,您的程序将在读取第一行后停止。换言之,如果您希望能够读取多行,请取消对while
中n
的检查
还要注意,您的程序在初始化之前使用c
。一些你永远不应该做的事。
BTW:我认为getc
是一个比scanf
更好的函数。
应该这样做:
#include <stdio.h>
int main(void)
{
int c;
while((c = getc(stdin)) != EOF)
{
printf("%dn",c);
}
}