简体   繁体   English

在C中读取char的二维数组

[英]Reading a 2-dimensional array of char in C

I'm trying to read an M*N array of chars, but I get some weird characters when printing the array. 我正在尝试读取M * N个char数组,但是在打印该数组时出现一些奇怪的字符。 I couldn't figure out what's wrong with the code, what am I missing here? 我无法弄清楚代码出了什么问题,我在这里错过了什么?

int i,j,m,n;
char mat[10][10]
printf("N=");
scanf("%d", &n);
printf("M=");
scanf("%d", &m);
fflush(stdin);
// Read array elements, one by one
for (i=0; i<n; i++)
    for (j=0; j<m; j++)
    {
        printf("mat[%d][%d]=", i+1, j+1);
        scanf("%c", &mat[i][j]);
        fflush(stdin);
    }
// Print matrix
putchar('\n');
for (i=0; i<n; i++);
{
    for (j=0; j<m; j++)
        printf("%2c", mat[i][j]);
    putchar('\n');
}

Example input/output: 输入/输出示例:

N=2
M=2
mat[1][1]=1
mat[1][2]=A
mat[2][1]=2
mat[2][2]=B

 ╥ ⌠
1

char mat[10][10] -> char mat[10][10]; char mat[10][10] -> char mat[10][10];

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

/* delete
for (i=0; i<(n-1); i++)
    for (j=0; j<i+1; j++)
        printf("%c ", mat[i][j]);
*/

your 你的

scanf("%c", &mat[i][j]);

is catching the newlines. 正在捕捉换行符。 add white space at the beginning of the format 在格式的开头添加空格

scanf(" %c", &mat[i][j]);
#include<stdio.h>
#include<string.h>

int main (void)
{
        int i,j,m,n;
        char mat[10][10];
        char ch;
        printf("N=");
        scanf("%d", &n);
        printf("M=");
        scanf("%d", &m);
        // Read array elements, one by one
        for (i=0; i<n; i++)
        {
                for (j=0; j<m; j++)
                {
                        printf("mat[%d][%d]=", i, j);
                        //Flush standard inputs
                        while ((ch = fgetc(stdin)) != EOF && ch != '\n')
                        {
                        }
                        mat[i][j]=getchar();
                        printf("\n");
                }
        }
        printf("printing %d x %d matrix", n , m);
        // Print matrix
        putchar('\n');
        for (i=0; i<n; i++)
        {
                for (j=0; j<m; j++)
                {
                        printf("mat[%d][%d]=", i, j);
                        putchar(mat[i][j]);
                        printf("\n");
                }
        }
return (0);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM