如果我评论fprintf(pf,"1111");
该exe将崩溃,如果我保留它,我会得到2/3/2011(仅第一条记录)。如果我尝试关闭该文件,exe也会崩溃。
fscanf 是否将行末尾检测为文件末尾并读取 null?
我也尝试了 close(*pf),它仍然崩溃。
fprintf 不应该在最终代码中使用,我不是故意使用它,但是当我使用它时,我观察到 exe 成功读取了第一行
Data* d;
fscanf(pf,"%d",&n);
d=calloc(n,sizeof(Data* ));
for(i=0;i<n;i++){
if(fscanf(pf,"%d/%d/%d",&(d[i].zi),&(d[i].luna),&(d[i].an))!=3) break;
printf("%d/%d/%d ",d[i].zi,d[i].luna,d[i].an);
// fprintf(pf,"1111"); with this I observed that first data can be read
}
fclose(pf);
输入
3
2/3/2011
2/2/2012
2/2/2016
最佳答案
欢迎使用 C 语言编程。
在 C 语言中,循环的写法如下:
for( i = 0; i < n; i++ )
不是像这样:
for( i = 1; i <= n; i++ )
关于c - 函数 fscanf 首次使用后使应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41707426/