前提・実現したいこと
同じフォルダに入っている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に変化しました。
> test.batに書いてある変数の値
test.batを質問に記載ください。
また、質問記載のプログラムを実行し、test.batをで読み込んだ際に、どういう値を取得したいのか
具体例を質問に記載ください。
明記させて頂きました。
> test.batの中身は数値の8です
え?!test.batは1文字8だけですか?
変数は?batなのでバッチファイルだと思い、以下のように書かれているのかと思ってました。
[TOF - test.bat]
@echo off
set val=8
[EOF]
バッチファイルには「Seen = 8;」と書いていました。
読み込んだ際に変数Seenに8を代入したいため、「Seen = 8;」と書きました。
Seen = 8と書きなおしましたが、その場合でもスペースキーを押すと変数Seenがとんでもなく大きな値になります。
「バッチファイル」と聞くとWindowsユーザーやプログラマーにとってはコマンドプロンプト(CMD.EXE)のようなコマンドプロセッサーで動作させる*.BATや*.CMDファイルを想起するのですが、本質問にとっては、その範囲外のことなのでしょうか。(DXライブラリ絡みだとしても、謎です)
DXライブラリとの関連がないのならタグを外してください。
...ん? マルチポストか?
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11215884346
https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4741
おやこれは carnage0216 さんではありませんか。
複数IDの保有は禁じられているので
「よほどの阿呆か不届き者でないかぎり」
それはないかと。
そういう人もいるんですね。気を付けないとです!
確かに、もし同じ人だとしたらよほどの阿呆で不届き者ですね。
carnage0216 という人は自分で自分のことを過大評価しすぎているのか、何度もバレバレの三文芝居を繰り返してる道化ですが、さすがにまたやったとしたら、もうどうしようもない弩級の阿呆と言わざるを得ません。ちょっと手加減なしでかわいがってあげたくなりますね。
ところでR-ogiuraさん、あなたのプロフィールに貼られたリンクは何かの間違いですか?
間違いではないですね。ある方から張るように言われました。
特に理由はわかりませんでしたが張っても問題なさそうな内容だったので張りました。
問題ないとなぜ思ったのかわかりませんが、ここで質問せずそのある方に聞けばいいんじゃないですかね。
気を付け'だいと'です、なんつって、ね。
気を付け'ナイト'です、なんつって、ね。
なぜそのある方に聞かないんでしょうか?
そこに書いてあるエピステーメーが誰のことかわからないわけではないでしょう?
黙殺ということは、わかっていてわざと喧嘩を売っているようですね。
R-ogiuraさんは僕に敵意があると見做してよろしいですか?
そうであるならそれ相応の対応を致しますし、
そうでなければ僕個人的には甚だ不愉快なので消してもらえると有難いです。
張ったものはそんなにやばい物なのでしょうか!?
誰が誰に対して何を言っているかさっぱりわからなかったので張ったのですが、、、
そこまで愚かなのですか?
carnage0216 さんと同レベルではありませんか。
「誰が誰に対して何を言っているかさっぱりわからなかった」のなら
僕個人的には甚だ不愉快なので消してもらえると有難いです。
# あなた、"さっぱりわからん"ものをプロフィールに書くんですか?
わかりました。
なにに対して「わかりました。」か?
この記事はそんなにやましい物なのでしょうか?
そんなに必死になるということは事実である可能性もあるため消しにくいですね。
ではあなたには"しかるべく"接します。
で、なにに対して「わかりました。」か?
5チャンネルで私のことに関して色々書いているのがあなたと理解しました。
https://medaka.5ch.net/test/read.cgi/prog/1571795050/
なにに対して「わかりました。」なのですか?
回答5件
あなたの回答
tips
プレビュー