提问人:nmn 提问时间:11/1/2023 最后编辑:Mark Rotteveelnmn 更新时间:11/2/2023 访问量:80
不知道scanf函数出了什么问题 [duplicate]
Don't know what's wrong with the scanf function [duplicate]
问:
我正在尝试按函数从用户输入中获取 2 个整数,并用于打印该输入。不知何故,我无法打印出第二个整数。我在这里错过了什么?scanf
printf
#include <stdio.h>
#include <math.h>
int main (void)
{
unsigned long long int x = 0, y = 0;
printf("The first integer: ");
scanf("%llu", &x);
printf("x is %llu\n", x);
printf("The second integer: ");
scanf("%llu\n", &y);
printf("y is %llu", y);
}
我尝试从唯一运行代码,但程序无法按预期打印出用户输入。printf("The second integer: ")
y
答:
1赞
Eric Postpischil
11/1/2023
#1
在 中,指示匹配可选有符号的十进制整数并将其转换为 .然后告诉“[读取]输入到第一个非空格字符(保持未读状态),或直到无法读取更多字符”(C 2018 7.21.6.1 5)。所以从输入中读取。很可能,用户按 或 ,在输入流中生成一个换行符,然后读取该换行符。scanf("%llu\n", &y);
%llu
scanf
unsigned long long int
\n
scanf
scanf
EnterReturnscanf
但这不是一个非空白字符,所以继续阅读。此时,终端处于待处理状态,等待用户输入内容。如果用户键入非空格字符,将看到该字符并完成格式的一部分。否则,请继续等待更多输入。scanf
scanf
\n
scanf
删除 ;将代码更改为 。然后,当它看到整数匹配完成时将返回。\n
scanf("%llu", &y);
scanf
评论
0赞
Chris
11/1/2023
此外,请务必检查 的返回值。scanf
评论
scanf
%u
\n
printf
printf("y is %llu\n", y);