gpt4 book ai didi

c - 当格式字符串以换行符结尾时,scanf 的行为是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:25 24 4
gpt4 key购买 nike

对于下面的代码:(假设已经定义了x)

scanf("%d\n", &x);
printf("foo");

如果我按 1 和 ENTER,我希望程序打印 foo,但事实并非如此。我必须按 1、ENTER、2、ENTER 才能看到它打印 foo。

现在的问题是为什么我需要输入一些东西再加上另一个 ENTER 才能使 scanf 返回? scanf 不可能只需要比格式字符串多一个 ENTER,因为按 1、ENTER、ENTER 也不起作用。事实上,无论我输入了多少次 ENTER,scanf 都会一直等待,直到我输入其他内容。

我已经在 Visual Studio 2010 和 MinGW 中尝试过这个例子,它们产生了相同的结果。那么这怎么解释呢?这是 Windows 特有的吗?或编译器依赖?或者只是这种 scanf 的用法会产生未定义的行为?

最佳答案

scanf格式字符串中的'\n'(还有空格,tab,'\r''\f''\v') 使 scanf 忽略空格。

ENTER 是空白,所以 scanf 会尽可能多地忽略它,只有在它看到不是空白的东西(2)时才会停止。

关于c - 当格式字符串以换行符结尾时,scanf 的行为是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10269208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com