在C语言中读取一个二维字符数组



我试图读取一个M*N字符数组,但是在打印数组时我得到一些奇怪的字符。我不知道代码出了什么问题,我在这里错过了什么?

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

输入/输出示例:

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

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

正在捕捉换行符。在格式

的开头添加空白
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);
}

相关内容

  • 没有找到相关文章

最新更新