c语言- fread()> 0 入口条件为假,为何进入了循环

问题描述

fread()> 0 入口条件为假,为何进入了循环

片段代码:

while((num = fread(temp, sizeof(char), 512, ifp)) > 0);
 {
    fwrite(temp, sizeof(char), 512, ofp);
    printf("%d", num);
}

printf("%d", num); 得到的输出为0.

ifp指向的文件只有几个字符小于512.

解决方案

while 后多一个分号 ;
所以无论 while 是否成立都会执行的。

解决方案二:

fread返回值

实际读取的元素个数。如果返回值与count不相同,则可能文件结尾或发生错误。从ferror和feof获取错误信息或检测是否到达文件结尾。

还有可能是你的文件fread出错了,你查看一下错误信息

时间: 2025-01-01 11:32:57

c语言- fread()> 0 入口条件为假,为何进入了循环的相关文章

c语言基础-c语言编程的问题0

问题描述 c语言编程的问题0 #include void butler(void); int main(void) { float n; scanf("%f",&n); butler(); return 0; } void butler(void) { float cu; cu=n*n*n; //这里是什么问题? printf("%f",cu); } 各位看一下是什么问题 解决方案 #include<stdio.h> void butler(vo

c语言-我的一段C语言程序在VC6.0上面运行不出来,貌似是头文件的问题,求帮忙

问题描述 我的一段C语言程序在VC6.0上面运行不出来,貌似是头文件的问题,求帮忙 #include"C:UsershpDesktopcomplex.h" main() { complex *a; int N=1024; //给a赋值 fft(a,N) } int fft(complex *a,int l) { const double pai=3.141592653589793; complex u,w,t; unsigned n=1,nv2,nm1,k,le,lei,ip; uns

c语言-C语言memset函数赋0问题

问题描述 C语言memset函数赋0问题 memset怎么给一个整形数组赋0新人表示心好累 百度到了 好像要用指针 但也有不用的,不知道标准是什么样,来问问,求解 解决方案 参考这个:http://blog.sina.com.cn/s/blog_715d0ae30100yj2d.html #include <string.h> #include <stdio.h> #include <memory.h> int main(void) { char buffer[] =

Linux内核源码分析--内核启动之(3)Image内核启动(C语言部分)(Linux-3.0 ARMv7) 【转】

原文地址:Linux内核源码分析--内核启动之(3)Image内核启动(C语言部分)(Linux-3.0 ARMv7) 作者:tekkamanninja  转自:http://blog.chinaunix.net/uid-25909619-id-4938390.html   在构架相关的汇编代码运行完之后,程序跳入了构架无关的内核C语言代码:init/main.c中的start_kernel函数,在这个函数中Linux内核开始真正进入初始化阶段,      下面我就顺这代码逐个函数的解释,但是这

指针- vc6.0模拟时钟问题,两个循环无法同时运行

问题描述 vc6.0模拟时钟问题,两个循环无法同时运行 #include ""graphics.h""#include ""conio.h""#include ""time.h""#include ""math.h""int main(){int x0=400y0=200;int x1=0y1=0;int h=0;int m=0;int r=90;

c语言-fread读文件不好控制啊

问题描述 fread读文件不好控制啊 如题, #include #include #include struct S{ char a[100]; }; void addStudent(struct S student) { FILE fp; fp=fopen("Student.dat","rb"); if(fp==NULL) { printf(" error exitn"); return; } fread(&student,sizeof

C语言 fread()与fwrite()函数说明与示例

1.作用 读写文件数据块. 2.函数原型 (1)size_t fread ( void * ptr, size_t size, size_t count, FILE * stream ); 其中,ptr:指向保存结果的指针:size:每个数据类型的大小:count:数据的个数:stream:文件指针 函数返回读取数据的个数. (2)size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );    其中

C 语言中 初始化为0和1 的差别

仔细观察图 在test1.c中将数组的所有元素初始化为0 在test2.c中将数组的所有元素初始化为1 但是编译后二者的大小差距是不是太大了!值得注意啊! 要从内存的角度分析原因

c语言编程-关于cfree5.0不能运行for循环

问题描述 关于cfree5.0不能运行for循环 解决方案 字体太小,我写了一个, #include ""stdio.h""int main(){int i;for (i = 1; i < 5; i++){printf(""12345 "");}} 通过编译 http://codepad.org/RuhGArAM 如果还不行,就是你的开发环境的问题,建议你换vc++ 解决方案二: 加上 ruturn 0;试试,还有符号都