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

先週から派遣社員として、モバイルのサイトのCGIをC言語(GLib)で作成する仕事についたのですが、2年前までVBを中心とした開発しかやったことがなく、今回2年ぶりに現場復帰したばかりです。いまいち以下のことが理解できないのです。

1、値の引渡しの方法がわからない。単なプログラムすらもかけない

2、コンテキストがよくわからない

3、ハッシュテーブルとリスト型に変換

4、大まかな流れがわかっていないのかもしれません。

こんなお馬鹿な質問しかできませんが、お勧めのサイトか簡単なサンプルプログラムとかいただけたら幸いです。

A 回答 (1件)

> 1、値の引渡しの方法がわからない


何と何との間の値の引渡しなのでしょう?

携帯とCGI の間というのであれば、携帯に出力する
HTML の中で
<form action="hogehoge.cgi" method="post">
<input type="hidden" name="var_name" value="var_value">
</form>
のように form を作成し、
C 言語の CGI の方で、標準入力から

int length = atoi( getenv("CONTENT_LENGTH") );
char* buf = (char*)malloc(sizeof(char)*(length+1));
int n = fread( buf, 1, length, stdin );
buf[n] = '\0';

よみとれば buf に var_name=var_value という形式で
値を引き渡すことができます。

form の mathod に get を使った場合
int main( int argc, char* argv[] )
の argv に入るということもあります。

> 2、コンテキストがよくわからない
何の「コンテキスト」なんでしょう?

http://ew.hitachi-system.co.jp/w/E382B3E383B3E38 …
の意味で解釈しましたけど、いきなり

2、文脈がよくわからない
って言われてもですね・・・、何の文脈が分からないんですか?

> 3、ハッシュテーブルとリスト型に変換
何をハッシュやリストに変換するのでしょう?

仮に携帯からの送られてくるデータをハッシュに
変換するのであれば、

char sz_key[] = "var_name";
char sz_value[] = "var_value";

GHashTable* hash_table = g_hash_table_new(NULL, NULL);
g_hash_table_insert(hash_table, sz_key, sz_value);

いったん、文字列型(char[]) に格納してから
g_hash_table_insert にてハッシュに挿入すればいいです。

> 4、大まかな流れがわかっていないのかもしれません。

1. FORM から送られてくるデータを受け取る
2. そのデータを元に、なんなからの処理をする
3. 結果を HTML として出力する

以上が大まかな流れです。

一番小さい C 言語による CGI プログラムは

#include<stdio.h>
int main(void)
{
printf("Content-type: text/html\n\n");
printf("<html><body>Hello CGI by C.</body></html>");
}

はい。ここからがんばってください。

------
え~、VB という言語は、ポインターという概念が
表面に出てこない言語なので、C で CGI を作成する
ことを考えた場合、プログラム完全初心者と思われた方が
よろしいかと思います。

正直に申しまして、上記のような質問をしている段階で
あるならば、かなり真剣に勉強しないと開発は出来ない
と思います。

google で C言語 CGI とキーワードと入力すると
いくつもWeb ページがヒットしました。
よさげなページをピックアップしましたので
それらの解説ページをよく読み、本屋で C 言語による
CGI 作成の本を購入されよく読み、勉強してください。

http://www2k.biglobe.ne.jp/~motoi/cdecgi02.html

http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPIN …

http://www.din.or.jp/~raelian/cgi_formiddle.html

http://mewc.to/CGI/howto/
    • good
    • 0

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