记录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();//换行符 
	}
相关推荐
大卡片37 分钟前
C++的基础知识点
开发语言·c++
米罗篮1 小时前
DSU并查集 & 拓展欧几里得-逆元
c++·经验分享·笔记·算法·青少年编程
谙弆悕博士1 小时前
【附C++源码】从零开始实现 2048 游戏
java·c++·游戏·源码·项目实战·2048
郑同学的笔记1 小时前
【Qt教程29】Qt5和Qt6版本对比
开发语言·qt
基德爆肝c语言1 小时前
Qt 主窗口全家桶:菜单栏、工具栏、状态栏与对话框完全指南
开发语言·qt
XMYX-03 小时前
28 - Go JSON 数据操作
开发语言·golang·json
三*一3 小时前
Mapbox GL JS 自研面要素整形工具开发实录
开发语言·javascript·arcgis·ecmascript
超级小星星3 小时前
C 语言结构体内存对齐深度解析:从概念到实战
c语言·开发语言
狮子座明仔3 小时前
AgentSPEX:当 Agent 框架开始把“控制流“从 Python 里抠出来
开发语言·python
笨笨饿4 小时前
74_SysTick滴答定时器中断
c语言·开发语言·人工智能·单片机·嵌入式硬件·算法·学习方法