文字列 'ch1'の最初の半分を取得し、それを文字列 'ch3'に配置し、別の文字列 'ch2'の最初の半分を取得して連結するプログラムを作成したい例えば 'CH3' "プットがCH3の最後にある" しかし、私はそれを実行するとき、それは私にCH3のための奇妙な出力を提供します。.. :strncpyとstrncatを使った奇妙な出力
ch1 ="123"
ch2 ="azertyuiop"
結果: CH3 = "1 < 3rdweirdletter> azert "
これは私のコードです:
int main()
{
char ch1[200],ch2[200],ch3[200];
puts("give 'ch1' ");
gets(ch1);
puts("give 'ch2' ");
gets(ch2);
strncpy(ch3,ch1, strlen(ch1)/2);
strncat(ch3,ch2, strlen(ch2)/2);
printf("a half \"%s\" + a half \"%s\" gives \"%s\"",ch1,ch2,ch3);
return 0;
}
誰かが私を助けてくれたらと思います。 ありがとうございますが、どちらかすべてゼロであることをch3[]
を初期化することができます
'man strncpy':* [...]警告:srcの最初のnバイトの間にヌルバイトがない場合、 destに置かれた文字列はヌルで終了しません。* – EOF
もう少し.. 私はこれに初めてです。 –
'gets'を使わないでください:http://stackoverflow.com/q/1694036/4996248 –