int *ptr = malloc~
while (fscanf(fp, "%d", ptr++) != EOF)
;
假设有足够的内存分配给 ptr,当函数 enouters EOF 指示什么时,存储在 *ptr 中的值是什么?我尝试在Visual Studio中使用调试工具,发现*ptr的值是-33686019这是垃圾值吗?还是EOF?
当scanf命中EOF时,ptr
指向的地址上不存储任何值。同样,如果它返回 0。这就是为什么迭代输入的规范方式必须检查 scanf 返回值,例如
if (fscanf(fp, "%d", &ptr_to_int) == 1) {
/* successful conversion */
}
else {
/* Unsuccesful conversion or EOF; use feof() to test which. */
}