while (fgets(buf, 256, stdin) != NULL)でfgetsで読み込めなかった場合NULLポインタを返してほしいのですが、なぜか何も入力しなくてもアドレスが返ってきしまいます。これはどういう不具合でしょうか?
該当コード
c
1#include <stdio.h> 2#include <stdlib.h> 3 4int main(void) 5{ 6 char buf[256]; 7 int size = 0; 8 int *var_ary = NULL; 9 int i; 10 11 while (fgets(buf, 256, stdin) != NULL) 12 { 13 size++; 14 var_ary = realloc(var_ary, sizeof(int) * size); 15 printf("%p\n", &buf[size - 1]); 16 sscanf(buf, "%d", &var_ary[size - 1]); 17 } 18 19 for (i = 0; i < size; i++) 20 { 21 printf("var_ary[%d] = %d\n", i, var_ary[i]); 22 } 23 24 return 0; 25} 26
出力結果
1
0x7ff7b5f0b620
0x7ff7b5f0b621
> 何も入力しなくてもアドレスが返ってきしまいます。
どの挙動から、そう判断したのですか?

出力結果の空白の行は何も入力せずenterを押したところで判断しました。。ここではNULLが返されると思うのですが予測通りにはいきませんでした。

回答2件
あなたの回答
tips
プレビュー