代码的要点是创建一个由用户设置的二维数组。在提示输入宽度和高度后,用户必须在二维数组的每个位置输入char
值。当使用int
实现时:(int mat,int value),算法运行良好,但是当尝试用char(char mat,char value)实现时,输出与整数版本不一致。唯一的变化是数组和值的类型,以及将scanf/printf("%d")
设置为scanf/printf("%c)
。有什么方法可以用char实现这个二维数组吗?
#include <stdio.h>
int main() {
int width;
int height;
printf("Enter col and row values between 2 and 20.\n");
scanf("%d %d", &width, &height);
printf("The numbers you typed was %d %d\n", width, height);
char mat[height][width];
int i;
int j;
char value;
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
printf("Enter your value.\n");
scanf("%c", &value);
mat[i][j] = value;
}
}
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
printf("%c", mat[i][j]);
}
printf("\n");
}
return 0;
}
3条答案
按热度按时间yduiuuwa1#
...输出与整数版本不一致
当然不是。它将是字符而不是整数。否则,它将是相同的。
还有,你的输入循环真的很奇怪。
看起来你试图提示输入每个字符,但是你只读了一个字符。我无法想象你希望别人怎么使用它。如果我想输入一个“A”,我就输入“A”,但是什么都不会发生,直到我按回车键。但是这样会输入两个字符。所以这段代码看起来设计得有点糟糕。
作为一种快速解决方法,您可以尝试以下操作:
b4lqfgs42#
按以下方式更改此语句
同时将此语句更改为
这将更清楚程序期望输入什么。
yc0p9oo03#
我认为这个填充一维数组的例子,可以在某种程度上解决同时阅读carachter和Enter字符的问题。但这只是一个技巧。