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