简单的循环无限运行

时间:2014-04-24 15:57:58

标签: c for-loop

我是C的新手,我需要使用for帮助完成这个简单的练习。我需要从用户那里获得charint值。然后,我必须打印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中形成了一个无限循环。

我需要你的帮助。

由于

1 个答案:

答案 0 :(得分:4)

此处nint,而不是char。因此,您需要使用%d来阅读它。在此处使用%c将导致未定义的行为。根据“C99 - ISO 9899-1999”

  

§7.19.6.2fscanf函数 1

     

[...]如果此对象没有合适的类型,或者无法在对象中表示转换结果,则行为未定义。

更改

scanf(" %c", &n);

scanf(" %d", &n);

查看here了解详情。


<子> 1:scanf函数等效于fscanf,参数stdin插入 在scanf的参数之前。