fread() 读不到EOF?
#include <stdio.h>
#define RECORD_LENGTH_ sizeof(char)*20+sizeof(unsigned int)+sizeof(double)
typedef struct RECORD_TAG{
unsigned int record_number;
long index_n; //
Detailed_record *record;
struct RECORD_TAG *fwd;
struct RECORD_TAG *bwd;
} Index;
Index index_entry;
int create_index(FILE *file_stream){
Index *new_node;
Index *current_node=&index_entry;
Index *previous_node=NULL;
rewind(file_stream);
while(!feof(file_stream)){
new_node=malloc(sizeof(Index));
if(new_node==NULL){
free_all_nodes();//如果动态分配内存失败,释放所有已分配的内存
printf("No enough memory!\n");
return 1;
}
current_node->fwd=new_node;
current_node->bwd=previous_node;
new_node->bwd=(current_node==&index_entry?NULL:current_node);
new_node->fwd=NULL;
previous_node=current_node;
current_node=current_node->fwd;
new_node->index_n=ftell(file_stream);
new_node->record=NULL;
fread(&new_node->record_number,sizeof(unsigned int),1,file_stream);
fseek(file_stream, RECORD_LENGTH_, SEEK_CUR);
}
index_entry.bwd=new_node;
return 0;
}
补充::FILE *file_stream=fopen("C:\db","a+b");。
现在的问题是,文件里面的记录为:
000000 01000000 20666666 20202020 20202020 *.... fff *
000016 20202020 20202020 0C000000 9A999999 * ........*
000032 99D95E40 01000000 2033322E 20202020 *..^@.... 32. *
000048 20202020 20202020 20202020 21000000 * !...*
000064 9A999999 99193640 02000000 20333320 *......6@.... 33 *
000080 20202020 20202020 20202020 20202020 * *
000096 2C000000 00000000 00803640 03000000 *,.........6@....*
000112 20637265 75687520 20202020 20202020 * creuhu *
000128 20202020 63000000 00000000 00C05440 * c.........T@*
前面的00....是十进制数值。调试时,ftell(file_stream)达到144以后,feof(file_stream)仍返回0;之后无论如何feof()都返回0。这是什么原因?望指点。
...全文
相关推荐
基于C语言EOF与getchar()的使用详解
希望本文可以对初学C的朋友提供一点帮助,也希望能和其他朋友进行交流。其中理解不对的地方若能得到指正和建议,本人将不胜感激
关于php fread()使用技巧
说明 string fread ( int handle, int length ) fread() 从文件指针 handle 读取最多 length 个字节。该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件,视乎先碰到哪种情况。 返回所读取的字符串,如果出错返回 FALSE。 复制代码 代码如下: <?php // get contents of a file into a string $filename = “/usr/local/something.txt”; $h
C语言中EOF是什么意思?
如果您在看代码过程中,看到特殊的字符感觉不是关键字也不是函数,那您首先要想到的就是:这个东西是不是#define或者typedef过的呢?
EOF分析matlab代码
气象统计EOF的MATLAB程序,可以直接使用,比较容易看懂的 气象统计EOF的MATLAB程序,可以直接使用,比较容易看懂的
c++相关技术 fread
c++ 读文件 fread是一个函数。从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。


新手乐园
