- C/C++の宿題片付けます 167代目
377 :デフォルトの名無しさん[sage]:2014/05/19(月) 16:32:02.51 ID:8OgLlmDp - >>371
my_strcat();みたいな処理をmainのwhile内に書いたほうが悩まずに済むと思う
|
- C/C++の宿題片付けます 167代目
378 :デフォルトの名無しさん[sage]:2014/05/19(月) 17:35:06.77 ID:8OgLlmDp - >>371
> 上記のように作ってみたのですが、正常に動作していないようです。 > 30文字程度入力するとデータが飛ぶのでreallocあたりかと思うのですが、どこをどうすればいいのかわかりません。 これは、 1. 28行目のfgetsで30bytesからあふれた分が次回のfgetsで拾われる 2. 8行目で強引に終端文字を\0 にしているから文字欠けが生じている の2つが重なったのが原因だと思います。 http://ideone.com/Ff4R0x みたいにすれば良いかも。
|
- C/C++の宿題片付けます 167代目
379 :デフォルトの名無しさん[sage]:2014/05/19(月) 17:58:07.75 ID:8OgLlmDp - ちなみに、realloc();が失敗した場合元のブロックは解放されたり移動されたり
しないそうなので、strのために確保したメモリは注意が必要。
|
- C/C++の宿題片付けます 167代目
381 :デフォルトの名無しさん[sage]:2014/05/19(月) 19:14:04.33 ID:8OgLlmDp - >>378
は *str = '\0'; をしていなかった。 整っていないし…。 修正を入れた版 → http://ideone.com/X4p9LL
|