我正在学习 2024 年 edx CS50 课程,我处于 C 编程的第一周。 CS50 课程让用户使用包含 CS50.h 模块的在线 CS50 程序。这允许我使用
我尝试包含 CS50.h 模块,但收到一条错误,指出 VS Code 无法识别它。我想在 C 中获得标准输入和输出。
如何在标准 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
。