scanf输入与getchar的比较

使用scanf输入时应注意的问题

1. scanf("%c%c%c",&c1,&c2,&c3);   在执行此函数时应该连续输入三个字符,中间不要有空格。如果有空格,就不对了,      如:a b c 第1个字符‘a’送给c1,第2个字符是空格符‘ ‘,送给c2,第3个字符‘b‘送给c3

提示:输入数值时,在两个数值之间需要插入空格(或其他分隔符),以使系统能区分两个数值

在连续输入字符时。在两个字符之间不要插入空格或其他分隔符(除非在scanf函数中的格式字符串中有普通字符,这时在输入数据时要在原位置插入这些字符),系统能区分两个字符

2. 在输入数值数据时,如输入空格、回车、Tab键或遇非法字符(不属于数值的字符),认为该数据结束。如:

scanf("%d%c%f",&a,&b,&c);

若输入1234e123o.26

第一个数据对应%d格式,在输入1234之后遇到字符‘e‘,因此系统认为数值12345后没有数据了,第1个数据应到此结束,则把1234送给a,把‘e‘送给b。如果由于疏忽把1230.26错打成123o.26,由于123后面出现字母o,就认为数值数据到此结束,将123送给变量c,后面的几个字符没有被读入。

3.scanf("%[^\n]",&a);

表示读入一行字符串。
^表示"非",[^\n]表示读入换行字符就结束读入。

4. *在scanf中的用法和scanf的返回值的用法两点。

https://www.dotcpp.com/wp/786.html

使用getchar输入单个字符,而非一个字符串。

getchar函数,是C语言标准库中的函数,在头文件stdio中,可以接受用户输入的一个字符,回车结束,明文显示。声明和示例如下:

注意:第一行是我输入的,第二行是printf输出的!

原文地址:https://www.cnblogs.com/spore/p/10988768.html

时间: 2024-11-02 12:46:31

scanf输入与getchar的比较的相关文章

哦这。。!C语言scanf输入的坑爹之处

一. 今天闲来无事,跑去A题,本想3sA了poj1004,结果搞了10分钟,最令人困惑的问题就是为什么定义了double类型的变量,但是用scanf输入的时候标识符用%f的话,输入并不能完成,也就是说输入不会起作用,后来查找资料,才知道,原来用double 输入的时候标识符是%lf,注意这里是L和F,不是1和f 经过修正终于搞定,分分钟A了这个水题. 然而后来再想 A 就A不过去了,,,,并不知道为什么.好吧,忽略这种细节,没什么难度的水题没必要太在意,代码如下: 1 #include<cstd

scanf输入

1.scanf其实是一个函数,其有着返回值,就是他的输入值. 例: n=scanf("%d %d",&a,&b); n=2; 2.如果把scanf放在循环里,想要结束循环,输入ctrlZ.       3.scanf输入按enter时自动换行,无需编写printf(出过错) 原文地址:https://www.cnblogs.com/zjqb/p/8447255.html

[转]C语言 scanf() 输入字符屏蔽回车符的四种解决方法

使用'\n'屏蔽回车符号 scanf("%d\n",&n): scanf("%c",&c); 添加空格,屏蔽回车字符 scanf("%d",&n); scanf(" %c",&c); 使用getchar()来读取一次回车符号 scanf("%d",&n); getchar(); scanf("%c",&c); 使用fflush()清空输入流

C语言编程之--scanf()函数与getchar()函数搭配来理解C程序的输入缓存(buffer)

博主最近在学习C语言编程,在书中的代码示例中出现了下面的代码段: #include<stdio.h> int main() { char a[5]; int i; printf("请依次输入值:\n"); for(i=0;i<5;i++) { scanf("%c",&a[i]); getchar(); //为什么要加一个getchar()? } printf("\n"); for(i=0;i<5;i++) { pr

同时使用scanf()函数和getchar()函数的陷阱

函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息. 函数名:getchar 功能:从计算机终端(一般是键盘)输入一个字符. 同时使用者两个函数时,会有陷阱,代码如下: #include <stdio.h> int main(void) { char buff[20],ch; int num,i=0; printf(&quo

POJ1251 Jungle Roads Kruskal+scanf输入小技巧

Jungle Roads The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages some years ago. But the jungle overtakes roads relentlessly, so the large road network is too expens

scanf 输入

1.scanf一次性 输入多个数据时,并且以某些符号隔开 scanf("%d, %d", &num1, &num2);          //此时输入两个数据时中间必须以 , 作为分隔符,即分隔符必须对应 2.如果 scanf 参数中以空格隔开,实际输入可以以空格.tab.回车作为分隔符 scanf("%d  %d", &num1, &num2); scanf("%d\n", &num1);    // s

C语言scanf输入格式 printf输出格式

对于刚接触C语言的同学来说 可能会遇到这个问题 因为博主也是个菜鸟经常因为搞不清楚单精度双精度还有输入输出格式的问题 就这个问题也百度的很多次 所以在这里总结一下分享给大家 printf输出格式 1.转换说明符       %a(%A)     浮点数.十六进制数字和p-(P-)记数法(C99)       %c             字符       %d             有符号十进制整数       %f              浮点数(包括float和doulbe)      

scanf 输入加逗号(或者不加逗号)出现的异常及解决方案

我们在写 C 语言代码通常 scanf 的格式控制部分都有两种习惯,加逗号与不加逗号,而这两种情况都会因为我们的不同输入习惯产生一定的问题,这里给出另一种方法. 1.不加逗号 1 #include<stdio.h> 2 3 #define SWAP(a, b) a=a^b;b=a^b;a=a^b; 4 5 void main() 6 { 7 int num1, num2; 8 printf("Input num1 and num2:"); 9 scanf("%d%