C 为什么可以';t文件指针可以';你不读文件里的内容吗?
我试图从yh.dat文件中获取内容,该文件的文本类似于“456 78921”以及其他由C编写的内容。但是当我尝试调试代码时,文件指针不是空的(0x00428af8),并且_ptr和_base是空的(0x000000)。他们说“CXX0030:错误:表达式无法计算”。如何解决它C 为什么可以';t文件指针可以';你不读文件里的内容吗?,c,file,pointers,C,File,Pointers,我试图从yh.dat文件中获取内容,该文件的文本类似于“456 78921”以及其他由C编写的内容。但是当我尝试调试代码时,文件指针不是空的(0x00428af8),并且_ptr和_base是空的(0x000000)。他们说“CXX0030:错误:表达式无法计算”。如何解决它 int main(){ FILE *fp=NULL; fp=fopen("yh.dat","rb"); if(fp==NULL) { printf("error"); exi
int main(){
FILE *fp=NULL;
fp=fopen("yh.dat","rb");
if(fp==NULL)
{
printf("error");
exit(0);
}
return 0;
}
为了允许您更改文件缓冲,在您发出第一次读取之前,C不会为文件设置缓冲区。因此,在尝试至少一次读取之前,文件*指向的任何结构的成员都处于半初始化状态是正常的
您是否尝试过读取数据以查看其是否有效?您的问题“如何解决它”意味着存在问题。
文件
对象的内容未指定,并且在不同的实现中有所不同。如果fp
上的操作按预期工作,那么就没有理由担心fp->\u ptr
等(当然,除了空闲的好奇心)。您正在将num
的值传递给fscanf
。这和它有什么关系?@NobToJuneau:它至少不会阻止你阅读一些东西,但是而(!feof(whatever))
基本上总是错误的。我会尝试一些简单的方法,比如:intch;虽然((ch=getc(fp)!=EOF)putchar(ch);
@DavidSchwartz很抱歉,我忘记了&before num,该代码假定feof
可以预测未来,并告诉您后续读取将失败,因此您不应该这样做。feof
不是这样工作的。@NobToJuneau还有一个perror(0)over printf(“错误”)主要是提供更多信息。也可以使用ferror()。