我是C的新手,我需要使用for
帮助完成这个简单的练习。我需要从用户那里获得char
和int
值。然后,我必须打印char
与之前输入的int
一样多的次数。
这就是我所拥有的:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a;
printf("Enter a character:");
scanf(" %c", &a);
int n;
printf("Enter a number:");
scanf(" %c", &n);
printf("\n");
int x;
for(x=0; x < n; x++){
printf(" %c", a);
}
return 0;
}
我的问题是它在for
中形成了一个无限循环。
我需要你的帮助。
由于
答案 0 :(得分:4)
此处n
是int
,而不是char
。因此,您需要使用%d
来阅读它。在此处使用%c
将导致未定义的行为。根据“C99 - ISO 9899-1999”:
§7.19.6.2
fscanf
函数 1[...]如果此对象没有合适的类型,或者无法在对象中表示转换结果,则行为未定义。
更改
scanf(" %c", &n);
到
scanf(" %d", &n);
查看here了解详情。
<子>
1:scanf
函数等效于fscanf
,参数stdin
插入
在scanf
的参数之前。
子>