记录C/C++scanf&cin输入误区

起因是做题的时候发现有些地方不太清楚,总结一下。

scanf如果输入的不是字符类型,他会忽略掉空格和回车,这一点和cin相同。

但是如果输入的是字符类型,他并不会忽略掉任何一个字符。

以下面这份样例举例。

复制代码
$ 9
 @  @@@@@
@@@  @@@ 
 @   @ @ 
@@@  @@@ 
@@@ @@@@@
@@@ @ @ @
@@@ @@@@@
 @  @ @ @
 @  @@@@@

我在输入这个数字9之后,如果通过scanf输入字符,那我第一个拿到的是'\n',第二个是' ',第三个是'@'。

如果我用cin,那第一个拿到的是'@',第二个拿到的也是'@',他不会管你变量是什么类型,只要是空格换行就吞了。

另外如果想舍弃掉回车,用C风格就是getchar(),C++风格是cin.get(),这俩作用一样,读取一个字符。

接着通过scanf正常读取即可。

上面样例的输入代码:

cpp 复制代码
	char zm;
	int r,c;
	scanf("%c",&zm);
	scanf("%d",&r);
	c=r;
	getchar();
	char x;
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			scanf("%c",&x);
			cs[i][j]=x;
			if(cs[i][j]=='@'){
				cc[r-i+1][c-j+1]=zm;
			}else{
				cc[r-i+1][c-j+1]=' ';
			}
		}
		getchar();//换行符 
	}
相关推荐
jieyucx6 分钟前
深入剖析C语言中的指针与数组
java·c语言·算法
阿巴~阿巴~8 分钟前
二分 —— 基本算法刷题路程
数据结构·c++·算法
maomi_952618 分钟前
《线性表、顺序表与链表》教案(C语言版本)
c语言·数据结构·链表
徽京人22 分钟前
第八届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组 购物单
c++·职场和发展·蓝桥杯
蒙奇D索大31 分钟前
【数据结构】邻接矩阵完全指南:原理、实现与稠密图优化技巧
c语言·数据结构·考研·图论·改行学it
半桔36 分钟前
哈希表(开散列)的实现
数据结构·c++·面试·散列表·哈希
兴达易控1 小时前
解锁工业通信:Profibus DP到ModbusTCP网关指南!
开发语言·网络·php
Do vis.5761 小时前
set map 代理模式思维导图
c++
阿巴~阿巴~1 小时前
蓝桥杯 C/C++ 组历届真题合集速刷(二)
c语言·c++·算法·蓝桥杯
初见_Dream1 小时前
Android 文件选择器
android·java·开发语言