我正在编写一个程序来读取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,但对我来说感觉相当不雅。