C输入VS代码

问题描述 投票:0回答:1

我正在学习 2024 年 edx CS50 课程,我处于 C 编程的第一周。 CS50 课程让用户使用包含 CS50.h 模块的在线 CS50 程序。这允许我使用 ,其中包括某些数据类型的输入。我一直在使用 int height = get_int("height"),在常规 VS Code 中我无法利用 #include 进行用户输入。我如何在标准 C 中获取用户输入?我看到一些关于 scanf 和 printf 用于输入和输出的帖子,但有人可以进一步解释这些功能吗?

我尝试包含 CS50.h 模块,但收到一条错误,指出 VS Code 无法识别它。我想在 C 中获得标准输入和输出。

c input output include
1个回答
0
投票

如何在标准 C 中获取用户输入(以替换

get_int("height")
)?

这取决于错误处理。

假设代码因错误而退出。

int get_int(const char *prompt) {
  // Send prompt.
  if (prompt) {
    fputs(prompt);
    fflush(stdout);
  }

  // Read input.
  char buffer[100];
  if (fgets(buffer, sizeof buffer, stdin) == NULL) {
    fprintf(stderr, "No input.\n");
    exit(EXIT_FAILURE);
  }

  // Parse input.
  char *endptr;
  errno = 0;
  long val = strtol(buffer, &endptr, 10);
  if (buffer == endptr) {
    fprintf(stderr, "Non-numeric input.\n");
    exit(EXIT_FAILURE);
  }
  if (errno == ERANGE || val < INT_MIN || val > INT_MAX) {
    errno = ERANGE;  // Useful if code did not exit.
    fprintf(stderr, "Input out of int range.\n");
    exit(EXIT_FAILURE);
  }
  while (isspace(*((unsigned char*)endptr))) {
    endptr++;
  }
  if (*endptr != '\0') {
    fprintf(stderr, "Input has trailing non-numeric junk.\n");
    exit(EXIT_FAILURE);
  }

  // We made it!
  return (int) val;
}

要做的事:

  • 添加代码以处理 100 行或更长的行。

  • 检查输出函数的返回值。

  • 也许可以处理非小数输入或指数输入,如

    1e4

© www.soinside.com 2019 - 2024. All rights reserved.