我试图读取一个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);
}