gpt4 book ai didi

c - C 中的 Char 矩阵 - 使用 Scanf 或 getchar

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:37 25 4
gpt4 key购买 nike

我在输入矩阵信息时遇到了一些问题

我想构建一个简单的单词搜索游戏。用户将矩阵的维度告诉词搜索并输入字符,我想打印它只是为了查看信息是否一切正常。

这是我的代码:

void main (){
int nl, nc, i,j;

scanf ("%d %d", &nl,&nc); //Input number of lines and collums of the matrix

char matrix [nl] [nc];

for (i=0;i<nl;i++)
for (j=0;j<nc;j++)
scanf("%c",&matrix[i][j]); //Input matrix

printf("This is your matrix:\n");
for (i = 0; i < nl; i++)
for (j = 0; j < nc; j++)
printf("%c", matrix [i][j]);
}

如果我输入类似的内容

2 3
ABC
DEF

输出应该是:

This is your Matrix:
ABC
DEF

但是我打印时的输出是这样的

This is your Matrix:

ABC
D

它首先给出一个“\n”然后打印但不完整。

我做错了什么?请注意,我应该只使用 scanf 和 getchar 等函数来构建矩阵。

最佳答案

OP:“我做错了什么?”
A: scanf("%c", .. 正在读取上一个 scanf("%d%d"... 为避免该空格和其他空格,请使用 "%c" 格式的 ' ' 来使用它们。

1) 检查scanf() 结果。

2) 在"%c"之前使用空格来消耗空格,尤其是上一行的\n

3) 正确使用main()

4) 简单打印字符串时最好使用 fputs() 或 puts()

编辑:满足输入短线的能力

#include<stdio.h>
#include<stdlib.h>

void ConsumeToEOL(void) {
int ch;
do {
ch = getchar();
} while (ch != '\n' && ch != EOF);
}

int main() {
int nl, nc, i, j;
// Space between "%d %d" not really needed
if (scanf("%d%d", &nl, &nc) != 2) {
fputs("Bad number Input\n", stdout);
exit(1);
}
ConsumeToEOL();

char matrix[nl][nc];
for (i = 0; i < nl; i++) {
for (j = 0; j < nc; j++) {
int ch = getchar();
if (ch == '\n' || ch == EOF)
break;
matrix[i][j] = (char) ch;
}
if (j == nc) ConsumeToEOL();
for (; j < nc; j++) {
matrix[i][j] = 0;
}
}
// Better to use fputs() or puts() when simply printing a string
fputs("This is your matrix:\n", stdout);
for (i = 0; i < nl; i++) {
for (j = 0; j < nc; j++) {
if (matrix[i][j]) {
printf("%c", matrix[i][j]);
}
}
// Add EOL
fputs("\n", stdout);
}
return 0;
}

关于c - C 中的 Char 矩阵 - 使用 Scanf 或 getchar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23087070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com