c语言中fwrite的问题
fwrite操作后是否会将游标向后移动size*count位呢?还有我看别人的代码,fread和fwrite的时候总是用个while循环,目的是如果一次没有读出/写入规定...
fwrite 操作后是否会将游标向后移动size*count位呢?
还有我看别人的代码,fread和fwrite的时候总是用个while循环,目的是如果一次没有读出/写入规定的长度,就在循环体内继续写入,这种写法有没有必要,fread/fwrite会不会在一次写入未完成的时候中断并正常返回呢?就是说int c=fread(xxx, 10,10, fp), c有没有可能<100但是>0? 展开
还有我看别人的代码,fread和fwrite的时候总是用个while循环,目的是如果一次没有读出/写入规定的长度,就在循环体内继续写入,这种写法有没有必要,fread/fwrite会不会在一次写入未完成的时候中断并正常返回呢?就是说int c=fread(xxx, 10,10, fp), c有没有可能<100但是>0? 展开
展开全部
fwrite 操作后会把文件指针位置 向后 移动size*count字节。接着再fwrite就从这个当前位置起写。
while循环里,例如读1个结构,写一个结构,一直到读到 文件结束符 EOF为止。
这种写法有没有必要看情况决定。例如,一个结构就是一个学生的成绩单,但一开始并不知道文件里一共有多少学生,那么用这种循环读的方法,就可以计数,可以动态分配单元。
计数器初始化为0。成功读入1个结构,就把计数器加1。直到fread()失败--返回EOF。
int c=fread(xxx, 10,10, fp), c有没有可能<100但是>0。 有可能。所以可以 通过 c 是否等于 100
来判断 是否成功,是否合理, 并采取措施。
例如,有一个题目,是读入1个文件,平均地拆成3个文件输出,再读入这3个文件,合成1个文件。
因为文件的字节总数,未必是3 的倍数,所以 想读的个数和真正读到的个数就有可能不同。要使拆开的文件再合起来,与原文件一模一样,就要用到c。
while循环里,例如读1个结构,写一个结构,一直到读到 文件结束符 EOF为止。
这种写法有没有必要看情况决定。例如,一个结构就是一个学生的成绩单,但一开始并不知道文件里一共有多少学生,那么用这种循环读的方法,就可以计数,可以动态分配单元。
计数器初始化为0。成功读入1个结构,就把计数器加1。直到fread()失败--返回EOF。
int c=fread(xxx, 10,10, fp), c有没有可能<100但是>0。 有可能。所以可以 通过 c 是否等于 100
来判断 是否成功,是否合理, 并采取措施。
例如,有一个题目,是读入1个文件,平均地拆成3个文件输出,再读入这3个文件,合成1个文件。
因为文件的字节总数,未必是3 的倍数,所以 想读的个数和真正读到的个数就有可能不同。要使拆开的文件再合起来,与原文件一模一样,就要用到c。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询