scanf后面加什么,C语言中有SCANF后的括号中为什么要加

1,C语言中有SCANF后的括号中为什么要加写进内存的意思scanf是输入函数 , &是地址符,比如&a指的是“a”的地址【scanf后面加什么,C语言中有SCANF后的括号中为什么要加】
2,关于scanf的用法具体如下:1、记住一点 , scanf认为遇到“非法输入”就结束 。2、scanf("%2d%f",&a,&b);中第一个格式控制字符2d的意思是读取2位,作为一个整数输入到给对应的变量a的地址中 。输入876 , 当然只读取前2位87 。这是2的作用,后面输入对于2来说,相当于非法输入 。3、对于%f , 后面输入的是7 543.0,对于浮点型数据是不可能得到空格的,所以遇到空格,认为是非法输入,结束输入 。所以b的值是6,即是6.000000 。4、scanf函数是C语言中的一个输入函数,与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中,其关键字最末一个字母f即为“格式”(format)之意 。我来说一下吧 。scanf("%d",&a);b=a;这样是没有问题的 。b=scanf("%d",&a);看看下面:int scanf( const char *format, ... );【定义格式】scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回eof 。如:scanf("%d,%d", &a, &b);如果a和b都被成功读入 , 那么scanf的返回值就是2如果只有a被成功读入,返回值为1如果a和b都未被成功读入,返回值为0如果遇到错误或遇到end of file,返回值为eof 。
3,c语言中 scanf后面一定要跟个 getchar吃回车吗c语言中在读取键盘数据时 , 一般是带缓存的数据输入,需要按回车键才能完成该“行”数据的输入确认 。而 scanf()函数对这个回车确认符并不进行处理 , 回车符会留在输入缓存区中 。因此,在下一个读“字符”操作函数(getchar, scanf("%c"), gets()等)运行时 , 会读到这个字符 。而在读数值型数据或字符串时,scanf()会从第一个非空白字符(空白字符指:回车 , 空格,TAB键)开始读?。远雎郧懊娴目瞻鬃址?nbsp;, 而遇到空白字符结束该类型数据的输入 。因此,是否一定要在scanf后面跟个 getchar吃回车,要看下一个输入的数据类型是什么,如果是读字符类操作,处理办法有多种方式:一、用fflush(stdin)命令强行刷新输入缓存,丢弃输入缓存中的数据 , 此种方法在windows下使用有效,linux无效 。char ch;fflush(stdin); //不管缓存中有没有数据 , 强行清除ch=getchar(); //这里会等待用户输入一个字符二、前面有读数据操作,现在要执行读字符操作,则可用getchar()来吃掉前面的回车确认int i;char ch;scanf("%d", &i ); //读一个整数,回车确认getchar(); //先吃掉回车确认符,这两句,效果同下一方法的那一句ch=getchar(); //这里会等待用户输入一个字符三、在scanf()书写上做文章,如:读一个数据,以回车确认,则输写成如下格式int i;char ch;scanf("%d%*c", &i ); //%*c表示读一个字符 , 并不赋值给任何变量ch=getchar(); //这里不会读到回车符scanf 函数就是设计用来格式接受键盘输入的,在这个函数中收到回车(不是\n)代表输入结束,函数开始读取数据 。因此并不需要在scanf后面加一个getchat() 。这个没听过 , 不用的,scanf不会接受回车的 。倒是当连续使用几个getchar()时得用fflush(stdin)来清除回车,不信你试试你要是不想回车,就把那个getchar()改为 getche()问题不就解决了吗 。

    推荐阅读