【问题标题】:Can't understand function output (C) [duplicate]无法理解函数输出(C)[重复]
【发布时间】:2017-06-11 09:31:16
【问题描述】:

尝试学习 C 我遇到了这个问题:我正在尝试编写一个函数 squared,它应该在屏幕上打印一个填充的正方形,其大小和填充字符由用户选择。所以我写了这个:

#include <stdio.h>

int squared (int side, char fillCharacter);

int main(){
    int side;
    char fillCharacter;

    printf("Enter the side ");
    scanf("%d", &side);

    printf("Enter the character ");
    scanf("%c", &fillCharacter);

    printf("%d%c",squared(side, fillCharacter));
}

int squared (int side, char fillCharacter){
    for (int row=1 ; row <=  side; row++){
        for (int i =1; i <= side; i++){
        printf("%c", fillCharacter);

        }
    puts("");

    }
}

但遗憾的是,这个输出甚至没有扫描字符,只是打印一个空格

Enter the side 2
Enter the character 

我尝试改变一些事情,但我让事情变得更糟,所以如果有人能给我一个提示,我真的会很感激。谢谢。

【问题讨论】:

  • 你的函数没有返回任何东西,你把它的调用放在一个 printf 里面,它需要一个 int 和一个 char。
  • 请试试这个:scanf( " %c", &amp;fillCharacter );(在 %c 前加一个空格)
  • 要输入一个整数,你输入一个值(比如2),然后按回车键。 %c 选择输入键作为字符(它是一个空白字符)。
  • 停止使用scanf()。用户希望他们的输入在点击 时生效,一次一行。这也是终端的实际作用。所以也这样做,并用fgets()getline() 阅读整行(然后你可以sscanf() 那些)。 c-faq.com/stdio/gets_flush1.html
  • @ikkachu 谢谢你的解释,我只是在使用 scanf() 因为它在我正在阅读的书上,以便学习 C;我已经完成了一半,所以也许他们稍后会介绍 fgets() 等。不过谢谢。

标签: c function


【解决方案1】:

链接到this problem。这个答案提供了一个修复,但您可以通过反转对 scanf 的调用来修复它:首先是字符,然后是数字。

【讨论】:

    猜你喜欢
    • 2013-12-07
    • 2019-10-30
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多