C字串以 0 結尾的問題?

時間 2021-05-11 22:25:14

1樓:Milo Yip

printf("%.7s %.7s %.6s %.6s\n", hd.a, hd.b, hd.c, hd.d);

2樓:張舸

那就不要用標準庫函式了嘛,既然你知道每個字串應有的長度,自己去實現 copy 不就好了?不要想什麼 strcpy。

另外你的 read 做法也不對,因為不能保證這個 struct 在記憶體中是連續的,換句話說

sizeof

(structhd)

就不一定是 26。

3樓:薛非

我明白這是由於C語言中字串是以'\0'作為結束符導致的。//不是fread(&hd, sizeof(struct head), 1, fop);//這句有問題

問題出在你假設 hd 各個成員之間是連續儲存的

C語言從來沒說結構體各個成員是連續存放的,它們只是按順序儲存的,但不一定是連續的。

1. 如何才能獲得理想的輸出?我想到的一種辦法是先一次性讀入二進位制檔案26個位元組的內容,然後通過strcpy給hd.

a 7個字元,再給hd.b 7個字元...//這個方法有點笨

你原始的問題是什麼?

將C風格字串結尾字元改成其他字元(比如char a 「12」 a 2 f )會發生什麼?

50包郵 在微控制器程式設計裡面,一般用串列埠發字串的函式會有一句while s 0 來檢測字串是否發完 如果你把這個改過屁股的字串扔進去你會在串列埠助手收到除了 12 以外一堆很長的亂七八糟的東西 桃又 你如果再把它當C風格字串來讀,它就會讀到天荒地老直到遇見乙個 0。良心的VC 在除錯模式下會把...

C 裡能夠使用的字串除了以空字元結尾的那種還有什麼?

影心 reference operator size type pos 1 const reference operator size type pos const 2 返回到位於指定位置 pos 的字元的引用。不進行邊界檢查。若 pos size 則行為未定義。1 若 pos size 則行為未定...

C 字串比較是否相等

Sigon 你同事這種人還能有班上,作為即將踏進職場的畢業生感到非常難受。看看現在為了找個4千塊的實習都得刷一堆造航母難度的題。回到問題,之所以能得到正確結果是因為編譯器優化,將常量存在同乙個記憶體位址,而 比較的是兩個指標是否指向同乙個記憶體位址,所以得到了結果。你同事根本沒有理解C 邏輯,完全瞎...