首页 文章

使用scanf的输入读取挂起

提问于
浏览
0

我在C编程,当我在cmd终端中运行程序时,我遇到了问题 . 这是我使用的代码:

#include <stdio.h>

int main() {

    int num;

    printf("enter a number: ");
    scanf("%i\n", &num);

    for(int n = 1; n < num + 1; n++){
        printf("%i\n", n);
    }


    return 0;
}

一般来说,一切都像它应该的那样,只需要一件事 . 当我输入一个数字时,没有任何反应 . 没有输出,直到我写任何东西并按Enter键,然后才会出现数字 .

这是它的样子截图 . 这里输入数字(并按回车)但没有任何反应:http://prntscr.com/deum9a

这就是我输入的东西之后的样子,并且所有数字都弹出:http://prntscr.com/deumyn

如果有人知道如何解决这个问题,请告诉我(:

1 回答

  • 4

    scanf() 删除 \n

    scanf("%i", &num);
    

    当格式字符串中有空格字符时, scanf() 将忽略您输入的任意数量的空格,因此您执行的ENTER不会再次输入非空格字符以完成 scanf() 调用 .

    通常, scanf() 被认为对输入读数不利 . 因此,考虑使用 fgets() 并使用 sscanf() 解析输入 .

    见:Why does everyone say not to use scanf? What should I use instead?

相关问题