簡単掲示板を作成しようとしているのですが
コンパイルがうまくいって実行するときになると
スクリプトエラーになってしまいます。
int main()
{
char *data;
FILE *fp;
printf("Content-type: text/html\n\n");
printf("<html><head><title>C-CGI 簡単掲示板</title></head>\n");
printf("<body>\n");
printf("<font color=\"red\">C-CGI 簡単掲示板\n");
printf("<hr>\n");
fp = fopen("./logs.cgi","r");
while(fgets(data,1024,fp) != NULL)
{
printf("%s",data);
}
fclose(fp);
}
まだ作成段階で今のところこんな感じで書いてるのですが。。。
fp = fopen("./logs.cgi","r");
while(fgets(data,1024,fp) != NULL)
{
printf("%s",data);
}
fclose(fp);
この部分を消すとちゃんと表示されますが
ファイル操作をするとスクリプトエラーになります。
どういうことでしょうか?
サーバーはXreaをレンタルして使用しています。
C言語でCGIやってます。
Re:C言語でCGIやってます。
それから追記なんですが、
HTML出力のところも毎回
printfを使うのめんどうなので
sprintf(buf,"Content-type: text/html\n\n"
"<html>\n"
"<head>・・・・・\n");
という感じで書いて
printf("%s",buf);
とやるのですが、これもスクリプトエラーになります。
HTML出力のところも毎回
printfを使うのめんどうなので
sprintf(buf,"Content-type: text/html\n\n"
"<html>\n"
"<head>・・・・・\n");
という感じで書いて
printf("%s",buf);
とやるのですが、これもスクリプトエラーになります。
Re:C言語でCGIやってます。
>まず、コンパイル環境はサーバー上ですか?
はい。サーバー上でコンパイルしています。
Perlで
system("gcc ./bbs.c -o bbs.cgi");
とやってコンパイルしています。
パーミッションは755です。
はい。サーバー上でコンパイルしています。
Perlで
system("gcc ./bbs.c -o bbs.cgi");
とやってコンパイルしています。
パーミッションは755です。
Re:C言語でCGIやってます。
なるほど、シェルを開かなくてもそうやればコンパイル出来るんですね^^;
ところで、ファイルポインタは使う前にNULLかどうかチェックするべきだと思います。
fp = fopen("./logs.cgi","r");
if( fp == NULL ){
printf("open failed\n");
return 0;
}
while(fgets(data,1024,fp) != NULL)
みたいな。
きっとNULLなんだと思いますが、どうなります?
ところで、ファイルポインタは使う前にNULLかどうかチェックするべきだと思います。
fp = fopen("./logs.cgi","r");
if( fp == NULL ){
printf("open failed\n");
return 0;
}
while(fgets(data,1024,fp) != NULL)
みたいな。
きっとNULLなんだと思いますが、どうなります?
Re:C言語でCGIやってます。
fgetsで読み込む前にdataが初期化されていないせいではないでしょうか?
No:64635のsprintfのバッファも同じ問題なのでは?
No:64635については文字列を並べると繋がるので
printf(
"Content-type: text/html\n\n"
"<html>\n"
"<head>・・・・・\n"
);
のようにするのはどうでしょう。
No:64635のsprintfのバッファも同じ問題なのでは?
No:64635については文字列を並べると繋がるので
printf(
"Content-type: text/html\n\n"
"<html>\n"
"<head>・・・・・\n"
);
のようにするのはどうでしょう。
Re:C言語でCGIやってます。
おお!!
ありがとうございます^^v
無事にできました。
領域確保しないとダメだったんですね>_<
data[1024];
とすることで解決でした。
ありがとうございます^^v
無事にできました。
領域確保しないとダメだったんですね>_<
data[1024];
とすることで解決でした。