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

初投稿になります。

私は現在C言語とCGIを使ったWebおみくじを作っています。

内容としては、入力フォームに入力された氏名、生年月日、性別の文字列を受け取り、それを整数に変換します。
そして変換された整数を計算することで20種類ほどの結果を返したいと考えています。

しかし、C言語によるCGIはperlなどのように資料が多くないため、あまり似たような構成のプログラムがなくあまり理解できていません。
Googleなどでc cgi などで検索して、見ることができるものは全て見ましたが、やはり理解できていない現状です。

特に、フォームに入力されたデータをcgiプログラムでどう受けるのか、また受け取った文字列をどうやって整数に変換するのかが分かりません。

もし、わかる方がいましたら、よろしければご教授願います。

また、コンパイルはgccで行っています。

A 回答 (3件)

> 生年月日のようにすでに数値であるものはそのまま使いたい



文字列(数字)から整数型への変換は,strtol や sscanf などが使えます。
その前に,生年月日の部分を切り出す処理は必要です。

しかし,「ランダムだと一日の中でやり直しができてしまうからつまらない」
のを回避することだけが目的なら,氏名や,生年月日,性別の意味を解釈する必要はないので,
受け取った文字列をそのまま,簡単なハッシュ関数に突っ込んでしまってもいいでしょう。
各文字のコードを全部足して,最後に 20 で割った余りを取るとか,そんなんで十分やと思います。
    • good
    • 0
この回答へのお礼

たしかにそのやり方でできるならその方が簡単そうですね!

ただハッシュ関数というのが初めて聞く言葉なのでその辺は調べてみます。

本当に助かりました。ありがとうございます!

お礼日時:2011/01/05 21:04

C用のCGIライブラリです


http://www.boutell.com/cgic/
フォームからのデータ受け取りに使えると思います
    • good
    • 0
この回答へのお礼

ありがとうございます!
助かります。

お礼日時:2011/01/05 17:42

> フォームに入力されたデータを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日 男,だった場合,どう変換したいですか?

# おみくじなら,ランダムでいいような気もしますが・・・
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!


また、細かな説明とわざわざURLまでつけてくださってありがとうございます。
参考にさせていただきます。

>受け取った文字列をどうやって整数に変換するのかについて。

できるのであれば生年月日のようにすでに数値であるものはそのまま使いたいですね。
また性別の男、女はラジオボタンにしようと考えているので、男であれば1、女であれば0のようにしたいです。

>おみくじなら、ランダムでいいような気がしますが・・・

私も最初はそう考えていたのですが、ゼミの教授にランダムだと一日の中でやり直しができてしまうからつまらないと言われてしまったので・・・。

ちなみに日によって結果が変わるようにCGIプログラムで当日の日付をとってくるようにしています。

お礼日時:2011/01/05 17:26

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