疑惑:getchar();与scanf("\n");的不同结果
查看原帖
疑惑:getchar();与scanf("\n");的不同结果
1105551
Kazuma_124楼主2023/11/14 20:51

代码如下(C语言):

#include <stdio.h>
const char example[10][5][4] = {
	{"XXX","X.X","X.X","X.X","XXX"},
	{"..X","..X","..X","..X","..X"},
	{"XXX","..X","XXX","X..","XXX"},
	{"XXX","..X","XXX","..X","XXX"},
	{"X.X","X.X","XXX","..X","..X"},
	{"XXX","X..","XXX","..X","XXX"},
	{"XXX","X..","XXX","X.X","XXX"},
	{"XXX","..X","..X","..X","..X"},
	{"XXX","X.X","XXX","X.X","XXX"},
	{"XXX","X.X","XXX","..X","XXX"}
};
char num[102];
char out[5][100 * 4];
int main() {
	int n;
	/* 
	scanf("%d", &n);
	getchar();
	这样是WA
	报错是:read (ASCII 0), expected ..
	*/
  
	//换成下面这样就对了
	scanf("%d\n",&n);
	/*
	scanf("%d",&n);
	scanf("\n");
	这样也可以
	*/
  
	gets(num);
	
	for (int i = 0; i<5; i++) {
		for (int j = 0; j < n; j++) {
			out[i][0+j*4] = example[(num[j]) - '0'][i][0];
			out[i][1+j*4] = example[(num[j]) - '0'][i][1];
			out[i][2+j*4] = example[(num[j]) - '0'][i][2];
			if (j != n - 1) {
				out[i][3+j*4] = '.';
			}
		}
	}

	for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 4 * n - 1; j++) {
			printf("%c", out[i][j]);
		}
		printf("\n");
	}
}

  • 这样是WA.
scanf("%d", &n);
getchar();

报错是:read (ASCII 0), expected ..

  • 换成下面这样就对了

scanf("%d\n",&n);

请问为什么会出现这种情况,getchar()和scanf("\n")有什么不同吗?

2023/11/14 20:51
加载中...