
以下のようなプログラムを書きました。(一部省略)
data2[8] = '\0'; の行が実行された後になぜかgの値が1から0に変化してしまいました。
勝手に変数の値が変化しており、原因が把握できていません。
この原因として考えられることがあれば教えていただけないでしょうか?
よろしくお願いします
以下、書いたプログラムです。
char data2[8];
FILE* fp;
int g;
int main{
fread(data2,8,1,fp);
data2[8] = '\0'; ←ここでgの値が変化します。
fread(data2,8,1,fp);
data2[8] = '\0';
return 0;
}
No.3
- 回答日時:
皆さんがおっしゃるように,data2[8]は間違いで,こうしたければ
char data2[9]; <=9バイト確保
fread(data2,8,1,fp); <=8バイト読み込み
data2[8]='\0'; <= 9バイト目をNULLに.
とすべきでしょう.
プログラムメモリ上では,data2が8バイト,その直後にg が割り当てられているようで,
data2[8]はgの4バイトの一部にあたるのだと思います.だから,gの値が変わってしまう.
自分のプログラムを破壊しているということですね.
この場合,自プログラム内のメモリにアクセスしているのでOSはエラーを返さないのです.
もちろん,破壊した部分がデータではなく,プログラム部分であれば,破壊されたプログラムによってCPUがそれを実行できない場合は,エラーが起こりプログラムが異常終了します.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
変数の内容がコロコロ変わる、原因を教えてください。
C言語・C++・C#
-
値が変わるのはどうしてでしょうか?
C言語・C++・C#
-
(C言語)めちゃくちゃな値になってしまいます。
C言語・C++・C#
-
-
4
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
5
char str[256]の256の意味は?
C言語・C++・C#
-
6
C言語 配列の長さの上限
C言語・C++・C#
-
7
C言語にて構造体のメンバがNULLであるかを判定するサンプルを作成して
C言語・C++・C#
-
8
main.c:7:43: warning: implicit declaration of func
C言語・C++・C#
-
9
改行を読み飛ばす
C言語・C++・C#
-
10
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
11
printfの有無で値が変化する
C言語・C++・C#
-
12
C言語初心者の質問失礼します。
C言語・C++・C#
-
13
読み込み中にアクセス違反が発生しました、と出ます。これを回避することは
C言語・C++・C#
-
14
Winmerge ファイルの中身は同じなのに黄色くなる
その他(OS)
-
15
c言語でイベントフラグを使った制御をしたいんですけど set_flg(FLG,0x01) で設定した
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数の値が勝手に変化する原因
-
_dupenv_s関数でメモリリーク
-
ファイルの開き方
-
VBAで関数をつくる
-
あるプログラムのコマンドライ...
-
正しい五十音順について
-
65536は2の何乗なのでしょうか?
-
XnViewにwebpを「いつも開く」...
-
C++でアボート(Abort)で処理が...
-
Excelで4096点以上のFFTの方法
-
引き放し法による除算アルゴリ...
-
PICマイコンのコピー(クローン...
-
Excelに埋め込んだVBAのプログ...
-
CreateObject関数について
-
OS入ってる機器のソフト・アプ...
-
加速度から変位の変換について
-
VBAで仕様書は書きますか?
-
画像を読み込むのと取り込むの...
-
「Outlookが他のプログラムによ...
-
フローチャートの菱形が狭い。。。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【JAVA】数字をひし形に出力す...
-
変数の値が勝手に変化する原因
-
COBOLのピリオド
-
C言語 バッファについて。
-
Sublime Text 3でのFortranプロ...
-
360度を超える角度
-
fortran if文
-
VBAで試験項目の条件規格を取り...
-
c言語プログラミング
-
Fortran "実引数の型が仮引数の...
-
Matlabについて質問2
-
Javaの配列プログラムについて
-
N88basicを用いたGPIB制御
-
ruby
-
プログラミング(自由課題)
-
JCLの基本について教えてください
-
main関数終了時のreturnの意味は?
-
プログラミング
-
3つの整数のうち奇数のみを表示...
-
カシオ fx-5800P 測量プログラ...
おすすめ情報