我遇到strncpy()
問題,需要按照我需要的長度複製一個額外的字符。我需要將10個最高有效位從一個字符串複製到另一個(均爲char*
格式)。strncpy()字符串長度輸出錯誤
較大的變量的大小並不直觀,而較小的隻影響輸出,當它顯着小於我需要的值(我不知道這是爲什麼)。
我的strncpy()
中的n值可能是導致問題的原因,但我不知道爲什麼它按照原樣行事。如果我沒有弄錯,n,即目標字符串的長度,應該比數據長1,以便在最後說明空字符。
我的字符串沒有這樣的行爲。設置n
到11
,我收到以下輸出:
00000111101100100100001110100000
00000111101
我會想象它只會複製10個字符,最後一個爲空。增加n
產生相同的結果。
增大或減小n至10揭示了問題的心臟:
00000111101100100100001110100000
[email protected]
我不知道爲什麼它會做到這一點,但它仍然要做到這一點正下降,直到n
小得多(約8)。
這些是我的代碼的相關線路:
char line[11], hexAddr[8], binAddr[33], lv1Index[11];
...
strncpy(lv1Index, binAddr, 10);
其中lv1Index
是在此之前不動,並顯示binAddr(在給定的輸出)直接預先。
添加的字符總是@
,所以我不相信這是從lv1Index
預初始化的垃圾。
+1,而且,如果他知道原始字符串的長度超過10個字符,他應該使用'memcpy',而不是'strncpy' – Paulpro
啊,好吧,我仍然不完全明白爲什麼一切都是這樣發生的(爲什麼不同的n值改變了輸出,看起來與目的地的大小無關),但是這解決了我的問題。謝謝! –