次のコードの後にいくつかのソケット接続コードを追加すると、この問題が発生します。fp
データの読み取り中 (4 行目) にメモリ アドレスを指しているのに、デバッガ (gdb) がif
ブロックに到達したときに、fp
ポインタが 0x0 を指しているだけの理由は何でしょうか。
#define CHANNELS_PER_IOM 25
...
int OldValues[CHANNELS_PER_IOM];
FILE * fp;
FILE * fp_t;
int buff;
int i;
fp = fopen("/windcom/tmp/dout_values", "r");
fp_t = fopen("/windcom/tmp/dout_values.tmp", "w");
i = 0;
while(fp && fscanf(fp, "%d\n", &buff) == 1) // fp is pointing some address here.
{
i++;
OldValues[i-1] = buff;
//printf("%d %d \n", OldValues[i-1], buff);
}
if(!fp) //fp is pointing 0x0 here.
{
for(i=0; i<CHANNELS_PER_IOM; i++)
{
OldValues[i] = 0;
}
}