为什么在C代码中,A当没有任何更改的字母时,A会得到不同的行为

  • 本文关键字:代码 任何更 c bash gdb gets puts
  • 更新时间 :
  • 英文 :


嘿,大家(和女孩), 我试图并试图理解这一点。我什至已经踏上了GDB,无法理解。因此,我将不得不打扰你们中的一个。我有一个简单的菜单,每个选择都是一个整数,1到12,单调地增加了正常。好吧,我正在尝试对其进行编码,以便如果您选择五(5)个开始,它将从那里开始,并继续通过询问名称,年龄,ECT进行迭代。这是用于作业,所以请不要告诉我如何做。我需要知道的是,对于选择编号1,我正在使用if语句,如果语句以这些行开头...

    printf("Enter Name: n");
    gets(name);
    printf("Name: ");
    puts(name);
    printf("n");

此代码完全按照预期的方式工作。然后,在语句中后来进行了一些相同类型的事情之后,除了在之前使用scanf作为浮子。我有这个代码...

    printf("Enter Major: n");
    gets(major);
    printf("Major: ");
    printf("n");

此代码不会等待任何输入。它只是打印出专业:然后是专业:再次在下一行。我听不懂。我踏上了GDB,踏入时它正常工作。然后,当我运行它时,同样的事情再次发生。有人会让我知道发生了什么事吗?事先感谢您的帮助。我知道这里的绝大多数人都是专业人士,不在乎被如此简单的事情烦恼,但我只是找不到答案,而我的教授已经离开了。多谢你们。-court

也许我应该在有问题的代码之前给大家给代码。就是这样,按预期工作... printf("输入高度: n"); scanf("%f",&高度); printf("高度:%f2.1。",高度);所涉及的变量被称为... char名称[25],少校[25];和浮动高度。再次感谢。

除了在

之前使用scanf将scanf用于块中的浮子

是您问题的关键。如果您执行scanf("%f", &var),然后输入用线供稿终止的数字,则SCANF将不会读取行供稿。尝试输入" 123ABCD"的浮子,您会看到ABCD会塞入专业。

使用scanf("%f ", &var)跳过您的编号后面的任何潜在的空格(请注意格式字符串中的空白)。

此外,您不应该使用get,因为这可能会导致缓冲区溢出,但是如果您刚刚开始学习,这可能不是您现在的主要问题。

相关内容

  • 没有找到相关文章

最新更新