掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
fgets後のmap処理について (ID:57252)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> bufferをなくすってことは、 > fgetsが使えなくなるのか等?? fgets というのは元々 (C++ ではなく) C の標準関数なのです。 # そもそも<…….h>というヘッダは、C 言語互換の古いヘッダですし...。 C 言語ではプログラマが明示的に上限を指定して読み出し、 長さ超過時の処理を自分で決めるのが基本なのです。 なので、fgets を使っている限り、読み出しサイズに合わせてメモリを 確保してくれたりはしません。領域だけ可変にしても、fgets の引数は サイズ固定のままですし、自分で fgets のループなどを下記順次 読み出ししていくしかありません。 一方、C++ から新しく用意された標準ライブラリ(含むSTL)は、 その辺りの管理を内部でやってくれますから、buffer のサイズも 意識せず、単に std::string buffer; とか書けばよくなりますが、 C 互換の fgets 等とは相性があまりよくありません。 C++ には C++ 用の getline などが別途あるので、のきなみこれらに 変更する必要が出てきます。 # 必ずしも全部置き換える必要があるわけではないですが、混ぜると # 可読性が落ちたり、要らない注意点が増えたりしかねません。 # map とか出てますし(他の質問も含め)C++ だとは思っていたんですが、 # (C++ でも) C 互換の関数で実現できないことはありませんし、 # あまりに皆さん同じC言語風コードを提示されるので課題の指定/制限が # あるのかなぁと思いまして。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.