初投稿になります。
私は現在C言語とCGIを使ったWebおみくじを作っています。
内容としては、入力フォームに入力された氏名、生年月日、性別の文字列を受け取り、それを整数に変換します。
そして変換された整数を計算することで20種類ほどの結果を返したいと考えています。
しかし、C言語によるCGIはperlなどのように資料が多くないため、あまり似たような構成のプログラムがなくあまり理解できていません。
Googleなどでc cgi などで検索して、見ることができるものは全て見ましたが、やはり理解できていない現状です。
特に、フォームに入力されたデータをcgiプログラムでどう受けるのか、また受け取った文字列をどうやって整数に変換するのかが分かりません。
もし、わかる方がいましたら、よろしければご教授願います。
また、コンパイルはgccで行っています。
No.3ベストアンサー
- 回答日時:
> 生年月日のようにすでに数値であるものはそのまま使いたい
文字列(数字)から整数型への変換は,strtol や sscanf などが使えます。
その前に,生年月日の部分を切り出す処理は必要です。
しかし,「ランダムだと一日の中でやり直しができてしまうからつまらない」
のを回避することだけが目的なら,氏名や,生年月日,性別の意味を解釈する必要はないので,
受け取った文字列をそのまま,簡単なハッシュ関数に突っ込んでしまってもいいでしょう。
各文字のコードを全部足して,最後に 20 で割った余りを取るとか,そんなんで十分やと思います。
たしかにそのやり方でできるならその方が簡単そうですね!
ただハッシュ関数というのが初めて聞く言葉なのでその辺は調べてみます。
本当に助かりました。ありがとうございます!
No.2
- 回答日時:
No.1
- 回答日時:
> フォームに入力されたデータをcgiプログラムでどう受けるのか
METHOD=GET の場合には,環境変数 QUERY_STRING に格納されています。
METHOD=POST の場合には,標準入力に渡されます。
この辺は,C でも Perl でも変わりません。
http://www.tohoho-web.com/wwwcgi3.htm
C で環境変数を読むには,getenv 関数。
標準入力からの読み取りは,stdin に対して fgets したり,getchar を使ったり,お好みで。
http://www.bohyoh.com/CandCPP/C/Library/hindex.h …
> 受け取った文字列をどうやって整数に変換するのか
ここは要求仕様しだいでですね。
例えば,菅直人 1946年10月10日 男,だった場合,どう変換したいですか?
# おみくじなら,ランダムでいいような気もしますが・・・
ご回答ありがとうございます!
また、細かな説明とわざわざURLまでつけてくださってありがとうございます。
参考にさせていただきます。
>受け取った文字列をどうやって整数に変換するのかについて。
できるのであれば生年月日のようにすでに数値であるものはそのまま使いたいですね。
また性別の男、女はラジオボタンにしようと考えているので、男であれば1、女であれば0のようにしたいです。
>おみくじなら、ランダムでいいような気がしますが・・・
私も最初はそう考えていたのですが、ゼミの教授にランダムだと一日の中でやり直しができてしまうからつまらないと言われてしまったので・・・。
ちなみに日によって結果が変わるようにCGIプログラムで当日の日付をとってくるようにしています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# C言語 3 2022/10/04 15:07
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- Ruby 初心者プログラミング 3 2022/10/12 11:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
緯度、経度の 10進法と 60進法...
-
bmp→jpgに、jpg→bmpに
-
10進数をBCDに変換する方法
-
bitmapクラスをiconクラスに変...
-
StrConvの使い方について教えて...
-
VB.NETをJavaに変換するツール...
-
DOSコマンドでの文字コード変換...
-
3のつく数字と3の倍数のみを表...
-
家電製品の電力周波数を変える機械
-
【EXCEL】カナ、ひらがなを英字...
-
VB.NETからJavaに変換するツー...
-
C/C++→JAVAに変換するツール
-
vb.netの型変換について
-
画像ファイル変換(Tiff→PDF)
-
PHPで、日本語からアルファベッ...
-
Excel-VBAのmsgBox()の不思議
-
c++でドル円変換のプラグラム...
-
中国語が文字コード変換で、一...
-
VBA 置き換え後元に戻したい時
-
XML→HTMLに変換したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
緯度、経度の 10進法と 60進法...
-
家電製品の電力周波数を変える機械
-
Mac 乗数の入力方法
-
10進数をBCDに変換する方法
-
bmp→jpgに、jpg→bmpに
-
なぜ通信には16進数文字列が使...
-
画像ファイル変換(Tiff→PDF)
-
シフトJISのCSVファイルをUFT-8...
-
分を時間に変換するプログラム
-
【EXCEL】カナ、ひらがなを英字...
-
C/C++→JAVAに変換するツール
-
c++でmatからvectorへの変換の...
-
UTF8→ShiftJISに変換したいです!
-
VB6からVB2010への変換について
-
C#でのpngからbmpへの変換について
-
StrConvの使い方について教えて...
-
PHPで、日本語からアルファベッ...
-
エクセルVBAの自動変換機能?
-
C++からCへのソース変換について
-
VB.NETをJavaに変換するツール...
おすすめ情報