首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

Scanf漏行
EN

Stack Overflow用户
提问于 2012-11-11 20:28:36
回答 4查看 607关注 0票数 3

我写了一个测试程序,它应该接受一个3x3的字符矩阵并输出输入的矩阵。但是,为了让程序生成相应的矩阵,我必须输入4行。我已经在scanf函数上查找了问题,但我尝试的解决方案似乎没有一个work...Could你能帮我解决这个问题吗?

我的代码:

代码语言:javascript
运行
复制
#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); }
EN

回答 4

Stack Overflow用户

发布于 2012-11-11 20:46:23

scanf("%c",...)获取空格和\n。你可以用很多方法来解决这个问题:

如果你读起来像a b c

代码语言:javascript
运行
复制
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读取字符/字符串输入总是一个问题)

代码语言:javascript
运行
复制
 for(i=0;i<3;++i)
    {
        for(j=0;j<3;++j)
        {
            cin >> a[i][j];
        }
    }

如果你像abc一样阅读,你只需要用你的scanf("\n")代替cin.get()

票数 0
EN

Stack Overflow用户

发布于 2012-11-11 22:15:44

@João Menighin的答案肯定有效。如果你想避免c++,这是可行的:

代码语言:javascript
运行
复制
for(i=0;i<3;++i)
{
   for(j=0;j<3;++j)
   {
       scanf(" %c",&a[i][j]);
   }
}

尽管它会忽略所有空格:abca b c都会被解释为等价的。

票数 0
EN

Stack Overflow用户

发布于 2013-02-19 10:24:43

尝试在scanf中添加一个空格“

代码语言:javascript
运行
复制
scanf(" %c",&a[i][j]);

我在二维矩阵中也遇到了同样的问题,这对我来说很有效。我不知道为什么!我刚刚花了1个小时在我的笔记本前尝试不同的东西…

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13331120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档