我所遇到具有以下類型的線路的一些遺留代碼:sscanf Modifier%Fd掃描的類型是什麼?
的sscanf(szBuff, 「%FD%FF%FD%FF」
有沒有人seeen喜歡的Fd或FF修飾符如果? ?所以,這是什麼意思
我似乎無法找到任何信息的代碼編譯並運行正常
我所遇到具有以下類型的線路的一些遺留代碼:sscanf Modifier%Fd掃描的類型是什麼?
的sscanf(szBuff, 「%FD%FF%FD%FF」
有沒有人seeen喜歡的Fd或FF修飾符如果? ?所以,這是什麼意思
我似乎無法找到任何信息的代碼編譯並運行正常
作爲ouah指出,這些與他們的小寫字母相同。這是爲什麼?爲了與printf轉換說明符對稱。這裏%x
和%X
寫大寫或小寫數字像deadbeef
和DEADBEEF
。對稱性允許對scanf
的輸入和printf
的輸出使用相同的格式字符串。
#define FMT "%F\n"
sscanf (str, FMT, &value);
printf (FMT, value);
下面是樣本一行代碼:sscanf的(szTemp, 「%FF%FF%FF%FF%d%d%FD%FD FF%%d%d%FS%d」,&sp_fpt0.x,&sp_fpt0.y, &sp_fpt1.x,&sp_fpt1。y, &iMember1,&iMember2,&sp_iMember1End,&sp_iMember2End,&sp_fDist,&iSpliceMember,&iPlumbMember, sp_szOrigLabel,&sp_iPlumbIntLoc); – Jack
這些都是'float'(對於%F ...)和'int'(對於%d)的指針,對吧? – Jens
這是正確的。 %Fs用於char字符串(char sp_szOrigLabel [20]) – Jack
ç說,對fscanf
功能:
(C99 ,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
F
轉換說明符。例如,對於在fscanf
7.9.6.2相應C90段落說:轉換標識符E,G,和X是也有效,並且表現一樣,分別E,G,並且x
看來Jack在使用非標準系統,其中「%Fs」實際上需要一個指向char的指針,而「F」是一個修飾符。 – Jens
%F
是一個POSIX(和C99)擴展。
http://pubs.opengroup.org/onlinepubs/007904975/functions/scanf.html
「轉換標識符A,E,F,G和X也是有效的,並應分別相當於A,E,F,G,以及x,」。
你爲什麼砍在它有趣的地方,即其他sscanf的指定參數和它們的聲明的例子嗎? – Jens
什麼編譯器和/或開發環境? – Throwback1986