scanf的正确使用及技巧,c语言scanf的用法

1,c语言scanf的用法在执行第二个scanf的时候其实是接收了一个回车符,打印的时候看不到,你在第二个scanf之前加一个getchar();或者在%c之前加一个空格就好使了 。
2,C语言scanf函数用法scanf("%f%f%f",&a,&b,&c);这样即可将输入的三个数字依次赋值给a,b,c三个变量 , 在输入数字时,用空格或者回车分隔 。【scanf的正确使用及技巧,c语言scanf的用法】
3 , C语言scanf用法scanf是C语言中的一个输入函数,与printf函数一样,都被声明在头文件stdio.h里 , 因此在使用scanf函数时要加上#include。(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include。)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中 。scanf函数返回成功读入的数据项数 , 读入数据时遇到了“文件结束”则返回EOF 。"非要在输入一个数值按回车才算书输入完成"肯定的 。你不手动回车,控制台不知道你输入结束,"\n"肯定不行 。scanf("%f%f%f",&a,&b,&c);这样即可将输入的三个数字依次赋值给a,b,c三个变量 , 在输入数字时 , 用空格或者回车分隔 。
4,关于scanf的用法呵呵 , 其实我不懂,借鉴网友: nestalc 的回答,如有不明之处,可以加他好友询问下!scanf 格式输入函数函数作用:按照变量在内存的地址将变量值存进去 。一般格式:scanf(格式控制,地址表列)其中,格式控制:%d:以带符号的十进制形式输出整数%o:以八进制无符号形式输出整数%x:以十六进制无符号形式输出整数%u:以无符号十进制形式输出整数%c:以字符形式输出,只输出一个字符%s:输出字符串%f:以小数形式输出单,双精度数,隐含输出六位小数%e:以指数形式输出实数%g:选用%f或%e格式中输出宽度较短的一种格式 , 不输出无意义的0在格式控制的字母前面可以用几种常见的格式符的修饰符,作用如下:L:用于长整型整数,可加在格式符d,o,x,u前面M(代表一个正整数):数据最小宽度N(代表一个正整数):对实数,表示输出n位小数;对字符串,表示截取的字符个数地址列表:是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址举例:用scanf函数输入数据 。#include<stdio.h>void main()int a,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“%d,%d,%d\n”,a,b,c);}运行情况:3 4 5 (回车)(输入a,b,c的值)3,4,5(输出a,b,c的值)使用scanf函数时应注意的问题 :(1)scanf函数中的“格式控制”后面应当是变量地址,而不应是变量名 。(2) 如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时在对应位置应输入与这些字符相同的字符 。(3) 在用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入 (4) 在输入数据时 , 遇以下情况时认为该数据结束 。① 遇空格,或按“回车”或“跳格”(Tab)键;② 按指定的宽度结束,如“%3d”,只取3列;③ 遇非法输入 。因为name是数组 , 数组名就是数组首项的地址,count是变量,所以需要用取地址符号我来说一下吧 。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 。5,Scanf函数的使用scanf(格式控制 , 地址表列)int scanf(char *format[,argument,...]);“格式控制”的含义同printf函数;“地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址 。scanf()函数返回成功赋值的数据项数 , 读到文件末尾出错时则返回EOF 。例:使用scanf函数输入数据 。在visual c++ 6.0上的编写方式 。#include<stdio.h>void main()编辑本段格式字符说明%a,%A 读入一个浮点值(仅C99有效)%c 读入一个字符%d 读入十进制整数%i 读入十进制,八进制 , 十六进制整数%o 读入八进制整数%x,%X 读入十六进制整数%s 读入一个字符串,遇空格、制表符或换行符结束 。%f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入 。%p 读入一个指针%u 读入一个无符号十进制整数%n 至此已读入值的等价字符数%[] 扫描字符集合%% 读%符号附加格式说明字符表修饰符说明L/l 长度修饰符 输入"长"数据h 长度修饰符 输入"短"数据W 整型常数 指定输入数据所占宽度* 表示本输入项在读入后不赋值给相应的变量编辑本段scanf的返回值scanf的返回值由后面的参数决定scanf("%d%d", &a, &b);如果a和b都被成功读入,那么scanf的返回值就是2如果只有a被成功读入,返回值为1如果a和b都未被成功读入,返回值为0如果遇到错误或遇到end of file,返回值为EOF 。且返回值为int型.输出函数scanf(格式控制,地址表列)int scanf(char *format[,argument,...]);“格式控制”的含义同printf函数;“地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址 。scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回EOF 。//引用楼上.int x,y,*z=NULL;//下面用的的参数定义scanf("%d",&x);上面%d为格式控制符,&x代表参数x地址,%d代表你想要的参数是什么格式的,这里%d代表十进制,也可以换成其他的,如%f.要想一次取录入多个数,就写成("%d %d %d",&x,y,&z);输入时,"输入一个数字-->回车"算录完一个数字,或者采用格式控制中的 "%d %d %d",用空格分开也可以达到输入目的,如"3 4 5"再键入回车.这样就可以在程序里用x y *z了.scanf("<格式字符串>",<输入列表项>);例如:int nA;scanf("%d",&nA);//意思就是接收界面输入的值,并赋给变量nA

    推荐阅读