int ch;
do
{
ch = getchar();
printf("ch = %d\n",ch);
}while(ch != '\n' && ch != EOF);
在这种情况下,输入1234的输出是
ch = 49
ch = 50
ch = 51
ch = 52
ch = 10
但是就像这样给予它
char chs[100] = {0};
unsigned int u = 0;
int sign = 1,k=0;
if(scanf("%[- 0-9]",&chs[0])== 1)
{
int ch;
do
{
ch = getchar();
printf("ch = %d\n",ch);
}while(ch != '\n' && ch != EOF);
在这种情况下,输入= 1234的输出是
ch =10
为什么会发生这种情况? 有人可以解释一下......为什么输出不像以前一样?
scanf如何在这里工作?
答案 0 :(得分:6)
对scanf
的调用从流中读取数据。当您稍后尝试使用getchar
再次从流中读取时,scanf
读取的字符已被使用且不会再次读取。
另外,请参阅scanf
的文档,了解格式字符串的有效值。