假设您需要读取在 C 中形成十进制整数的字符序列,但您不能使用 fscanf()
。该程序将使用以下八位字节进行测试:
0x31 0x35 0x30 0x0a
或者简单地说:
150\n
如何确保只提取前三个字节?换句话说,将来调用fgetc()
必须返回0x0a
。这与使用 fscanf("%d")
的行为完全相同。然后fgetc()
.
最佳答案
要安全地“取消”角色,请确保
仅在获得角色后使用一次。保证了一个推回特性。额外的调用可能不起作用。
确保推回的值在
unsigned char
范围内。推回EOF
会导致流不变。
示例:
unsigned sum = 0;
int ch;
while (isdigit(ch = fgetc(stdin))) {
sum += ch - '0';
}
ungetc(ch, stdin);
关于c - 如何使用 C 的 FILE* 描述符安全地 'unget' 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38709868/