gpt4 book ai didi

c - 我应该如何限制 fscanf 解释的字符数?

转载 作者:行者123 更新时间:2023-12-02 07:34:51 24 4
gpt4 key购买 nike

我正在编写一个程序来从 stdin 读取,然后将它读取的内容写入 stdout,取消转义它找到的任何转义的十六进制数。我想读取的所有数字都是 8 位的。这是我目前所拥有的

while((c = fgetc(stdin)) != EOF) {
if(c == '%') {
fscanf(stdin,"%x",&r);
printf("%i \n",r);
}
}

这工作正常,除了当我向标准输入写入类似 %FFF 的内容时,它会将其读取为 3 位十六进制数。我应该如何限制 fscanf 只读取 2 个字符?我考虑过将接下来的 2 个字符读入缓冲区,然后 sscanf'ing,但这对我来说感觉很不雅观。

最佳答案

如果您希望 scanf(等)只读取两个字符,请告诉它这样做:

scanf("%2x", &r);

参见例如this reference有关 scanf 格式的信息。

关于c - 我应该如何限制 fscanf 解释的字符数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17804841/

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