#include<stdio.h>
void chline(char, int, int);
int main(void)
{
int rows, column;
char ch;
while (scanf("%c %d %d",&ch,&rows,&column) != 'q')
{
if (ch == '\n')
continue;
chline(ch, rows, column);
}
return 0;
}
void chline(char ch1, int a, int b)
{
int rows, column;
for (rows = 0; rows< a; rows++)
{
for (column= 0; column < b; column++)
putchar(ch1);
printf("\n");
}
}
输入”! 2 3 ”。打印正确,输入” q q q ”为什么不退出呢。好奇怪的代码,我咋打出来的。我也迷糊,求指教~~~
注意看,你输入的后面两个参数是int类型的,当你输入char字符类型时,就会发生类型错误,然后报错。
你应该写一个输入退出的判定。
scanf的返回值是正确接收值的个数或者-1(EOF)
scanf("%c %d %d",&ch,&rows,&column)这条语句最大返回3,比如“! 1 2”,就是返回3,而"q q q",返回的是1,只有第一个q是正确接收的。
而q的ascii码是113,所以程序会一直在while里。
while (scanf("%c %d %d",&ch,&rows,&column) != 'q'),循环判定条件不明确,同时输入三个,无法判断通过执行对哪一个的判断来结束循环