sscanf Modifier%Fd扫描的types是什么?

我遇到了一些具有以下types的行的遗留代码:

sscanf(szBuff,“%Fd%Ff%Fd%Ff”

有没有人select像Fd或Ff修饰符? 如果是这样,那是什么意思?

我似乎无法find任何信息。 代码编译并运行良好。

Solutions Collecting From Web of "sscanf Modifier%Fd扫描的types是什么?"

正如ouah指出的那样,这些与小写字母相同。 这是为什么? 与printf转换说明符对称。 这里%x%X写入像deadbeefDEADBEEF小写或大写数字。 对称性允许对scanf输入和printf输出使用相同的格式字符串。

 #define FMT "%F\n" sscanf (str, FMT, &value); printf (FMT, value); 

C说fscanf函数:

(C99 1,7.19.6.2p14)转换说明符A,E,F,G和X也是有效的,分别表示a,e,f,g和x。

所以在%Fd ,转换规格是%F ,相当于%f 。 请注意, d不是转换规范的一部分。

例如(对于fprintf函数, %F也与%f相同):

 printf("%fd\n", 3.141592); 

将打印:

 3.141592d 


1. C89 / C90不能识别F转换说明符。 例如,对于fscanf ,7.9.6.2中对应的C90段落指出: 转换说明符E,G和X也是有效的,分别表现为e,g和x

%F是一个POSIX(和C99)扩展名。

http://pubs.opengroup.org/onlinepubs/007904975/functions/scanf.html

“转换说明符A,E,F,G和X也是有效的,分别相当于a,e,f,g和x。