
以下のようなプログラムを書きました。(一部省略)
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
C言語 配列の長さの上限
C言語・C++・C#
-
5
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
6
C言語初心者の質問失礼します。
C言語・C++・C#
-
7
分割コンパイルの#defineについて
C言語・C++・C#
-
8
戻り値で構造体を返すことは可能でしょうか?
C言語・C++・C#
-
9
構造体のメンバをfor文で回したい
C言語・C++・C#
-
10
C言語にて構造体のメンバがNULLであるかを判定するサンプルを作成して
C言語・C++・C#
-
11
printfの有無で値が変化する
C言語・C++・C#
-
12
c言語のポインタへの文字列入力についてです。
C言語・C++・C#
-
13
セグメントエラー
C言語・C++・C#
-
14
char str[256]の256の意味は?
C言語・C++・C#
-
15
CSVファイルの中で、「 , 」カンマを使いたい
その他(コンピューター・テクノロジー)
-
16
絶対パスの取得について
C言語・C++・C#
-
17
fopenで別ディレクトリにファイルをオープンしたい
C言語・C++・C#
-
18
UpdateData( FALSE); による文字列データの表示更新(VC++6.0)
C言語・C++・C#
-
19
C言語のポインターに関する警告
C言語・C++・C#
-
20
バッチでCSVを処理する時、空の項目があった場合
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JCLの基本について教えてください
-
変数の値が勝手に変化する原因
-
fortran if文
-
Fortran "実引数の型が仮引数の...
-
正しい五十音順について
-
65536は2の何乗なのでしょうか?
-
VBAで仕様書は書きますか?
-
あるプログラムのコマンドライ...
-
エクセルVBA 他の仕事を止...
-
Vba UserFormを前面に出す方法...
-
時間(ミリ秒を含む)の引き算
-
読み込み中にアクセス違反が発...
-
fortranでのNaNについて
-
ドロップダウンリストの文字を...
-
VBAでユーザーフォームが自動的...
-
C++ で、「)」が必要 というエ...
-
ファイルの開き方
-
C言語初心者。静磁場の計算。台...
-
バッチファイルでウインドウを...
-
BASICのプログラムで行列式の積...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数の値が勝手に変化する原因
-
【JAVA】数字をひし形に出力す...
-
Sublime Text 3でのFortranプロ...
-
COBOLのピリオド
-
3つの整数のうち奇数のみを表示...
-
360度を超える角度
-
Fortran "実引数の型が仮引数の...
-
Matlabについて質問2
-
JCLの基本について教えてください
-
C言語の質問です。
-
ProC 固定SQLでNULLってどう表...
-
Fortran90についての質問です。
-
C言語のプログラム
-
素数判定について
-
fortran if文
-
C言語 バッファについて。
-
プロローグ(=Prolog)について質...
-
FORTRAN77のプログラミングを教...
-
Fortranプログラム-if文について
-
不具合が発生(API・C言語)
おすすめ情報