- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用以下代码将其输入到stdin“11+3”,并且
void main(void) {
int number;
printf("the first call : %d\n", scanf("%d", &number));
char ch = fgetc(stdin);
ungetc(ch, stdin);
printf("the second call : %d\n", scanf("%d", &number));
}
结果对我来说很奇怪因为第二个scanf()应该失败。仅供引用,我在Ubuntu 5.4.0-6ubuntu1~16.04.4下使用了gcc 5.4.0 20160609。
the first call : 1
the second call : 1
最佳答案
because the second scanf() should have failed.
没有。您向其提供了完全有效的输入。
scanf 解析输入,直到满足输入或到达分隔符为止。
在第一次调用 scanf 时,它将“11”解析为数字 11,然后得出结论,因为下一个数字不是满足输入的数字的一部分。
在第二次调用 scanf 时,它将“+3”解析为数字 3,这是整数形式的正 3 的有效表达式。就像“-3”代表负数 3 一样。
正如评论中提到的,传递“11+ 3”会导致第二个 scanf 失败,因为它会尝试将“+”解析为整数(+ 后面的空格被视为分隔符)。
关于c - ungetc() 的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43061959/
我使用以下代码将其输入到stdin“11+3”,并且 void main(void) { int number; printf("the first call : %d\n", sca
ungetc 只保证接受一个字节的回传。另一方面,我已经在 Windows 和 Linux 上对其进行了测试,它似乎可以使用两个字节。 是否有任何平台(例如任何当前的 Unix 系统)实际上只占用一个
我不明白这个程序是如何工作的? char c; int i; for(i=1;i<=5;i++) { scanf("%c",&c); printf("%c",c); un
我不明白这个程序是如何工作的? char c; int i; for(i=1;i<=5;i++) { scanf("%c",&c); printf("%c",c); un
假设我有一个由 fopencookie 创建的 FILE*,如果我在 FILE* 上调用 ungetc 会发生什么>?假设我在 FILE* 上设置了 setvbuf 作为 _IONBF 以使其无缓冲。
Python中的一些文件读取(readlines())函数 将文件内容复制到内存(作为列表) 我需要处理一个太大的文件 被复制到内存中,因此需要使用 一个文件指针(访问文件一个字节 一次)——就像在
在标准C库中,ungetc()不写入文件吗? 它只移动文件位置吗? 可以不事先阅读就使用吗?即它可以独立于其他 IO 函数使用吗? 是否可以在不需要一次一个字符的读取功能之后使用它,即一次读取多个字符
ungetc() 似乎在某些字符上失败。这是一个简单的测试程序: #include int main(void) { int c; printf("Type a letter and
是否有 ungetc 的 C++ 版本? 也就是说,我可以将角色放回 istream 吗? 最佳答案 是的。 istream::putback与 ungetc except if using unge
我想知道 std::cin::ungetc 接受多少个字符。它与 C 中的相同吗(因此可移植 1,见下文)? 相关 SO 帖子 "ungetc: number of bytes of pushback
int ungetc(int c, FILE *fp) 将字符 c 推回 fp,并返回 c 或 EOF 作为错误。 where as int putc(int c, FILE *fp) 将字符 c 写
我想在收到 SIGUSR1 时使用 ungetc 将一个“A”字符填回标准输入。想象一下,我有充分的理由这样做。 当调用 foo() 时,stdin 中的阻塞读取不会在收到信号时被 ungetc 调用
我猜想,在 scanf("%d") 之后 ungetc() 可能会失败,因为 scanf 可能会为第一个非数字字符隐式调用 ungetc()。 但如果格式以 %c 结尾,就不会发生这种情况,对吗? 最
我遇到过这样一个 getword 的例子。我了解所有检查等,但我对 ungetc 有疑问。 当c满足if ((!isalpha(c)) || c == EOF)且不满足while (isalnum (
我无法理解我的程序的行为。它调用 scanf,然后是 ungetc,然后是 printf。 我无法理解输出行为背后的原因。这是代码。如果有人澄清了行为,将会有很大的帮助。 int main() {
在我的代码中,我试图完成这样的事情(用伪代码编写): While not at EOF: Get line Write line to different file Skip
我是 C 初学者,我想连续调用 ungetc() 两次,尽管我知道在常规 C 中这是不允许的。有人告诉我可以修改 Fflush() 来完成这项工作,但我不知道该怎么做。 这是我的代码,我的Fflush
我在看一本关于linux编程的书时想到了,我在我的电脑上试了一下,代码运行良好,但我就是不明白它是如何工作的,希望有人能帮我解释一下, 提前致谢!我的代码如下: #include #include
谁能给我解释一下ungetch的用途?这是来自 K&R 第 4 章,您将在其中创建反向波兰计算器。 我在没有调用 ungetch 的情况下运行了该程序,在我的测试中它仍然可以正常工作。 int ge
我正在将 net-snmp 移植到一个嵌入式平台,该平台对文件系统的访问权限有限,但我偶然发现了一个大问题。有一部分核心代码使用了 ungetc() 函数,但我没有。当然有两种解决方案: A)使用我拥
我是一名优秀的程序员,十分优秀!