-1

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

3 回答 3

3

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]);
*/
于 2013-04-21T14:42:40.210 回答
2

您的

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

正在赶上换行符。在格式的开头添加空格

scanf(" %c", &mat[i][j]);
于 2013-04-21T14:36:39.563 回答
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);
}
于 2014-07-10T11:31:17.250 回答