C言語とCGIでWebおみくじの製作方法

このQ&Aのポイント
  • C言語とCGIを使ったWebおみくじの製作方法について紹介します。
  • 入力フォームから受け取った文字列を整数に変換し、計算して結果を返すことで20種類のおみくじ結果を表示します。
  • C言語に対するCGIの資料が少ないため、理解が難しい部分もありますが、この記事で詳しく解説します。
回答を見る
  • ベストアンサー

C言語とCGIによるおみくじの製作

初投稿になります。 私は現在C言語とCGIを使ったWebおみくじを作っています。 内容としては、入力フォームに入力された氏名、生年月日、性別の文字列を受け取り、それを整数に変換します。 そして変換された整数を計算することで20種類ほどの結果を返したいと考えています。 しかし、C言語によるCGIはperlなどのように資料が多くないため、あまり似たような構成のプログラムがなくあまり理解できていません。 Googleなどでc cgi などで検索して、見ることができるものは全て見ましたが、やはり理解できていない現状です。 特に、フォームに入力されたデータをcgiプログラムでどう受けるのか、また受け取った文字列をどうやって整数に変換するのかが分かりません。 もし、わかる方がいましたら、よろしければご教授願います。 また、コンパイルはgccで行っています。

  • CGI
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
noname#137556
noname#137556
回答No.3

> 生年月日のようにすでに数値であるものはそのまま使いたい 文字列(数字)から整数型への変換は,strtol や sscanf などが使えます。 その前に,生年月日の部分を切り出す処理は必要です。 しかし,「ランダムだと一日の中でやり直しができてしまうからつまらない」 のを回避することだけが目的なら,氏名や,生年月日,性別の意味を解釈する必要はないので, 受け取った文字列をそのまま,簡単なハッシュ関数に突っ込んでしまってもいいでしょう。 各文字のコードを全部足して,最後に 20 で割った余りを取るとか,そんなんで十分やと思います。

Euphor1c
質問者

お礼

たしかにそのやり方でできるならその方が簡単そうですね! ただハッシュ関数というのが初めて聞く言葉なのでその辺は調べてみます。 本当に助かりました。ありがとうございます!

その他の回答 (2)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

C用のCGIライブラリです http://www.boutell.com/cgic/ フォームからのデータ受け取りに使えると思います

Euphor1c
質問者

お礼

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

noname#137556
noname#137556
回答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.html > 受け取った文字列をどうやって整数に変換するのか ここは要求仕様しだいでですね。 例えば,菅直人 1946年10月10日 男,だった場合,どう変換したいですか? # おみくじなら,ランダムでいいような気もしますが・・・

Euphor1c
質問者

お礼

ご回答ありがとうございます! また、細かな説明とわざわざURLまでつけてくださってありがとうございます。 参考にさせていただきます。 >受け取った文字列をどうやって整数に変換するのかについて。 できるのであれば生年月日のようにすでに数値であるものはそのまま使いたいですね。 また性別の男、女はラジオボタンにしようと考えているので、男であれば1、女であれば0のようにしたいです。 >おみくじなら、ランダムでいいような気がしますが・・・ 私も最初はそう考えていたのですが、ゼミの教授にランダムだと一日の中でやり直しができてしまうからつまらないと言われてしまったので・・・。 ちなみに日によって結果が変わるようにCGIプログラムで当日の日付をとってくるようにしています。

