c - 从输入中获取用户的选择

标签 c input

我的任务是使用两种方法获取用户的输入。

我想给用户选择。如果他想要方法 1,请按 1。否则,请按 0。

然后用户开始输入一个我必须打印的字符串。我打印输入,直到用户按下 Enter 按钮或 EOF。

问题是,当用户给我他的“选择”时,他按下回车按钮('\n'),这样我的程序就存在了。

我该如何解决这个问题?

printf("please enter your chioce: for malloc press 1. for linked list press 0\n");
    scanf("%d",&n);

    if (n)
    printWithMalloc();

    else{
.....

为了清楚起见,我的 if 输入:

printf("please enter a string. the string will be printed right away.\n");
    while ((c=getchar())!=EOF && c!='\n')

最佳答案

忘记scanf()

<小时/>

如果我理解你的问题是正确的,你想在用户输入空行时退出。如果是这样,只需读取整行,并检查它是否为空(除了尾随换行符之外)字符):

while (1) {
    char buf[LINE_MAX];
    if (!fgets(buf, sizeof buf, stdin))
        break; // EOF

    if (buf[0] == '\n')
        break; // empty line

    // if we got here, the user entered something; try converting it to an int
    int choice = strtol(buf, NULL, 0);
    // and do stuff with it
}

关于c - 从输入中获取用户的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20723754/

相关文章:

c - freopen 标准输出和控制台

java - 如何用 Java 或 C 监视/采样输出音频?

python - 使用用户输入命名列表

c - 输入空格

javascript - 使用 jQuery 设置复选框

javascript - Angular :@input boolean 和 ngIf 不匹配

c - 警告 : pointer/integer type mismatch in conditional expression

c - 如何使用 time.h 将旧年份转换为现在的秒数(我开始得到负数)

c - GDB C 如何打印 VLA 条目(动态数组)

arrays - 在python中将stdin行转换为 "float/int"数组的更简单方法