使用sprintf時溢位怎麼會影響到變數的值?

時間 2021-05-31 06:28:18

1樓:shaoyuan

sprintf不會檢查緩衝區長度,在一些編譯選項下會造成超過長度bug,也就是你提出的問題,如果是windows下vc++的話,盡量用安全函式,sprintf_s

2樓:pansz

關於第乙個問題,這其實只是 C 語言的基礎問題,檢視相關文件可解決。sprintf 本身不是安全的,它會無條件往第乙個引數的位址寫資料,無論這塊資料空間是誰的。當然,在格式化串的時候也可能發生問題只是概率較低,目前想來可能有問題的就這兩處,首先當然你應當去找 Strline3 的責任。

關於第二個問題,其實用 Linux 的話,標準庫函式直接 man 就好了。不行去問問 stackoverflow 也是好的,順帶提高英語讀寫技能。

順便說一下:也許會有很多人說你這程式寫得不好,全域性變數亂飛什麼的。這其實也是事實,只不過很多時候程式能用,沒太多人去糾結這些細節。

但你現在程式有問題了,再來看的時候,會發現你這個函式裡面冒出來的變數好像全是全域性量,這對你查問題其實非常不利。

分手怎麼會那麼難受!?

涼薄花紋 原答案是沒分手時候寫的,現在分手了看著很難受呵呵呵 分手當然會難受,因為這是乙個將兩種已經融合的生活強行撕裂的過程。就是這樣,昨天我躺在他身邊,呼吸裡全是他的味道,那是一種獨有的讓你心安的味道,你明白這個世界只有他有這種味道,他來到你的世界,從此出現在你生活的每個角落與細節之中,他牽你手時...

怎麼會噴成這樣?

鐵頭 噴罐不適合小比例的艦船模型,更何況白色遮蓋力差。等乾透了再噴一層會好很多。用前充分搖晃,少量多餐,不要盯著乙個地方猛噴。不要怕浪費油漆,畢竟作品比耗材重要。 噴漆粘度過低 漆液稀,遮蓋力不足 1.噴塗前漆液未充分搖動均勻 2.噴塗時漆罐傾斜角度過大 使噴岀物中氣體含裡高 漆液被稀釋 3.噴塗場...

薩博怎麼會「突然」破產?

ElwoodBlues 通用和福特汽車都有防衛部門,從坦克到飛彈火箭都有,但是人家不會狂吹。二戰時期有哪家著名企業沒造過飛機坦克?不行就怪GM倒閉,然而薩博在的時候也沒什麼人買。等到人家倒閉了,鍵盤俠就出來裝逼了。都是普通的家用車,你把鑰匙孔放在遮陽板上也乙個樣,沒必要吹到那麼過 Anderson ...