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

0s0u357o  于 2022-12-11  发布在  其他
关注(0)|答案(3)|浏览(204)

代码的要点是创建一个由用户设置的二维数组。在提示输入宽度和高度后,用户必须在二维数组的每个位置输入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;
}
yduiuuwa

yduiuuwa1#

...输出与整数版本不一致
当然不是。它将是字符而不是整数。否则,它将是相同的。
还有,你的输入循环真的很奇怪。

for (i = 0; i < height; i++) {
    for (j = 0; j < width; j++) {
        printf("Enter your value.\n");
        scanf("%c", &value);
        mat[i][j] = value;
    }
}

看起来你试图提示输入每个字符,但是你只读了一个字符。我无法想象你希望别人怎么使用它。如果我想输入一个“A”,我就输入“A”,但是什么都不会发生,直到我按回车键。但是这样会输入两个字符。所以这段代码看起来设计得有点糟糕。
作为一种快速解决方法,您可以尝试以下操作:

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;
    }
}
b4lqfgs4

b4lqfgs42#

按以下方式更改此语句

scanf(" %c", &value);
      ^^^^

同时将此语句更改为

printf("Enter your character value: ");

这将更清楚程序期望输入什么。

yc0p9oo0

yc0p9oo03#

#include<stdio.h>

int main(){

int n,i=0,h=0,ch_ASCII_COD;
char cuv[n];

printf("\n\n word lenght%d:\n",n);

for(i=0;i<n;i++)

{

scanf("%c",&ch_ASCII_COD);

if(ch_ASCII_COD=='\n')

    {
     --i;
     continue;
    }
else

    {

     cuv[i]=ch_ASCII_COD;
    }

}

return 0;
}

我认为这个填充一维数组的例子,可以在某种程度上解决同时阅读carachter和Enter字符的问题。但这只是一个技巧。

相关问题