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