8樓的資料是MSDN信息,其中Note部分的文字說:%C是微軟VC++的printf()函數的擴展,當你使用printf_s("%C")時,它解釋後面的數據是寬字符(即Unicode字符),要用L前綴的,比如L'好'或L'A',用"%c"是原始的ANSI編碼字符;而當你用wprintf_s()函數的時候,用"%C"是輸出ANSI字符,%c則是寬字符。
也就是說,格式符的意義由printf()或wprintf()函數名稱決定:printf()是ANSI版本的輸出函數,則"%c"用原始意義,"%C"用於非ANSI的字符;wprintf()是寬字符版本的函數,則"%c"的原始意義是這個版本所對應的Unicode寬字符,"%C"則的另一版本即ANSI的字符。
Note,已經標明這是微軟擴展!這就是我前面叫你看幫助的原因,不同的編譯器有不同的解釋,衹能以當前編譯器自己的解釋爲準,不是《標準》沒有的東西,具體實現就不能有。
[ 本帖最后由 TonyDeng 于 2015-3-16 13:59 编辑 ]
也就是說,格式符的意義由printf()或wprintf()函數名稱決定:printf()是ANSI版本的輸出函數,則"%c"用原始意義,"%C"用於非ANSI的字符;wprintf()是寬字符版本的函數,則"%c"的原始意義是這個版本所對應的Unicode寬字符,"%C"則的另一版本即ANSI的字符。
Note,已經標明這是微軟擴展!這就是我前面叫你看幫助的原因,不同的編譯器有不同的解釋,衹能以當前編譯器自己的解釋爲準,不是《標準》沒有的東西,具體實現就不能有。
[ 本帖最后由 TonyDeng 于 2015-3-16 13:59 编辑 ]
授人以渔,不授人以鱼。