![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
以下のようなプログラムを書きました。(一部省略)
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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# プログラミングの問題です。写真のプログラムの1から10を下のように入力しましたがプログラムが上手くい 3 2022/07/01 23:31
- その他(プログラミング・Web制作) pythonでDBのカラム名で取得したオブジェクトの値を表示したい 1 2022/05/13 03:41
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Excel(エクセル) EXCEL 行固定列移動 3 2022/04/04 09:27
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
変数の内容がコロコロ変わる、原因を教えてください。
C言語・C++・C#
-
値が変わるのはどうしてでしょうか?
C言語・C++・C#
-
16進数を10進数に簡単に変換する関数は?
C言語・C++・C#
-
-
4
scanfが2回使えない・・・?;
C言語・C++・C#
-
5
C言語で、メモリを解放しないで終わるプログラム
C言語・C++・C#
-
6
変数が勝手に変わります
Visual Basic(VBA)
-
7
C++のfor文について
C言語・C++・C#
-
8
C言語にて構造体のメンバがNULLであるかを判定するサンプルを作成して
C言語・C++・C#
-
9
#include <Windows.h>というヘッダファイルについて
C言語・C++・C#
-
10
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
11
charでの計算?
C言語・C++・C#
-
12
C言語のポインタに直接アドレスを割り振りしたい
C言語・C++・C#
-
13
C言語におけるif文の評価順
C言語・C++・C#
-
14
正負を反転させて出力するプログラム
C言語・C++・C#
-
15
scanf(%s", buf);でスペースを含んだ文字"
C言語・C++・C#
-
16
構造体のメンバをfor文で回したい
C言語・C++・C#
-
17
C++でアボート(Abort)で処理が強制終了してしまう
C言語・C++・C#
-
18
ファイルのアクセス回数について
Access(アクセス)
-
19
EXCELファイルに誰がアクセスしたかを見たい
Access(アクセス)
-
20
【C言語】配列の中に配列を入れたい
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数の値が勝手に変化する原因
-
【JAVA】数字をひし形に出力す...
-
JCLの基本について教えてください
-
ループのとめ方
-
main関数終了時のreturnの意味は?
-
ProC 固定SQLでNULLってどう表...
-
c言語 至急お願い致します
-
_dupenv_s関数でメモリリーク
-
カシオ fx-5800P 測量プログラ...
-
プログラミングの課題で困って...
-
Tiny Basicのプログラムです。。
-
0除算して、落ちるプログラムと...
-
正しい五十音順について
-
Excelで4096点以上のFFTの方法
-
C++ で、「)」が必要 というエ...
-
あるプログラムのコマンドライ...
-
VBAで仕様書は書きますか?
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
Excelに埋め込んだVBAのプログ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【JAVA】数字をひし形に出力す...
-
プログラミング
-
ruby
-
変数の値が勝手に変化する原因
-
JCLの基本について教えてください
-
Fortran90についての質問です。
-
fortran if文
-
3つの整数のうち奇数のみを表示...
-
Sublime Text 3でのFortranプロ...
-
Matlabについて質問2
-
ProC 固定SQLでNULLってどう表...
-
COBOLのピリオド
-
360度を超える角度
-
main関数終了時のreturnの意味は?
-
Visual Basic 三辺の長さ? ...
-
c言語です
-
C言語 バッファについて。
-
c言語のプログラミング 2つの整...
-
_dupenv_s関数でメモリリーク
-
N88basicを用いたGPIB制御
おすすめ情報