我正在编写一个程序来读取stdin,然后写下它读取的内容stdout,取消它找到的任何转义的十六进制数字.我想读的所有数字都是8位.这就是我到目前为止所拥有的
while((c = fgetc(stdin)) != EOF) {
if(c == '%') {
fscanf(stdin,"%x",&r);
printf("%i \n",r);
}
}
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,除了当我写一些类似于%FFF标准输入的内容时,它将其读取为3位十六进制数.我该如何限制fscanf只读2个字符?我曾考虑将接下来的2个字符读入缓冲区sscanf'ing,但这对我来说感觉相当不优雅.
如果你想scanf(等)只读两个字符,那么告诉它这样做:
scanf("%2x", &r);
Run Code Online (Sandbox Code Playgroud)
有关格式化的信息,请参阅此参考scanf.
| 归档时间: |
|
| 查看次数: |
1179 次 |
| 最近记录: |