在C语言中scanf能作为用户标示符么?为啥?scanf不是关键词么?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C语言中scanf能作为用户标示符么?为啥?scanf不是关键词么?相关的知识,希望对你有一定的参考价值。
在c语言中scanf可以作为用户自定义的标识(示)符,因为他不是c编译系统已经预定义的、具有特殊用途的保留标识符(即关键字),常见的关键字有:float,auto,break,case,this,try,for,while,int,char,short, unsigned,等等
举个例子:
#include<stdio.h>
int main()
int scanf=12;
printf("%d\\n",scanf);
return 0;
当然如果你记不住关键词的话,在c/c++编译系统里,那些有(蓝)颜色的词就是了,很容易看出来的。
如
但是,如果出现下面这种情况就不行了。
#include<stdio.h>
int main()
int scanf;
scanf("%d",&scanf);
printf("%d\\n",scanf);
return 0;
因为编译系统会认为scanf是个整型数据的变量名,而scanf()是一个函数,所以编译系统会报错'scanf' : not a function。
参考技术A scanf 是系统的库函数,不是关键词。如果系统没有include这个库,那么scanf就可以作为标识符。 参考技术B 貌似不是关键字
c语言将字符输入至数组为啥不执行呢
这种情况通常发生在前面已经有了输入语句,而当前的scanf是在接收字符(即用%c控制输入)时。由于前面的输入语句(不一定是scanf)把最后输入的'\n'遗留在了输入缓冲区,而当前的scanf("%c",...);又会把'\n'当一个字符接收,又由于scanf在%c控制下只接收一个字符,所以就不能接收正式输入的字符了。解决这一问题的最简单办法是在接收字符的scanf的控制符"%c"中的%前加一个空格写成" %c",把前一次输入遗留在输入缓冲区里的所有广义空格(' '、'\t'、'\n'等)都吸收掉。在接收字符的scanf前加getchar()等的办法其实是有漏洞的——当缓冲区里只遗留了一个广义字符时可正常工作,若多于一个则同样出错。 参考技术A 因为在scanf("%d",&a);读取a的值以后,数字被读走了,但是输入的回车符还留在键盘缓冲区中。等到下一次读取字符或字符串时,就会读到这个残留的回车符。解决的办法是读走这个字符或清空键盘缓冲区(使用fflush(stdin);)本回答被提问者采纳以上是关于在C语言中scanf能作为用户标示符么?为啥?scanf不是关键词么?的主要内容,如果未能解决你的问题,请参考以下文章