[過去ログ] 【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
133
(4): デフォルトの名無しさん [sage] 2016/12/31(土) 16:11:48.53 ID:8v6iajLL(1/2) AAS
ある本の解答例ですが実行すると先頭文字が消えます。これではダメなんでしょうか?
void str_toupper(char *str)
{
while (*str)
*str++ = toupper(*str);
}
138
(1): デフォルトの名無しさん [sage] 2016/12/31(土) 18:30:26.25 ID:K1FrsN4c(1) AAS
>>133
その本がダメなコードの例としてそれを挙げてるならいいけど、正解としてそれを書いてるのなら、著者の能力とか校正の正確さとか不安になる。
139
(1): 133 [sage] 2016/12/31(土) 19:18:21.55 ID:8v6iajLL(2/2) AAS
>>138
正解例です
>>135
135(1): デフォルトの名無しさん [sage] 2016/12/31(土) 17:17:13.63 ID:Z7Smo6OK(1) AAS
*str++ = toupper(*str); でダメなら
*str = toupper(*str++); で動くんじゃない?

……って真に受けるなよ。別の悪魔が出てくるだけだからな。
たとえ期待通りの動作になったとしても、たまたまだからな。
下でダメだったので正解を見たら上になってて、そうかとそうかと思ったのですが…
>>134
134(2): デフォルトの名無しさん [sage] 2016/12/31(土) 16:20:34.34 ID:ADMXNhyN(1/2) AAS
*str++ = toupper(*str);

これ鼻から悪魔コード
インクリメント演算子で操作された変数が副作用完了点までに複数回参照するのは動作未定義

*str = toupper(*str);
str++;
と分離しないとまずい
ありがとうございます
初心者なので更に勉強してみます
144: デフォルトの名無しさん [sage] 2017/01/01(日) 12:42:18.55 ID:/LG195GI(1) AAS
str_toupperでググると正しいコードはあるけど >>133 は見つからないなあ。結局なんて本?
145: 133 [sage] 2017/01/01(日) 14:53:59.97 ID:OFpbxODd(1) AAS
解きながら学ぶC言語(2006年第5刷)ですが、新版見てみたら >>134 のように修正されてました
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.340s*