在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不是关键词么?的主要内容,如果未能解决你的问题,请参考以下文章

为啥不能用scanf读入一个含有空格的字符串

c语言中多个scanf怎么输入

C语言问题:标识符为啥不能使用关键字?

C语言scanf为啥有时候要输入两次(解析)

这个C语言小程序在每输入三个数后会不会自动换行,我感觉没问题,为啥运行时不自动换行

在vs里写c语言,为啥会出现这样的错误呢?