如何用C中的字符填充二维数组?
代码的要点是创建由用户设置的二维尺寸数组。提示输入宽度和高度后,用户必须在2D数组中的每个位置输入如何用C中的字符填充二维数组?,c,arrays,C,Arrays,代码的要点是创建由用户设置的二维尺寸数组。提示输入宽度和高度后,用户必须在2D数组中的每个位置输入char值。当使用int:(int-mat,int-value)实现时,算法运行良好,但是当尝试使用char(char-mat,char-value)实现时,输出与整数版本不一致。唯一的更改是数组的类型和值,以及将scanf/printf(“%d”)设置为scanf/printf(“%c”)。您可以用chars实现这个2D数组吗 #include <stdio.h> int main(
char
值。当使用int
:(int-mat,int-value)实现时,算法运行良好,但是当尝试使用char(char-mat,char-value)实现时,输出与整数版本不一致。唯一的更改是数组的类型和值,以及将scanf/printf(“%d”)
设置为scanf/printf(“%c”)
。您可以用chars实现这个2D数组吗
#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;
}
#包括
int main(){
整数宽度;
内部高度;
printf(“输入2到20之间的列和行值。\n”);
扫描频率(“%d%d”、&宽度和高度);
printf(“您键入的数字是%d%d\n”,宽度、高度);
炭垫[高度][宽度];
int i;
int j;
字符值;
对于(i=0;i
…输出与整数版本不一致
当然不是。它将是字符而不是整数。否则,它将是相同的
而且,你的输入循环真的很奇怪
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
你似乎试图提示输入每个字符,但你只读取了一个字符。我无法想象你希望任何人如何使用它。如果我想输入“a”,我会输入“a”,但在按下enter键之前什么都不会发生。但这将输入两个字符。因此,这段代码似乎设计得有点糟糕
作为快速解决方案,您可以尝试以下方法:
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
printf("Enter your value.\n");
do scanf("%c", &value);
while (value == '\n' || value == '\r');
mat[i][j] = value;
}
}
for(i=0;i
按以下方式更改此语句
scanf(" %c", &value);
^^^^
也可以将此语句更改为
printf("Enter your character value: ");
当然,如果需要的话,
do
/循环是假的。你可以先用scanf(“%*[\r\n]”忽略挂起的换行符然后用value='';scanf(“%c”,&value);