- ベストアンサー
C言語の文字列操作について
mikamikadonの回答
- mikamikadon
- ベストアンサー率0% (0/2)
過去に書いてある答えでよいとは思いますが、No3様で使われている scanf() 関数は非常に使い方が難しいので、fgets()関数で純粋な文字列として読み、その文字列の中に'1'という「文字」があるかどうかをstrchr()関数で判別する、という方法もあると思います。 そして、入力された文字列の中に数字(または空白文字)以外の文字があった場合は「入力は整数ではありません」などとエラーを出す(おおまかですが)というような方針。 fgets()関数で読み込まれた文字列の最後(終端の'\0'の前)に'\n'がない場合は、バッファサイズ(マクロなどで定義しておく)に1行が入りきらなかったことになるので「入力が長すぎます」とやるなどの対処も必要でしょう。 なお、gets()関数はバッファオーバーラン(ググれば分かります)の危険があり、それを回避する方法がないので使ってはいけません。(最新の規格では確か廃止されるはずだと思う。)
関連するQ&A
- C言語で文字列操作を忘れてしまいました。
長い間スクリプト言語ばかりやっておりまして、C言語に戻ると、文字列を返す 関数を作ろうとしましたが、お恥ずかしいながらできませんでした。 ローカル変数の値を戻り値に使おうとして、それがwarningになったり、動作が不安定になったりして、文字列を返す仕組みを完全に忘れてしまっていました。 例えば、"test"と言う文字列を返す関数を書きたいのですが、メモリ操作も考えた サンプルをだれか教えて欲しいです。 int main(void) { printf("%s", 「関数名」); }
- ベストアンサー
- C・C++・C#
- 文字列の操作
はじめまして。 C言語のポインタを使った操作のように JavaScriptでも文字列の一文字一文字を配列に格納していくことはできますか? よろしくお願いします。
- ベストアンサー
- JavaScript
- C言語とCGIによるおみくじの製作
初投稿になります。 私は現在C言語とCGIを使ったWebおみくじを作っています。 内容としては、入力フォームに入力された氏名、生年月日、性別の文字列を受け取り、それを整数に変換します。 そして変換された整数を計算することで20種類ほどの結果を返したいと考えています。 しかし、C言語によるCGIはperlなどのように資料が多くないため、あまり似たような構成のプログラムがなくあまり理解できていません。 Googleなどでc cgi などで検索して、見ることができるものは全て見ましたが、やはり理解できていない現状です。 特に、フォームに入力されたデータをcgiプログラムでどう受けるのか、また受け取った文字列をどうやって整数に変換するのかが分かりません。 もし、わかる方がいましたら、よろしければご教授願います。 また、コンパイルはgccで行っています。
- ベストアンサー
- CGI
- C言語で全角文字を扱いたいのですが、
C言語で全角文字を扱いたいのですが、 全角文字列を入力して特定の箇所の文字(例えば3文字目)を抜き出して、表示するという感じのプログラムをしたいのですが、うまくいきません。 半角文字ならば、配列を使ってできるのですが・・・・・
- ベストアンサー
- C・C++・C#
- C言語で取得した文字列を、C++の文字列として取り扱いたいです。
C言語で取得した文字列を、C++の文字列として取り扱いたいです。 皆さんこんにちは。 C言語で取得したchar型で定義された文字列を、 C++の「std::string」に渡したいと思っております。 どうすればかなうでしょうか? 具体的には次のような内容です。 ■C言語側 ---- char key1 = "deperture"; ---- ■C++側で「key1 = key2」としたいです。 ---- std::string key2 = key1; ---- C言語側で記述されている「key1」の値(deperture)を、 C++ソース内の「key2」に渡したいと思っています。 こうゆう場合、どんな方法をとれば適切でしょうか。 C言語側でのchar型の文字列の値を、 C++側の「std::string」型として C++のソースへ渡す方法が分からないです。 アドバイスいただけるとありがたいです。 簡単な例を頂けると更に大変ありがたいです。 以上どうぞ宜しくお願い致します。
- ベストアンサー
- C・C++・C#
- C言語で整数を文字列へ型変換
C言語で整数を文字列へ型変換 int result[11]; const char *tmp; resultの中の11個の数字を 1,2,3,4,5,6,7,8,9,10,11 のような文字列にして、tmpへ代入したんですが、やり方が分かりません。 Cの初心者ですので、教えていただきたいです。
- ベストアンサー
- C・C++・C#