int *ptr = malloc~
while (fscanf(fp, "%d", ptr++) != EOF)
;
假设有足够的内存分配给ptr, 当功能鼓励EOF指示时,* ptr中存储的值是多少? 我尝试在Visual Studio中使用调试工具,发现* ptr的值是-33686019 这是垃圾值吗?还是EOF?
答案 0 :(得分:3)
当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. */
}