- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Cの文字列関連の質問です。よろしくお願いします。)
C言語での文字列操作に関する質問
このQ&Aのポイント
- C言語で文字列を操作するプログラムを作成しましたが、一部の処理で結果がおかしくなってしまいます。
- 具体的には、特定の行のコードを変更すると結果が正しくならない問題が発生します。
- どのように修正を行えば正しい結果が得られるのか、教えていただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
strncpy関数は、指定文字数をコピーした場合はヌルを付加しません。 したがって、ヌルは自分で付加する必要があります。 strncpy(p[i], tmp, 14); p[14] = '\0';
その他の回答 (1)
noname#111181
回答No.1
15バイト目のNULLをコピーしていないためと思われます。 下記のように変更してください。 strncpy(p[i], tmp, 15);
質問者
お礼
回答ありがとうございます。 関数strncpyを使っての修正ですが strncpy(p[i], tmp, 14); p[i][14] = '\0'; のようにすれば上手くいきました。 ありがとうございました。
お礼
p[14] = '\0'; だと、15番目の文字列が消されるという意味だと思います。 p[i][14] = '\0'; とすれば、各文字列の15バイト目にヌル文字が入ることになって 上手くいきました。 ありがとうございました。