gpt4 book ai didi

c - 如何使用 C 的 FILE* 描述符安全地 'unget' 字符

转载 作者:行者123 更新时间:2023-11-30 20:22:45 25 4
gpt4 key购买 nike

假设您需要读取在 C 中形成十进制整数的字符序列,但您不能使用 fscanf() 。该程序将使用以下八位字节进行测试:

0x31 0x35 0x30 0x0a

或者简单地说:

150\n

如何确保只提取前三个字节?换句话说,将来调用fgetc()必须返回0x0a 。这与使用 fscanf("%d") 的行为完全相同。然后fgetc() .

最佳答案

要安全地“取消”角色,请确保

  1. 仅在获得角色后使用一次。保证了一个推回特性。额外的调用可能不起作用。

  2. 确保推回的值在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/

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