我写了一个测试程序,它应该接受一个3x3的字符矩阵并输出输入的矩阵。但是,为了让程序生成相应的矩阵,我必须输入4行。我已经在scanf函数上查找了问题,但我尝试的解决方案似乎没有一个work...Could你能帮我解决这个问题吗?
我的代码:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char a[3][3];
int i,j;
for(i=0;i<3;++i)
{
for(j=0;j<3;++j)
{
scanf("%c",&a[i][j]);
}
scanf("\n");
}
for(i=0;i<3;++i)
{
for(j=0;j<3;++j)
{
printf("%c",a[i][j]);
}
printf("\n");
}
system("PAUSE");
return(0); }发布于 2012-11-11 20:46:23
scanf("%c",...)获取空格和\n。你可以用很多方法来解决这个问题:
如果你读起来像a b c
for(i=0;i<3;++i)
{
for(j=0;j<3;++j)
{
scanf("%c",&a[i][j]);
cin.get(); //Get the spaces after each character and the \n at the end of each line
}
}或者您可以简单地使用cin (使用scanf读取字符/字符串输入总是一个问题)
for(i=0;i<3;++i)
{
for(j=0;j<3;++j)
{
cin >> a[i][j];
}
}如果你像abc一样阅读,你只需要用你的scanf("\n")代替cin.get()
发布于 2012-11-11 22:15:44
@João Menighin的答案肯定有效。如果你想避免c++,这是可行的:
for(i=0;i<3;++i)
{
for(j=0;j<3;++j)
{
scanf(" %c",&a[i][j]);
}
}尽管它会忽略所有空格:abc和a b c都会被解释为等价的。
发布于 2013-02-19 10:24:43
尝试在scanf中添加一个空格“
scanf(" %c",&a[i][j]);我在二维矩阵中也遇到了同样的问题,这对我来说很有效。我不知道为什么!我刚刚花了1个小时在我的笔记本前尝试不同的东西…
https://stackoverflow.com/questions/13331120
复制相似问题