c语言中scanf 和getchar区别 c语言中,scanf和getchar有何区别?
C\u8bed\u8a00\u91cc\u5b57\u7b26\u8f93\u5165\u4f7f\u7528scanf\u548cgetchar\u6709\u4ec0\u4e48\u533a\u522b?\u5b57\u7b26\u4e32\u5462?scanf()\u662fC\u8bed\u8a00\u4e2d\u7684\u4e00\u4e2a\u901a\u7528\u8f93\u5165\u51fd\u6570\uff0c\u6839\u636e\u63a7\u5236\u7b26\uff0c\u53ef\u4ee5\u8f93\u5165\u6574\u6570\u3001\u6d6e\u70b9\u6570\u3001\u5b57\u7b26\u4e32\u7b49\uff0c\u8fd8\u53ef\u4ee5\u540c\u65f6\u8f93\u5165\u591a\u4e2a\u53d8\u91cf\u3002
\u800cgetchar\u662f\u4e00\u4e2a\u8f93\u5165\u51fd\u6570\u3002\u5b83\u4ece\u6807\u51c6\u8f93\u5165\u91cc\u8bfb\u53d6\u4e00\u4e2a\u5b57\u7b26\uff0c\u5373ASCII\u5417\uff0c\u800c\u4e0d\u80fd\u8bfb\u53d6\u5176\u4ed6\u7c7b\u578b\u7684\u6570\u636e
getchar\u53ea\u80fd\u63a5\u6536\u4e00\u4e2a\u5b57\u7b26\uff0c\u8be5\u5b57\u7b26\u53ef\u8d4b\u7ed9\u5b57\u7b26\u53d8\u91cf\u3001\u6574\u578b\u53d8\u91cf\u6216\u4f5c\u4e3a\u8868\u8fbe\u5f0f\u7684\u4e00\u90e8\u5206\u3002
scanf\u53ef\u4ee5\u8f93\u5165\u591a\u4e2a\u5b57\u7b26\u548c\u591a\u79cd\u4e0d\u540c\u7c7b\u578b\u53d8\u91cf\u7684\u503c\uff0c\u4f46\u662f\u5b83\u4e0d\u80fd\u8f93\u5165\u7a7a\u683c\u3001\u56de\u8f66\u548c\u8df3\u683c\u952e,getchar\u53ef\u4ee5
sanf和getchar的区别如下:
使用scanf("%s",&s);函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理.
getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).
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这样的话,那你要算上空格键的数。
首先,不知道你用的是什么环境,环境变量怎么设置的,不过,你这个ch=getchar()语句有错误,你应该执行不了吧,scanf中的空格不表示结束,除非你重新定义过此函数,输入1234567890结果是一样的1234567890但是带空格只能输出0 1 2 3 4 5因为你的ch[i]只能存放10个字符,后面的那些没有存进数组。
扩展阅读:scanf gets getchar ... c语言中 s ... scanf 中文翻译 ... c语言scanf后面接gets ... printf scanf ... c语言中scanf是什么 ... 5个例子搞懂scanf ... c语言scanf用法 s ... scanf s 用cout ...