[問題] printf( "%n" , &y ) 的問題

作者: lj0113 (tiny legend)   2015-06-18 23:19:35
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Dev C++
問題(Question):
printf() function 裡的 %n 是否是 compiler depend ??
小弟手邊目前只有這個 compiler ...
預期的正確結果(Expected Output):
123 : 5
錯誤結果(Wrong Output):
123 : 44
程式碼(Code):(請善用置底文網頁, 記得排版)
int i = 44;
printf( "123 :%n", &i );
printf( " %d\n", i );
作者: Ebergies (火神)   2015-06-18 23:31:00
我不確定是怎麼樣不過這個功能很容易產生漏洞建議忘了它吧
作者: PkmX (阿貓)   2015-06-19 00:30:00
%n是C標準有規範的 請見C11 7.21.6.1 - fprintf至於為啥你的編譯器會跑出44就是另外一件事情了...
作者: LPH66 (-6.2598534e+18f)   2015-06-19 04:10:00
如果是寫 printf("123 :%n %d", &i, i); 那確實可能跑出 44真的有分行寫的話那應該要出現 5(應該說寫上上行則一定跑出 44, 因為有函式呼叫擋在中間)
作者: PkmX (阿貓)   2015-06-19 15:48:00
C11就是2011年發布的C語言標準 不過查了一下%n從C89就有了
作者: lj0113 (tiny legend)   2015-06-19 22:20:00
好 謝P大 窩去看看
作者: yvb   2015-06-20 16:41:00
應該是你的 DEV C++ 所叫用的 compiler 有 bug 吧.
作者: WPC001 (好悶, 迷惘~~)   2015-06-21 12:08:00
跟compiler無關... 只跟lib的版本有關...
作者: yvb   2015-06-21 13:57:00
樓上說得是. 就此問題, 的確lib有問題的可能性極高,但也遇過gcc和lib版本不搭配的問題,或不同編譯選項造成不同結果...

Links booklink

Contact Us: admin [ a t ] ucptt.com