时间:2021-05-02
(一)基本介绍
Scanf是系统自带的函数,声明包含在stdio.h文件中,因此要是有该函数,必须加载#include<stdio.h>头文件。当执行到scanf函数时,程序就暂停等待用户输入,该函数只接受变量的地址,格式为&变量名。是一个阻塞式的函数,2用户输入完毕后,则将值赋值给变量,至此函数调用完毕。敲回车键告知计算机键入完毕。
(二)使用注意
①. 使用scanf函数输入一个字符变量。Char a; scanf(“%c”,&a);
②. 同时输入多个值。Scanf(“%d,%d”,&num1,num2);
③. Scanf(“%d\n”,&a);//在内部不能使用\n转义字符,否则没完没了。
注意:在这里两个占位符之间是,隔开,则要求在输入时也使用逗号隔开如输入1,2。此时为num1=1,num2=2。若内部为“%d#%d”则输入1#2。若内部为“%dy%d”,则输入1y2。如果中间的字符是空格,则在输入时可以用空格隔开,也可以敲tab键或者是回车键作为分隔符隔开,后两者可以看做是由空格组成的。
(三)一次踩坑的碎碎念...
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include<stdio.h> int main() { char ch; printf("选择A或者B(按回车键确认):"); scanf("%c",&ch); while(1) { if(ch == 'B' || ch == 'b') { printf("对不起,您输入的答案错误,请重新输入!\n选择A或者B(按回车键确认):"); //getchar(); scanf("%c",&ch); printf("ch=%c",ch); } else { printf("\n正确\n"); break; } } return 0; }上面代码的得到的结果是:
貌似跟我预想的不一样,我本想如果输入的是'B'或者'b'就继续循环输入,但是结果确实直接做了一次循环就停止了。为什么呢?
原来在循环外的那个scanf做完后按下的回车键进入了缓存,而进入循环执行scanf后(这次输入的也是'b'),缓存的内容应该是buffer[] ={'b','\n'};而执行printf("ch=%c",ch);时取的值就是'\n',所以看上去好像没有执行scanf语句,其他执行了,只是这次打印的字符不是刚刚输入的'b',而是它前一个字符'\n',所以要达到我本来的效果,则需要先将'\n'从缓存中清除掉,调用一次getchar();即可,如上代码也只需将注释的那一句代码解注释即可。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在C语言中是用printf函数进行输出,用scanf函数进行输入的。C++保留了C语言的这一用法。scanf函数一般格式是:scanf(格式控制,输出表列)pr
在C语言中是用printf函数进行输出,用scanf函数进行输入的。C++保留了C语言的这一用法,在此只作很简单的介绍。scanf函数一般格式是:scanf(格
前言大家都知道在C语言中,有三种主要的输入函数:scanf(),fgets()以及gets()。他们的使用方法及注意事项如下:1.scanf()它是一种格式化的
C语言数据输入与输出实例详解1概论C语言提供了跨平台的数据输入输出函数scanf()和printf()函数,它们可以按照指定的格式来解析常见的数据类型,例如整数
C语言中memcpy函数的用法详解memcpy(内存拷贝函数)c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n