c语言中scanf 和getchar区别

在两个循环语句
for(i=0;i<10;i++)
scanf("%c",&ch[i]);

for(i=0;i<10;i++)
ch=getchar();
中输入同一个字符串
1234567890
输出的ch[0]~ch[9];结果一样吗
如果输入的是带空格的如
1 2 3 4 5 6 7 8 9 0
结果又是什么养的
(scanf和getchar的内部运行过程是什么样的有什么区别,比如scanf中的空格表示一个字符串输入结束等等)
以上四个问题求解释

前两个问题输出结果是一样的。当然,ch=getchar();应改为ch[i]=getchar();带空格时,要把控制循环变量改为20;后面的问题应该是scanf(“%s”,str);与gets(str);的区别,此时,scanf中空格、回车、跳格都表示结束,而gets中为一个字符
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-03
  sanf和getchar的区别如下:
  使用scanf("%s",&s);函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理.
  getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).
第2个回答  2012-05-18
getchar 只能输入是字符,如果你输入的是数值的话,会转换为ASCII码字数输出。 #include<stdio.h>

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这样的话,那你要算上空格键的数。
第3个回答  2012-05-18
首先,不知道你用的是什么环境,环境变量怎么设置的,不过,你这个ch=getchar()语句有错误,你应该执行不了吧,scanf中的空格不表示结束,除非你重新定义过此函数,输入1234567890结果是一样的1234567890但是带空格只能输出0 1 2 3 4 5因为你的ch[i]只能存放10个字符,后面的那些没有存进数组。
相似回答