関連するQ&A

  • C言語の文字列操作について

    C言語について質問です。 整数を入力させ、その入力された整数に’1’が含まれているかどうかを調べるプログラムを作りたいのですが、うまくできません。 文字列操作を使えばよいのですかね? 可能であればプログラムを書いていただきたいです。

  • コンパイルされたCGI(C言語)を別サーバで動かす

    C言語にて簡単なCGIを作成しました。 gcc -o xxx.cgi xxx.c コンパイルをするとそのサーバでは問題なく動きます。 コンパイルしたCGIファイルを同じ環境の別サーバに 持っていくとInternalServerErrorとなり実行できません。 パーミッションもディレクトリ構造もApacheの設定も サーバ名、IPアドレスを除いて同じ設定です。 これは動作させるサーバ毎にコンパイルする必要が あるものなのでしょうか?もしサーバ毎にコンパイルする 必要があるのであればそれはどうしてなのでしょうか? もしくはなにか間違っているのでしょうか? お手数ですが、お分かりになる方、お教えください。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • C言語の整数の判別

    最近C言語の勉強を始めたのですが、 C言語で、整数だけの入力を許可してそれ以外(文字等)が入力された場合は整数を入力して下さいというメッセージにとばすプログラムを作りたいのですがどうも作り方が良く分からず困っています、いったいどのように作れば良いでしょうか?? 宜しくお願いいたします!

  • C言語とC++言語

    C言語でコンパイルできC++でコンパイルできないプログラムとその逆でC++でコンパイルできC言語でコンパイルできないプログラムを教えてください。よろしく

  • c言語について、質問します。

    c言語について、質問します。 環境設定を行いましたが、 コンパイルが何度、やってもできません。 c:?source>gcc -o sample sample.c と入力すると、 gcc:installation problem, cannot exec cc1':No such file or directory とでます。 成功したら、このような文字はでないとかいてあるのですが、どうすればよろしいですか?

  • C言語CGIの一括コンパイルの方法

    10年くらい前に作ったゲームの復活を考えています。 当時ledhat7.1上で展開していたゲームをSentOS上で再開します。 ゲームはC言語で出来ていますが、作った本人が手を付けることができません。 そこで、当方が10年前の姿にまでは持っていこうと考えています。 いろいろ調べていくと、 「C言語によるCGIプログラムは、それを動かそうとする サーバー上でソースファイルをコンパイルする必要があります。 他のマシンでコンパイルしたCGIプログラムをそのまま持って来ても、動かない 可能性の方が大きいです。ご注意下さい。」 という記述を見つけました。 全部、コンパイルし直す必要がありそうです。 当方の現在の環境は下記の通りです。 サーバー  自宅にあり。直接接続可能 もちろんSSHも可 CGI の数 178個 ディレクトリは40個くらいに分かれている コンパイル前のC言語ファイルは「.c ファイル」として 保存されている ひとつひとつコンパイルしていったのでは、1ケ月くらい 掛かりそうです。 一括コンパイルのような方法はありませんでしょうか? 一括でなくとも、ディレクトリごとでも構いません。 宜しくお願い致します。

  • C言語のCGIが編集できません

    フリー配布のC言語で書かれたチャットのCGIをダウンロードしたのですが、エディタで開くと テキスト中にNULL文字が含まれています! この文字はメモ帳++で強制的に削除されます。 と警告がでます。そして開くと文字化けをしたようになってしまいます。 そのままの状態でアップロードすると、404エラーが出ます。 別のプログラムでCGIのエラーチェックをすると、 Unrecognized character \x7F at (eval 1) line 1. と出るのですが、さっぱりわかりません・・・。 恥ずかしいのですがC言語の知識が全くないので、C言語についてもアドバイスをいただけるととても嬉しいです。

    • ベストアンサー
    • CGI
  • C言語

    課題なんですが、C言語で 「文字列と正数nをキーボードから入力して、1行n文字で改行するプログラム」 をつくりたいのですが、わかりません。どうすればよいのですか?

  • C言語でCGI

    C言語でCGIをやるにはサーバがtelnetを使えないと絶対だめですか? たとえばローカルのLINUX環境でコンパイルしてそれをFTPでサーバにアップロードする方法では出来ないでしょうか?何か方法があれば教えてください。

    • ベストアンサー
    • CGI
  • LinuxにてC言語を作成が、変換が出来ません。

    LinuxにてC言語を作成が、変換が出来ません。 gccにてコンパイルを行っていますが、半角カナから全角カナの変換が上手く出来ません。 StrConvみたいな関数があれば教えて下さい。 宜しくお願いします。