• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Cの文字列関連の質問です。よろしくお願いします。)

C言語での文字列操作に関する質問

このQ&Aのポイント
  • C言語で文字列を操作するプログラムを作成しましたが、一部の処理で結果がおかしくなってしまいます。
  • 具体的には、特定の行のコードを変更すると結果が正しくならない問題が発生します。
  • どのように修正を行えば正しい結果が得られるのか、教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

strncpy関数は、指定文字数をコピーした場合はヌルを付加しません。 したがって、ヌルは自分で付加する必要があります。 strncpy(p[i], tmp, 14); p[14] = '\0';

kerberosMA
質問者

お礼

p[14] = '\0'; だと、15番目の文字列が消されるという意味だと思います。 p[i][14] = '\0'; とすれば、各文字列の15バイト目にヌル文字が入ることになって 上手くいきました。 ありがとうございました。

その他の回答 (1)

noname#111181
noname#111181
回答No.1

15バイト目のNULLをコピーしていないためと思われます。 下記のように変更してください。 strncpy(p[i], tmp, 15);

kerberosMA
質問者

お礼

回答ありがとうございます。 関数strncpyを使っての修正ですが strncpy(p[i], tmp, 14); p[i][14] = '\0'; のようにすれば上手くいきました。 ありがとうございました。