前两个问题输出结果是一样的。当然,ch=getchar();应改为ch[i]=getchar();带空格时,要把控制循环变量改为20;后面的问题应该是scanf(“%s”,str);与gets(str);的区别,此时,scanf中空格、回车、跳格都表示结束,而gets中为一个字符
sanf和getchar的区别如下:
使用scanf("%s",&s);函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理.
getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).
getchar 只能输入是字符,如果你输入的是数值的话,会转换为ASCII码字数输出。 #include
main()
{ char p,i;
for(i=0;i<1;i++)
{
p=getchar();
}
printf("%d",p);
}
如你输入是1 ,则输出的是49 说明它就是ASCII码值。 再说了,你也不能够输入10个数,只能输入9个数。因为getchar()输入Enter键才把数给到了内存。再且,如你输入1234按Enter键的话,那它只把4存到内存里去。它只能存一个字符! 如果你是1 2 3 4这样的话,那你要算上空格键的数。
首先,不知道你用的是什么环境,环境变量怎么设置的,不过,你这个ch=getchar()语句有错误,你应该执行不了吧,scanf中的空格不表示结束,除非你重新定义过此函数,输入1234567890结果是一样的1234567890但是带空格只能输出0 1 2 3 4 5因为你的ch[i]只能存放10个字符,后面的那些没有存进数组。