前提・実現したいこと
同じフォルダに入っているtest.batに書いてある変数の値をキースペースを押したときに読み込みたいのですがうまくいきません。あと何を付け足せばいいのでしょうか。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
if (Key[KEY_INPUT_SPACE] == 1) { FILE* fp; char filename[] = "test.bat"; int buf_w[1], buf_r[1]; int i; tai = 0; for (i = 0; i < 1; i++) buf_w[i] = (i + 1); if (!(fp = fopen(filename, "wb"))) return; if (fwrite(buf_w, sizeof(int), 1, fp) != 1) { fclose(fp); return; } fclose(fp); if (!(fp = fopen(filename, "rb"))) return; if (fwrite(buf_r, sizeof(int), 1, fp) != 1) { fclose(fp); return; } fclose(fp); Seen = buf_r[i];//batファイルの一行目に読み込んだ値を変数Seenに代入する
試したこと
debugを行うと変数iは‐1でした。0に設定したはずなのになぜでしょうか。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
編集
あの後以下のように書き直しました。
if (Key[KEY_INPUT_SPACE] == 1) { if (!(fp = fopen(filename, "rb"))) return; if (fwrite(buf_r, sizeof(int), 1, fp) != 1) { fclose(fp); return; } fclose(fp); Seen = buf_r[yomikomi]; }
test.batの中身は数値の8です。
変数iは名前をyomikomiに変えました。実行時の値はyomikomiもbuf_r[yomikomi]も0です。
また初期化のためにint buf_r[1] = { 0 };と書きましたが「初期化されていないメモリbuf_rを使っていますと言われます。
FILE* fp; char filename[] = "test.bat"; int buf_r[1] = { 0 }; int yomikomi = 0;
実行ファイルを開き、スペースキーを押しましたところyomikomiもbuf_r[yomikomi]も0のままで、変数Seenも0のままです。
編集2
if (Key[KEY_INPUT_SPACE] == 1) { if (!(fp = fopen(filename, "rb"))) return; if (fread(buf_r, sizeof(int), 1, fp) != 1) { fclose(fp); return; } fclose(fp); Seen = buf_r[yomikomi]; } }
のように書き直し、バッチファイルの内容は
Seen = 8;
と書きました。実行してスペースキーを押すとSeenの値が変化しました。
しかし8に変化したのではなく、とんでもなく大きな数値1852138835に変化しました。
回答5件
あなたの回答
tips
プレビュー