相比较Java的键盘录入,C语言的scanf有一些需要注意的细节,为了避免使用的时候踩坑,scanf怎么输入数值,我们就来了解一下scanf。,
scanf()是C语言的格式输入函数,和printf函数一样被
1 int a;2 scanf(&34;,&a);//程序执行到这里时,就等待用户输入;它接收的是变量的地址
正确答案是:C 它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。按格式的要求,每个变量前都要有地址符,故s1和s2前面都需要用到地址符&。A、B、D选项中都不能满足s1、s2前面都有&的要求,。
/所以一般情况下除了指针型变量和数组名要给变量加上取地址符&
注意事项一:内存溢出(输入的类型要和占位符一致就不拿出来单独啰嗦了)
1 char s[1];//长度为1,只能存一个元素2 printf(&34;); 3 //因为这里使用的是数组名,数组名就是地址,所以不用加取地址符& 4 scanf(&34;,s); //输入abcd 5 printf(&34;,s);
诶,照结果来看abcd都被存进字符数组s里面了,但是我们知道,s是不是只能存一个字节的数据,所以bcd已经非法占用内存了。虽然有时候程序看起来会正常执行,但是它会留下一些隐患。使用的时候需要注意这一点。
注意事项二:录入多个变量
/如果占位符用逗号分隔,录入的时候用逗号分隔4 scanf(&34;,&m,&n);// scanf(&34;,&m,&n);5 printf(&34;,m,n);
scanf函数的作用是按照变量在内存的地址将变量值存进去。例如:include <stdio.h>int main(void){ int a,b,c;printf("Give me the value of a,b,c seperated with whitespaces:\n");scanf("%d%d%d",&a,&b,&c。
如果我将第四行代码换成注释的代码就需要这样用:
输入的时候用空格分隔会发生什么呢
可以看到,n的值没能录入。建议使用默认的分隔符,占位符中不要自己加东西。
注意事项三:char类型
1 char name[10]=&34;; 2 int age=0; 3 double sal=0.0; 4 char gender=&39;;//m代表man w代表woman 5 6 printf(&34;); 7 scanf(&34;,name);//数组名,不用加& 8 9 printf(&34;);10 scanf(&34;,&age);11 12 printf(&34;);13 scanf(&34;,&sal);14 15 printf(&34;);16 //scanf中char类型会出现接收上面的回车字符,一个字节被占了,所以获取不到录入的数据 17 scanf(&34;,&gender); 18 //所以再接收一次 19 scanf(&34;,&gender); 20 21 printf(&34;,name,age,sal,gender);
scanf()是C语言中的一个输入函数。scanf函数的用法与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#。
先看一下去掉19行代码会发生什么:
乱吧,性别没法输入吧;加上19行之后,也就是再获取一次字符之后:
\x0d\x0a 3、在用"%c"输入时,空格和“转义字符”均作为有效字符。\x0d\x0a 问题一:scanf()函数不能正确接受有空格的字符串?如: I love you!\x0d\x0a #include \x0d\x0a int main()\x0d\x0a {\x0d\x0a。