アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語の標準入力について質問です。
オーバーフローや\nなども考慮する場合、結局どのような記述が一番良いのでしょうか?
数値の場合と文字列の場合など分けて教えて下さい。

A 回答 (3件)

端末からの入力であれば、何を入力する場合でもfgetsです。

末尾に\nがあるかどうか確認して、なければ続きを読む。
数値の場合は、fgetsで読んでから、atoiとかatofとかstrtodとか、場合によってはsscanfで。
    • good
    • 0

通常の使用であれば


scanf()の使用でしょうね。
ユニコード文字の場合は、C++とかと使った方が安全かもしれません。

unsigned char buf[256];

if (scanf("%255[^\n]%*[^\n]", buf) != 1) {
buf[0]=chr(0); //入力の無い場合
}
scanf("%*c"); //残りを読み飛ばす。
    • good
    • 0

C言語で入力処理をきっちりと書くと、コーディングは割りと大変になります。


以前、データベースソフトのソースコードの中の入力処理に変更を加えようとしましたが、入力ルーチンのコードが長くて、どこをどう直せばいいのか、調べるのが大変でした。

さしあたり、入力時に問題が起きないのは、文字列として読み込んで、その後、必要に応じて、文字列を数値や日付、時間などに変換してあげるのがいいと思います。
もちろん、数値や日付に変換できるかは、変換関数で調べてエラーとなるなら、その時にはエラーメッセージを出してあげるなりすればいいと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!