我正在尝试读取一个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
答案 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);
}