gpt4 book ai didi

c - 使用 Scanf 获取字符和整数

转载 作者:行者123 更新时间:2023-11-30 20:56:13 25 4
gpt4 key购买 nike

在控制台

当用户写“S 4”时,它必须出现 4x4 正方形

当“R 4 6”==> 4x6 矩形

当“T D 4”==>矩形右对齐时

当“T U 4” ===> x 轴反射三角形

我怎样才能用scanf格式做到这一点?形状很简单,但我无法完成 scanf 部分

这正是我想要的: http://i.imgur.com/oGNoKRn.jpg

我的整个代码:实际上在switch部分,TU,TD是不被接受的

int main() {
printf("Enter a valid type\n ");
char shape;
int row,col,i,j;
do{
scanf(" %c %c %c",&shape,&row,&col);
switch(shape){
case 'R':
for(i=0; i<row; i++){
for(j=0; j<col; j++){
printf("*");
}
printf("\n");
}break;
case 'S':
for(i=0; i<row; i++){
for(j=0; j<row; j++){
printf("*");
}
printf("\n");
}break;
case "TU":
for(i=0; i<row; i++){
for(j=0; j<row; j++){
if(i+j==row)
printf("*");
else
printf(" ");
}
printf("\n");
}break;
case "TD":
for(i=0; i<row; i++){
for(j=0; j<row; j++){
if(i+j!=row)
printf("*");
else
printf(" ");
}
printf("\n");
}break;

}
}while(shape!='E');
}

最佳答案

您不能使用一行 scanf 行输入所有命令,因为不同的命令具有不同的格式。执行以下任一操作:

  • 阅读一行文本;尝试多次解析它(我更喜欢这个)
  • 读取第一个字符;根据其值读取命令的其余部分

要实现第一个,您可以使用 scanf 的返回值,正如很多人建议的那样。如果 scanf 成功,它会返回一个已知数字(有关详细信息,请查看文档)。如果失败,您可以使用相同的输入和不同的格式字符串重试。

char command[80]; // let's hope no one tries to input more than 78 characters...
...
fgets(command, sizeof(command), stdin);
if (sscanf(command, " S %d", &size) == 1) // try to read a command starting with "S"
{
// whatever
}
else if (sscanf(command, " R %d %d", &row, &col) == 2) // try to read a command starting with "R"
{
// whatever else
}
else
...

我不确定您是否理解或被允许使用 fgetssscanf,因此您可以使用其他方法:

scanf(" %c", &shape); // read just the shape type
switch (shape)
{
case 'T': // triangle? which one?
scanf(" %c", &dir); // read the direction of the triangle
switch (dir)
{
case 'U':
scanf("%d", &size); // read just the size of the triangle
... // do your stuff
}
case 'S': // whatever
}

代码的结构变得有点困惑,但也许你会更喜欢这个......

关于c - 使用 Scanf 获取字符和整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26763996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com