在C中读取二维char数组

时间:2013-04-21 14:32:07

标签: c arrays multidimensional-array char

我正在尝试读取一个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

3 个答案:

答案 0 :(得分:3)

char mat[10][10] - &gt; char mat[10][10];

for (i=0; i<n; i++); - &gt; 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]);
*/

答案 1 :(得分:2)

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

正在抓住换行符。在格式开头添加空格

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

答案 2 :(得分:0)

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