- C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
25 :デフォルトの名無しさん (ワッチョイ 5b7b-Cxy9)[sage]:2016/07/12(火) 15:04:51.20 ID:N9hLb2lJ0 - >>21
fgets()は終端文字を自動的に入れるので 1行目と3行目の全く同じ(しかも間違っている)処理はそもそも不要 入力が256バイト以上でも255バイトまで書き込んで最後に終端を置く char s[] = "abcde"; であればstrlen(s)の結果は5、終端を入れるべきはs[5]、つまり同じ位置 そしてstrlen(s)はそもそも正しく終端されていなければ正しい結果を返せない よって不要な処理 前の人の言う通りbufの定義(二次元配列?)かfgets()への指定が間違っていると思われる
|
- C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
26 :デフォルトの名無しさん (ワッチョイ 5b7b-Cxy9)[sage]:2016/07/12(火) 15:45:48.25 ID:N9hLb2lJ0 - 読み直して思ったけどもしかして改行文字を削除したいのか
終端の1文字前が改行と決め打ちする発想がなかったので全く気付かなかった CR+LFの処理系もあるし前述の通り255バイト+終端のケースでは単に破壊することになる strrchr使うなり後ろからポインタ回すなりして\r\nを探そう
|
- C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
32 :デフォルトの名無しさん (ワッチョイ 5b7b-Cxy9)[sage]:2016/07/12(火) 18:16:54.85 ID:N9hLb2lJ0 - >>30
https://paiza.io/projects/Nka7ld65WDSimDBx7ltj_A できるだけ丁寧に書いたつもりなので何をどうしてるか処理を追ってみて
|