在控制台应用程序中获取int的最简单方法是什么?

时间:2009-05-14 19:42:02

标签: c console user-input

我想将用户输入作为整数处理,但似乎C无法从stdin获取int。有这个功能吗?我如何从用户那里获得一个int?

5 个答案:

答案 0 :(得分:15)

#include <stdio.h>

int n;
scanf ("%d",&n);

请参阅http://www.cplusplus.com/reference/clibrary/cstdio/scanf/

答案 1 :(得分:5)

scanf()就是答案,但你肯定应该检查返回值,因为从外部输入中解析数字会有很多错误...

int num, nitems;

nitems = scanf("%d", &num);
if (nitems == EOF) {
    /* Handle EOF/Failure */
} else if (nitems == 0) {
    /* Handle no match */
} else {
    printf("Got %d\n", num);
}

答案 2 :(得分:1)

标准库函数 scanf 用于格式化输入: %d int(d是十进制的缩写)

#include <stdio.h>
int main(void)
{
  int number;
  printf("Enter a number from 1 to 1000: ");

  scanf("%d",&number); 
  printf("Your number is %d\n",number);
  return 0;
} 

答案 3 :(得分:1)

(f)scanf之外,其他答案已充分讨论过,还有atoistrtol,对于已经读取字符串输入但想要的情况将其转换为intlong

char *line;
scanf("%s", line);

int i = atoi(line);  /* Array of chars TO Integer */

long l = strtol(line, NULL, 10);  /* STRing (base 10) TO Long */
                                  /* base can be between 2 and 36 inclusive */
建议使用

strtol,因为它允许您确定数字是否已成功读取(与atoi相反,而char *strs[] = {"not a number", "10 and stuff", "42"}; int i; for (i = 0; i < sizeof(strs) / sizeof(*strs); i++) { char *end; long l = strtol(strs[i], &end, 10); if (end == line) printf("wasn't a number\n"); else if (end[0] != '\0') printf("trailing characters after number %l: %s\n", l, end); else printf("happy, exact parse of %l\n", l); } 无法报告任何错误,并且只会返回0给予垃圾)。

{{1}}

答案 4 :(得分:-1)

#include <stdio.h>

main() {

    int i = 0;
    int k,j=10;

    i=scanf("%d%d%d",&j,&k,&i);
    printf("total values inputted %d\n",i);
    printf("The input values %d %d\n",j,k);

}

来自here