【发布时间】: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", &fillCharacter );(在 %c 前加一个空格) -
要输入一个整数,你输入一个值(比如
2),然后按回车键。%c选择输入键作为字符(它是一个空白字符)。 -
停止使用
scanf()。用户希望他们的输入在点击时生效,一次一行。这也是终端的实际作用。所以也这样做,并用 fgets()或getline()阅读整行(然后你可以sscanf()那些)。 c-faq.com/stdio/gets_flush1.html -
@ikkachu 谢谢你的解释,我只是在使用 scanf() 因为它在我正在阅读的书上,以便学习 C;我已经完成了一半,所以也许他们稍后会介绍 fgets() 等。不过谢谢。