新年早々に申し訳ないのですが、タイトルにあるようにscriptファイルを開くということなのですが、エラーがおきて実行できませんでした。
このエラーを消すにはどうすればいいのでしょうか。
それとテキストファイルの場所はあっていますか。
この2つのご解答お願いします。
エラーは下記のものです。
警告 2 warning C4129: ' ' : エスケープ シーケンスとして正しく認識されませんでした。 c:\users\user\documents\visual studio 2013\projects\script\script\script01.cpp 33 1 script
エラー 1 error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. c:\users\user\documents\visual studio 2013\projects\script\script\script01.cpp 30 1 script
scriptファイル場所は下記のとこにあります。
GameProg_2012 → GameProg_2012 → fp(テキストのファイル名です)
コードは下記のものです。
#include <stdio.h>
#include <string.h>
//スクリプトは最大1000 行まで読み込む
#define SCRIPT_MAX_LINE 1000
//スクリプト最大文字数
#define SCRIPT_MAX_STRING_LENGTH 300
typedef struct ScriptInformation_tag {
int maxLineNumber; //スクリプト行数
int currentLine; //現在何行目を実行しているか
const char* filename; //ファイル名
char script[SCRIPT_MAX_LINE][SCRIPT_MAX_STRING_LENGTH];
} ScriptInformation;
//スクリプトファイルを読み込む
//戻り値-1 : 失敗0 : 成功
int loadScript(const char* filename, ScriptInformation* scriptInfo)
{
int pos;
char c;
//スクリプトファイル
FILE* fp;
//スクリプト情報を初期化
memset(scriptInfo, 0, sizeof(ScriptInformation));
//スクリプトファイルを開く
fp = fopen(filename, "r");
if (fp == NULL) {
//ファイル読み込みに失敗
printf("スクリプト%s を読み込めませんでした\ n", filename);
return -1;
}
// s c r i p t 書き込み時に使用
pos = 0;
for (;;) {
//一文字読み込み
c = fgetc(fp);
//ファイルの終わりかどうか
if (feof(fp)) {
break;
}
if (pos >= SCRIPT_MAX_STRING_LENGTH - 1) {
//1 行の文字数が多すぎる
printf("error: 文字数が多すぎます(% d 行目)", scriptInfo->currentLine);
return -1;
}
//改行文字が出てきた場合,次の行へ移動
if (c == '\n') {
//\0 を文字列の最後に付ける
scriptInfo->script[scriptInfo->currentLine][pos] = '\0';
//次の行に移動
scriptInfo->currentLine++;
//書き込み位置を0 にする
pos = 0;
}
else {
//書き込み
scriptInfo->script[scriptInfo->currentLine][pos] = c;
//文字書き込み位置をずらす
pos++;
}
}
//最大行数
scriptInfo->maxLineNumber = scriptInfo->currentLine;
//読み込み中の行を0 にする
scriptInfo->currentLine = 0;
//スクリプトファイル名を設定
scriptInfo->filename = filename;
return 0;
}
int main()
{
int i;
ScriptInformation script;
loadScript("./script.txt", &script);
//10 行目までを表示
for (i = 0; i < 10; i++) {
printf("%d : %s\n", i + 1, script.script[i]);
}
return 0;
}