gpt4 book ai didi

找不到函数 fseek() 有什么问题

转载 作者:行者123 更新时间:2023-11-30 17:14:56 26 4
gpt4 key购买 nike

我写了这段代码,函数 fseek() 似乎有问题。因为它会影响文本文件的读取。它使函数 fscanf() 从文件中读取诸如垃圾和错误数据之类的内容。我的文件只包含 float 。

FILE *fptr;
if ( !( fptr = fopen( "saving.txt", "r" ))){
printf( "File could not be opened to retrieve your data from it.\n" );
}
else {
fseek(fptr, 0, SEEK_END);
unsigned long len = (unsigned long)ftell(fptr);
if (len > 0) { //check if the file is not empty.
while ( !feof( fptr ) ){
fscanf( fptr,"%f\n", &p.burst_time );
//printf("time = %f\n",p.burst_time);
AddProcess(&l,p.burst_time);
}
}
fclose( fptr );
}

提示:这部分代码用于判断文件是否为空。如果没有从中读取。我还使用函数 rewind(fptr);在循环之前,但没有区别。提前致谢。

最佳答案

仅查看代码摘录:

fseek(fptr, 0, SEEK_END);
unsigned long len = (unsigned long)ftell(fptr);
if (len > 0) { //check if the file is not empty.
while ( !feof( fptr ) ){
fscanf( fptr,"%f\n", &p.burst_time );

出于某种原因,您在执行任何读取操作之前会先查找文件末尾。我假设您这样做是为了计算文件的大小。

您获得疯狂输出的原因是您实际上没有读取任何内容,因此 feof 直到第一次通过才返回文件结尾。

我建议您通过在 while 语句之前添加 fseek(fptr, 0, SEEK_SET); 来解决此问题。

关于找不到函数 fseek() 有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30134471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com