C言語の勉強をするにあたり文字による分岐について最近悩んでおります。
入力された文字を判別してそれにあった分岐を進み処理をするにも多くのやり方があると思います。
私はstrcmp関数など使っての判別をするようにしていますが、
実務ではどのようにコーディングされていますか?
また、入力されるものが1文字の場合と文字列の場合では使い分けていたりしますでしょうか?
どうかご指導ご鞭撻のほどよろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
C言語の勉強ということなら、あまり気にせずに、まずは標準関数をどんどん使っていけば良いと思います。
実務においては、特殊な用途以外ではC言語そのものを使うケースはほとんどなく、ほぼC++なので、セキュリティ対策もあって文字列がらみでC標準関数を使うことはほとんどありません。基本的にはSTLのstring系クラスを使いますが、フレームワークが提供する文字列クラスを使うこともあります(例えばWindowsでMFCやATLを使う場合はCString)。
また、入力されるものが1文字の場合と文字列の場合では使い分けていたりしますでしょうか?
使い分けます。文字はC/C++では数値としての扱いなので、文字列として扱うよりもコードが単純化できます。
投稿2017/03/01 14:14
総合スコア5938
0
ベストアンサー
こんにちは。
私はstrcmp関数など使っての判別をするようにしていますが、
実務ではどのようにコーディングされていますか?
昔はよくC言語でファームウェアを開発してましたが、当時はそもそも標準ライブラリを使うなんて贅沢はできませんでした。最近もそれほど状況は変わらないような話を聞きます。
アセンブラだとCPUベンダーを簡単に変更できません。しかし、C言語ならCPUベンダーの変更が容易です。
なので、アセンブラではなくC言語で書くことでCPUを相見積もりしてリーズナブルな価格で買ったり、メーカのCPU供給能力不足への保険にしたり等の工夫をしてました。生産性もアセンブラよりかなり高いですし。
また、C言語自体に比べてCの標準ライブラリは使い方がたいへん難しいと言う問題もあります。
小規模なファームウェアの場合、あれだけ落とし穴が多いライブラリを使うよりは、自作した方が生産性は高いです。strcmpも実務では使っては行けない系の関数です。
また、入力されるものが1文字の場合と文字列の場合では使い分けていたりしますでしょうか?
当然使い分けます。1文字処理と複数文字処理では、面倒臭さが段違いです。
C言語で複数文字処理する場合、常にバッファ・オーバーラン対策を考えないといけないので超面倒です。
ベターCとしてC++を使っていた時は、今にして思えば愚かにも、Cの標準ライブラリを苦労に苦労を重ねてstrncmp()とかsnprintf()などなどを使ってました。当時、STLを知っていたら、せめてstd::stringを知っていたらと反省してます。
【蛇足ですが】
C言語自体はなかなか優れた言語と思うのですが、標準ライブラリは行けません。問題が多く実務で使うのは頭痛いです。
C言語のコア部分はポインタと構造体の組み合わせくらいしか難しいことはないので、一通りマスターされたらC++へ進むと良いですよ。
投稿2017/03/01 13:45
総合スコア23272
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/02 08:41
0
もちろん使い分けます。
但し業務(仕様)によっては文字も文字列も文字列で処理した方がコーディングの効率が良いなどありますから、そこらへんは臨機応変に対応します。
逆に効率よりも処理時間優先の場合は文字で処理したりなどする場合もあります。
入力は1文字だから文字で処理、とか決めてかからずに、まずはやりやすい方法でどんどんコーディングして行くのが良いと思います。
投稿2017/03/02 00:02
総合スコア16996
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/01 14:18
2017/03/02 07:53