与えられた文字列、例えば、
char *str = "Hello,StackOverflow!"
char newStr[30];
int l = strlen(str);
for(int i =0 ; i<l ; i ++ )
newStr[i] = str[i];
printf("%s" , newStr);
これで、c-stringの最後の文字はである必要があることがわかりました。'\0'
ここでは明示的に同じことを行っていないため(文字列newStrの最後のインデックスに'\ 0'を格納)、printfはクラッシュしないため、このプログラムはクラッシュするはずです。文字列の終わりを見つけます。
しかし、私はそれが時々うまく機能していることに気づきました、そして時々それはそうではありませんでした。何が問題なのか?実際にはほぼ毎回動作していました。クラッシュしたり、実行時エラーが発生したりすることはありませんか?
C ++でも同じでしょうか?