【问题标题】:Help with basic reading user input in C帮助阅读 C 中的基本用户输入
【发布时间】:2011-11-24 09:02:03
【问题描述】:

我目前正在学习 C,对于一个项目,我需要读取用户的整数输入。目前我正在使用如下代码:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{

    int a, b;

    printf("Please enter your first number");
    while((a = getchar()) != '\n') {
    }

    printf("test");

    return 0;
}

我不确定如何使用 getchar 获取数字,然后将其存储在我可以使用的变量中。 此外,我在 while 语句中使用 = '\n' 是因为我并不真正了解 EOF 的工作原理(如 K&R 书中的那样),因为每当我使用 EOF 时,我都会进入这个循环,我无法摆脱。

感谢任何人提供的任何建议。

【问题讨论】:

  • getchar 读取 char,正如其名称所示。您为什么希望它读取 int
  • @Ken:有趣的是它返回了一个int,嗯? ;-) 我认为关键不是它获得的类型,而是它接受的数据格式(表示自身的字符与表示十进制整数的字符)。
  • @R。 ——这就是我想说的;你做得好多了。 :) 感谢您的澄清。

标签: c input integer


【解决方案1】:

我上面的 scanf 答案是正确的,但是如果您还没有阅读过有关地址或格式字符串的内容,可能很难理解。

您可以通过从字符中减去“0”将字符转换为等效整数:

char c = getchar();
int n = c - '0';

【讨论】:

  • 注意:这减去 '0' 的 ascii 值(即 48),而不是字面值零。
【解决方案2】:

你可以使用scanf。

看看这个例子:

printf("Please enter your first number ");
int number=0;
scanf ("%d",&number);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 2017-10-02
    相关资源
    最近更新 更多