strncpy()
余分な文字を必要な長さでコピーするのに問題があります。最上位 10 ビットをある文字列から別の文字列にコピーする必要があります (両方ともchar*
形式で)。
大きい変数のサイズは直感的には問題ではなく、小さい変数は、必要な値よりも大幅に小さい場合にのみ出力に影響します (これがなぜなのかはわかりません)。
my の n 値がstrncpy()
問題の原因かもしれませんが、なぜこのように動作しているのかわかりません。私が間違っていなければ、宛先文字列の長さ n は、末尾の null 文字を考慮して、データよりも 1 長くする必要があります。
私の文字列はこのようにまったく動作していません。に設定n
すると11
、次の出力が表示されます。
00000111101100100100001110100000
00000111101
10文字しかコピーせず、最後の文字はnullになると思います。増やしn
ても同じ結果になります。
n を 10 に減らすと、問題の核心が明らかになります。
00000111101100100100001110100000
0000011110@
なぜこれを行うのかはわかりませんが、 n が減少するにつれて、n
がはるかに小さくなるまで (約 8)、これを実行し続けます。
これらは私のコードの関連行です:
char line[11], hexAddr[8], binAddr[33], lv1Index[11];
...
strncpy(lv1Index, binAddr, 10);
この前はそのままでlv1Index
、 binAddr は直接 (指定された出力に) 表示されます。
追加された文字は常になので、初期化前@
のゴミではないと思います。lv1Index