今僕は10日で覚えるc言語という本で学習をさせてもらっています
それでわからないところが出てきてしまったのでどなたか教えてください
お願いします
まずは下のソースを見てください
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int main() {
FILE *fp; //入力ファイルのファイルポインタ
char datafile[] = "itudoko.txt";
int data_max = 100; //各データ数
char *serifu[data_max]; //セリフデータ
char *hito[data_max]; //人データ
char *shita[data_max]; //行動データ
char *shurui[data_max]; //種類データ
char kubun[8], naiyou[256];
int serifu_c= 0, hito_c = 0, shita_c = 0, shurui_c = 0;//各データの数
char buff[512]; //読み込んだ文字列を格納する
int i;
int c;
//入力ファイルをオープンする
if((fp = fopen(datafile, "r")) == NULL) {
printf("ファイルオープンエラー\n");
exit(1);
}
while(fgets(buff, sizeof buff, fp) != NULL){
sscanf(buff, "%s\t%s", kubun, naiyou);
if((strcmp(kubun, "serifu") == 0) && (serifu_c < data_max)) {
serifu[serifu_c] = (char*)malloc(strlen(naiyou) + 1);
strcpy(serifu[serifu_c++], naiyou);
} else if((strcmp(kubun, "hito") == 0) && (hito_c < data_max)) {
hito[hito_c] = (char*)malloc(strlen(naiyou) + 1);
strcpy(hito[hito_c++], naiyou);
} else if((strcmp(kubun, "shita") == 0) && (shita_c < data_max)) {
shita[shita_c] = (char*)malloc(strlen(naiyou) + 1);
strcpy(shita[shita_c++], naiyou);
} else if((strcmp(kubun, "shurui") == 0) && (shurui_c < data_max)) {
shurui[shurui_c] = (char*)malloc(strlen(naiyou) + 1);
strcpy(shurui[shurui_c++], naiyou);
}
}
fclose(fp);
srand(time(NULL));
do {
printf("\nおすすめの1冊・・・\n");
printf("『「%s」\n%sが%s、今話題の%s小説 』\n\n",
serifu[rand()%serifu_c], hito[rand()%hito_c],
shita[rand()%shita_c], shurui[rand()%shurui_c]);
printf("続ける:Enter 終了:Ctrl+z Enter > ");
} while((c = getchar()) != EOF);
for(i = 0; i < serifu_c; i++) { free(serifu[i]); }
for(i = 0; i < hito_c; i++) { free(hito[i]); }
for(i = 0; i < shita_c; i++) { free(shita[i]); }
for(i = 0; i < shurui_c; i++) { free(shurui[i]); }
return 0;
}
ちなみにitudoko.txtはメモ帳です
serifu あなたを待っていた
serifu いつもありがとう・・・・
serifu こ、これが究極のおにぎりか・・・
hito 全米中
hito 全ての日本人
shita 涙した
shita 笑った
shurui 感動
shurui コメディ
それでコンパイラはvisual c++ 2008でこのソースを実行したのですが
エラーがこのように出てしまいました
1>------ ビルド開始: プロジェクト: いつどこでゲーム, 構成: Release Win32 ------
1>コンパイルしています...
1>itudokogame.cpp
1>.\itudokogame.cpp(10) : error C2057: 定数式が必要です。
1>.\itudokogame.cpp(10) : error C2466: サイズが 0 の配列を割り当てまたは宣言しようとしました。
1>.\itudokogame.cpp(10) : error C2133: 'serifu' : サイズが不明です。
1>.\itudokogame.cpp(11) : error C2057: 定数式が必要です。
1>.\itudokogame.cpp(11) : error C2466: サイズが 0 の配列を割り当てまたは宣言しようとしました。
1>.\itudokogame.cpp(11) : error C2133: 'hito' : サイズが不明です。
1>.\itudokogame.cpp(12) : error C2057: 定数式が必要です。
1>.\itudokogame.cpp(12) : error C2466: サイズが 0 の配列を割り当てまたは宣言しようとしました。
1>.\itudokogame.cpp(12) : error C2133: 'shita' : サイズが不明です。
1>.\itudokogame.cpp(13) : error C2057: 定数式が必要です。
1>.\itudokogame.cpp(13) : error C2466: サイズが 0 の配列を割り当てまたは宣言しようとしました。
1>.\itudokogame.cpp(13) : error C2133: 'shurui' : サイズが不明です。
1>.\itudokogame.cpp(29) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\string.h(74) : 'strcpy' の宣言を確認してください。
1>.\itudokogame.cpp(32) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\string.h(74) : 'strcpy' の宣言を確認してください。
1>.\itudokogame.cpp(35) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\string.h(74) : 'strcpy' の宣言を確認してください。
1>.\itudokogame.cpp(38) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\string.h(74) : 'strcpy' の宣言を確認してください。
1>.\itudokogame.cpp(43) : warning C4244: '引数' : 'time_t' から 'unsigned int' への変換です。データが失われる可能性があります。
1>いつどこでゲーム - エラー 12、警告 5
まず上記に書いてある
1>.\itudokogame.cpp(10) : error C2057: 定数式が必要です。
と
1>.\itudokogame.cpp(10) : error C2466: サイズが 0 の配列を割り当てまたは宣言しようとしました。
と
1>.\itudokogame.cpp(10) : error C2133: 'serifu' : サイズが不明です。
は上のソースのどこを改善したらエラーは消えるのでしょうか?
どなたか教えてください
お願いします