Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用C中的字符填充二维数组?_C_Arrays - Fatal编程技术网

如何用C中的字符填充二维数组?

如何用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(

代码的要点是创建由用户设置的二维尺寸数组。提示输入宽度和高度后,用户必须在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() {

    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);