`

fread / fwrite返回 0 的问题

阅读更多

 

 

fread的函数原型是(来自MSDN):

size_t fread( void *buffer, size_t size, size_t count, FILE *stream );

 

我们用fread读的时候,有时会把size设置为整数,比如:300。然后我们可能用一个循环来读取文件的内容:

while ((iBytesRead = fread (buf, 300, 1, fin)) > 0) {

// 具体代码略

}

若有一个文件,它的内容大约为213 bytes,那么,用这个语句来读的话,就会进不到循环里面去了,因为fread返回的是实际所读取的块数!那么一个块是300 bytes,而此文件全部内容加起来也才213 bytes,小于300 bytes。也就是说,读到的数据不足一块,那么只能返回0了,于是不会进入循环~~

 

所以,如果想fread返回读取的具体byte数的话,应该把size count 的位置对调,变成这样:

while ((iBytesRead = fread (buf, 1, 300, fin)) > 0) {

// 具体代码略

}

0
1
分享到:
评论

相关推荐

    为什么fread(),fwrite()的返回值总是为0,但是读写文件正常

    为什么fread(),fwrite()的返回值总是为0,但是文件读写正常 初学C语言文件操作的新人,总会犯这个错误,明明文件读 写成功 ,但是返回值总是为0,而不是读写成功的字节数,原因是因为...

    uwrite/uread:UREAD/UWRITE 与 FREAD/FWRITE 类似,只是它们对内存中的数组进行操作。-matlab开发

    A=UWRITE(D, PREC) 将从 double 数组 D 创建一个 uint8 数组 A。... D=UREAD(A, N, PREC) 将读取 uint8 数组 A 并将 N 个值返回到 D。假设 A 中的数据采用 PREC 格式(有关支持的格式,请参阅 UWRITE)。

    Vxworks学习笔记

    25 read/write、fread/fwrite、fopen/open有什么区别 96 26 快速启动??????????????? 100 27 启动时报ATA0a和硬盘启动相关问题 100 28 如何安装USB2.2新版本及编译USB驱动? 101 29 WindML、图形界面相关问题 102 ...

    des源代码(加解密的密钥生成)

    56,48,40,32,24,16,8,0, 58,50,42,34,26,18,10,2, 60,52,44,36,28,20,12,4, 62,54,46,38,30,22,14,6}; //逆初始置换表IP^-1 int IP_1_Table[64] = {39,7,47,15,55,23,63,31, 38,6,46,14,54,22,62,30, ...

    数据结构(严蔚敏)配套纯C代码

    RcdType d,b[6]={{8,100,'I'},{12,-25,'U'},{14,38,'U'},{18,-200,'D'},{21,60,'I'},{INT_MAX,0,'U'}}; // 已排序的事务文件数据 FILE *f,*g,*h; int j; f=fopen("old","wb"); // 以写的方式打开主文件old ...

    c语言课设-考勤管理程序

    attend.late[i]=attend.early[i]=attend.absence[i]=0; } printf("1,确定 2,取消\n"); printf("请选择: "); scanf("%d",&p); switch(p) { case 1:fwrite(&attend,sizeof(struct Stu2),1,fp1);break; case 2...

    UCOS.rar_4 3 2 1_fs_fs_init_uc fs_ucos fs

    2)FS_FWrite(),数据写入文件 3)FS_FClose(),关闭文件 4. _dump_file,1)1)FS_FOpen(),建立文件或打开已有文件,返回文件结构指针 2)FS_FRead(),读出文件数据 3)FS_FClose(),关闭文件 5. FS_Exit(),关闭...

    mrankitsinghal#TechNote#库函数1

    1. 返回整数的getchar函数 2. 输入fread和输出fwrite同时操作,需在其中插入fseek函数的调用 3. 调用库函数时,应该先检查作为错误指示

    PHP生成Html文件

    成功返回 true,失败则返回 false。 die ("写入模板成功"); } else { fclose ($fp); die ("写入模板失败!"); } echo ($content); ?> 3,下面为转换文件名的一个方法 $s_fname = "93e.php"; $o_fname = "93e.htm"; ob_...

    电话薄管理系统C语言

    if(strcmp(num,"0")==0) /*输入为0,则退出添加操作,返回主界面*/ {return n;} i=0; while(i) /*查询该编号是否已经存在,若存在则要求重新输入一个未被占用的编号*/ { if(strcmp(temp[i].num,num)==0) { ...

    C++文件读写+二进制读写+STL文件函数+创建文件+读指针+写指针+读写指针+可应用于系统中底层的文件创建+计算机专业领域

    fscanf、fread,fgets,fgetc 等函数读文件,fprintf, fwrite,fputs,fputc等函数写文件,都需要通过fopen返回的FILE *指针进行 文件读写结束后,一定要fclose关闭文件!!!否则可能导致写入文件的数据没被保存,...

    F_SAC:操作 SAC 文件:从 SAC 格式的文件中读取/写入/更改数据和标头。-matlab开发

    FREAD_SAC 读取指定机器格式的 IRIS/SAC 文件,并返回 2 种类型:1) 时间向量、数据向量和头结构; 或 2) 一个整体结构变量,其字段分别为时间、数据和标题。 SAC 结构变量的字段名称对应于标准 IRIS SAC 标头版本 ...

    linux文件的操作函数用法详解

    对这些函数有详细解释和用例: fopen() 打开流 ...fread() 从流中读指定个数的字符 fwrite() 向流中写指定个数的字符 tmpfile() 生成一个临时文件流 tmpnam() 生成一个唯一的文件名

    八十多条C语言基础教程

    (54)fread和fwrite函数 (55)文件定位函数 c switch的用法 c 避免调试窗口闪退 c 弹出消息窗口 c 等待函数(sleep) c 定义类成员 c 动态分配内存法定义数组 c 返回二维数组 c 方向键键码 c 改变字体颜色 c 绘制图形 c ...

    通讯录c程序代码

    feof(fp)) /* feof()遇文件结束标志时返回非0值,不能依赖于1 */ { fread(&message[i],sizeof(struct message_type),1,fp); if(message[i].num == 0) break; else i++; } fclose(fp); ...

    C语言,通讯录管理程序设计

    if(fread(&tele[count],sizeof(RECORD),1,fp)==1) /*一次从文件中读取一条通讯记录*/ count++; } fclose(fp); /*关闭文件*/ printf("\n=>Open file success,the total records number is:%d.\n",count); ...

    myktv源代码

    }us[10]={{1,"admin","admin",1},{2,"kinglin","kinglin",2}},Online_User={0,"","",3}; //Oneline为在线用户,可用于权限级别等限制!!! //第三部分:人员管理 void user_menu(struct user *show_user); void ...

    指纹识别C++

    * 返回:若创建失败,返回NULL;否则返回新的对象句柄。 ******************************************************************************/ FvsFile_t FileCreate() { iFvsFile_t* p = NULL; p = (iFvsFile_t*)...

    128位AES加密算法C语言实现

    /*每次读8个字节,并返回成功读取的字节数* if((count- fread(plainBlock, sizeof(char),8, plain)) 8){ DES EncryptBlock (plainBlock, subKeys, cipherBlock f(count)[ /*填充*/ memset(plainBlock ount, \0, 7- ...

    php定时计划任务与fsockopen持续进程实例

    PHP支持socket编程,fscokopen函数返回一个到远程主机连接的句柄,可以像使用fopen返回的句柄一样,对它进行 fwrite、fgets、fread等操作。使用fsockopen连接到本地服务器,触发脚本执行,然后立即返回,不等待脚本...

Global site tag (gtag.js) - Google Analytics