c - C 中的多个输入

标签 c

刚刚开始在我的 CS 221 类(class)中学习 C/C++。

这是我的代码的开头:

int main()
{
    int id;
    char name[100];
    double wages;

    printf("Enter employee's id: ");
    scanf("%4i", id);
    printf("Enter employee's full name: ");
    scanf("%99[^\n]",name);
    printf("Enter gross salary for %s :",name);

    return 0;
}

我在 C 语言中的字符数组、标准输入和缓冲区方面遇到了麻烦。为什么上面的代码跳过用户输入名称?我需要在那里冲洗吗?也无法真正让它发挥作用。

最佳答案

不确定为什么使用

scanf("%4i", id);

但是尝试一下:

scanf("%d", &id );

这修复了 %4i 格式的问题,并将其替换为“十进制整数”格式的 %d

这也解决了 , id); 的问题,因为这样写,将不允许存储 id,并且肯定会崩溃。

如果您输入的数字因太大而崩溃,可能会检查您的数据类型 int 的边界,这将是特定于平台的。

同时更改:

scanf("%99[^\n]",name);

至:

scanf("%s\n",name);

这将获取用户通过 scanf 输入的数据,并将其解释为“字符串”,并将其正确放置在 name 中。

关于c - C 中的多个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46652632/

相关文章:

c++ - 使用指向指针的指针在 C 中处理结构数组

在 Linux 中更改进程名称

mysql - C MySQL 错误 "fatal error LNK1107: invalid or corrupt file: cannot read at 0x368"

c - 需要从C中的字符串中删除字符

c - 如何更改此队列顺序?

c++ - 链接静态库时内联函数的多重定义

c - 在 Linux 上测量增量时间时出现奇怪的结果

c - 结构 : what should go a header and what should go in the source?

c++ - 为什么字符串常量存储在 dll 的 .text 部分中?

css - 如何使用 CSS 设置 GtkLabel 的样式?