首页技术fclose函数的返回值(fclose出错如何获取错误信息)

fclose函数的返回值(fclose出错如何获取错误信息)

编程之家2026-06-051126次浏览

很多朋友对于fclose函数的返回值和fclose出错如何获取错误信息不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

fclose函数的返回值(fclose出错如何获取错误信息)

C语言fread函数问题

fer, size_t Size, size_t Count, FILE* Stream);

Size:每个要读取的元素的大小,单位字节----第二个参数

Count:要读取的元素个数------------------第三个参数

函数的返回值是实际读出元素的个数。

fwrite的第二和第三个参数及返回值的含义同上。

用fread(temp,1024,1,fp)也能读出,意思是一个元素的大小是1024个字节,每次读取一个,这在读取前面内容时没问题,当读到最后,加入只剩下100个字节的数据,不足1024字节时,程序返回0,你无法知道程序最后一次读出了多少数据。如果用fread(temp,1,1024,fp),则程序每次返回读出数据的字节数,即使读最后100个字节时,也返回100,这样你可以利用返回值知道程序读出了多少数据。

fclose函数的返回值(fclose出错如何获取错误信息)

你程序中用'\0'判断读出数据的结束标志,也是有问题的。mp3文件中本身就有很多NULL字符,用strchr(temp,'\0');返回的指针未必指向读出数据的结束标志,可能指向读出数据中的某位。我实际试验了一下,用这种方法,4M多的1.mp3,最终只能得到800多k的2.mp3。正确的做法是利用fread的返回值作为fwrite的输入。

最终程序修改如下,去除了打印代码:

#include<stdio.h>

#include<string.h>

void main()

{

fclose函数的返回值(fclose出错如何获取错误信息)

FILE*fp;

FILE*fpw;

char temp[1024];

int bsize;

fp=fopen("c:/book/1.mp3","rb");

fpw=fopen("c:/book/2.mp3","wb");

if(fp==NULL)

{

printf("can not open file\n");

}

temp[1023]='\0';

while(!feof(fp))

{

bsize= fread(temp,1,sizeof(temp)-1,fp);

fwrite(temp,1,bsize,fpw);

}

fclose(fp);

fclose(fpw);

}

fscanf函数的用法

用法:int fscanf(FILE*stream,char*format,[argument...]);解析:int fscanf(文件指针,格式字符串,输入列表);返回值:类型是整型,成功读入的参数的个数。新建data.txt文件,存入3组坐标,运行程序并输出结果。

fscanf函数的用法 fscanf第一个参数需要一个文件指针,为了查看实验效果,这里先新建一个名为test.txt的文本文件,放在源代码的文件夹,输入如下内容:

123

123.456

Hello world!

要对文件操作,必须将该文件打开:

fp= fopen("test.txt","r");

同时使用完毕后不要忘记使用fclose关闭文件。

test.txt第一行保存的是一个整数,所以可以使用fscanf先读取一个整数:

fscanf(fp,"%d",&num);

test.txt第二行保存了一个浮点数,按照浮点数的格式进行读取:

fscanf(fp,"%f",&fNum);

需要注意的是,由于浮点数位于第二行,所以要想读取这个浮点数,应当先把第一个数读完,否则读取的回事123.000000

同样可以使用类似的方法读取位于第三行的字符串:

fscanf(fp,"%s", str);

但是,从程序的运行结果发现,第三行存储的是Hello world!,而实际运行结果只有“Hello”,这表明fscanf遇到空格会终止本次读操作。

当将fscanf第一个参数设定为stdin时,将实现和scanf函数相同的效果:

fp= stdin;//设置fp为标准输入

fscanf(fp,"%d",&num);//从fp读取一个整数

fread函数的用法

fread函数可从文件中读取二进制数据

语法:

A= fread(fid, count)

A= fread(fid, count, precision)

其中fid为指针所指文件中的当前位置,count指读取的数据个数, precision表示以什么格式的数据类型读取数据。

例子:

fid= fopen('alphabet.txt','r');

c= fread(fid, 5)'

c=

65 66 67 68 69

fclose(fid);

程序说明:alphabet文件中按顺序存储着26个英文字母,读取文件之前要先打开文件,由于未指定读取数据的类型,所以程序指定默认类型为无符号字符型即uchar,65、66、67、68、69代表A、B、C、D、E,文件用完还要记得关闭文件,以便释放指针。

扩展资料:用法

int feof(FILE*stream);

参数

流:FILE结构的指针

注意:feof判断文件结束是通过读取函数fread/fscanf等返回错误来识别的,故而判断文件是否结束应该是在读取函数之后进行判断。比如,在while循环读取一个文件时,如果是在读取函数之前进行判断,则如果文件最后一行是空白行,可能会造成内存错误。

参考资料:fread--百度百科

文章分享结束,fclose函数的返回值和fclose出错如何获取错误信息的答案你都知道了吗?欢迎再次光临本站哦!

万卷ai写作助手(雅思写作快速提分有什么技巧)javascript数组最大值 js找出数组中的最大值