当前位置:首页 > 数据库 > 正文

c++文件的读取和写入,c语言fopen函数的用法

c++文件的读取和写入,c语言fopen函数的用法

大家好,c++文件的读取和写入相信很多的网友都不是很明白,包括c语言fopen函数的用法也是一样,不过没有关系,接下来就来为大家分享关于c++文件的读取和写入和c语言f...

大家好,c++文件的读取和写入相信很多的网友都不是很明白,包括c语言fopen函数的用法也是一样,不过没有关系,接下来就来为大家分享关于c++文件的读取和写入和c语言fopen函数的用法的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

用C语言如何实现文件的读写功能

读写文件在编程里面应该是用的最多也最基础的工作了。但是,C/C++中文件读写方法有很多种,各种方法的使用场景区别甚大,到底日常工作中,我们什么时候该用哪种方法呢?还是说随便抓一种用就可以?

这篇文章就给大家分享一下C语言文件的各种方法,下一篇再分享一下C++的读写方法:

在window环境下,文件分别两种,一种为文本文件(用记事本可以打开的文件,如txt、xml、html、js等),一种为二进制文件(如图片、软件、压缩包等)

读写文本文件

首先创建一个File对象,这个利用到系统库中的fopen()函数,该函数返回一个File*类型的对象。

FILE*fopen(constchar*filename,constchar*mode);

第一个参数为:文件路径;第二个参数为打开模式:这个是固定的,具体是什么意思大家可以自己去查一下,没什么特别的,记住就好了。

1、文本文件读写

接下来我们读写一个文本文件,我新建一个test.txt文件并且读取出内容写进newtest.txt文件中,这里有两组函数fgetc/fputc和fgets/fputs函数,故名意意,fgetc是读取出一个字符,而fgets是读取一段字符串,fputc是读写入一个字符,fputs写进一段字符串。我们分别来看一下:

intmain(){ FILE*fpr=fopen("test.txt","r"); FILE*fpw=fopen("newtest.txt","w"); if(fpr&&fpw) { while(!feof(fpr)) { charc=(char)fgetc(fpr); cout<<c; fputc(c,fpw); } } fclose(fpr); fclose(fpw); system("pause"); return0;}

注意:

1、feof是判断是否读取到文件尾的函数,此处不用EOF来作为读写结束条件是因为:函数如fgetc或getc返回EOF并不一定表示文件结束,当读取文件出错时也会返回EOF,仅凭返回-1就认为文件结束是错误的;正因为如此,我们需要feof()来判断文件是否结束,当然用feof()来判断文件结束时也需要判断读取操作是否出错,这时可以用ferror()来判断,当其为真时表示有错误发生。在实际的程序中,应该每执行一次文件操作,就用用ferror函数检测是否出错。

2、fgetc()返回的是int,如果要在屏幕上打印出字符的话需要转换为char;

上面是一个字符一个字符的读,下面一段一段的读:

FILE*fpr=fopen("test.txt","r"); FILE*fpw=fopen("newtest.txt","w"); if(fpr&&fpw) { while(!feof(fpr)) { char*buff=newchar[1024]; char*s=fgets(buff,3,fpr); cout<<s; fputs(s,fpw); } } fclose(fpr); fclose(fpw);

这个方法个人不是很推荐,因为在使用过程中经常会报错,这里我如果将以此读取的字符串长度由3改为2或者1就会报错,这个我也搞不清为什么,如果有知道的朋友可以评论帮我解答一下;

读写二进制文件

C语言读写二进制文件通过库函数fread和fwrite实现:

size_tfread(void*buff,size_tsizeofElement,size_tcount,FILE*stream);

size_tfwrite(constvoid*ptr,size_tsizeofElement,size_tcount,FILE*stream);

参数解释:buff:缓存区地址

sizeofElement:每次读/写的数据大小

count:要多去多个个sizeofElement大小的数据

stream:文件指针

现在我们来读一张神仙姐姐的图片test.ipg并且将读取到的内容写进newtest.jpg,然后查看是否能打开。

intmain(){FILE*fpr=fopen("test.jpg","rb");FILE*fpw=fopen("newtest.jpg","wb");char*buff=newchar[50];intlen=50;while(len==50){len=fread(buff,sizeof(char),50,fpr);fwrite(buff,sizeof(char),len,fpw);}fclose(fpr);fclose(fpw);system("pause");return0;}

运行结果,打开newtest.jpg,结果完美呈现神仙姐姐。

注意以下几点:

1、文件打开方式,不管是读还是写都需要在后面加b,b就是binary二进制的意思,所以这里打开方式是“日本”和“wb”;

2、写入fwrite中的count一定要注意,你的缓存区存了多大的内容这里就写多大的内容,不然会导致文件损坏,因为我定的是每次读取50个char大小的内容,但是文件大小不可能是50的整数啊,最后一次读取的话他肯定会小于50,并且大小不能超过缓存区的大小;

文件内部位置指针

在打开任何文件的时候,都会有一个文件内部位置指针。为什么要在这里介绍这个呢?我们大部分读取文件的时候都是不用去管他的,因为我们基本很少有读取固定位置开始固定长度的需求,都是从开始一直读取到文件结束。

其实我们上面用到的那么多函数,位置指针在文件被打开的时候位置指针是在零为,每读取一次这个指针就会往后面移动你读取的数据两个距离。

这里有三个函数:

1、intfseek(FILE*stream,longintoffset,intwhere)这个函数的作用是将文件位置指针从指定位置(where:系统有定义三个宏SEEK_SET:文件头、SEEK_CUR当前指针位置、SEEK_END文件尾,当然你也可以自己指定位置,比如100、50这样)移动个offset个位置(正数往后移,负数往前移);

2、voidrewind(FILE*stream)这个很简单,将位置指针指向文件开头;

3、longintftell(FILE*stream)这个也很简答,告诉你当前位置指针的位置(相对于文件头);

这可以干嘛呢?最实用的,当然是快速的获取文件长度啊:

我们只需要用fseek将指针移动到文件尾,再用ftell求出当前指针位置就是了:

fseek(fpr,OL,SEEK_END);注意这里的offset一定要给0

ftell(fpr);

C++要打开文件并输入数据怎么写程序或代码

有两种方法:

一是标准的输出输入方式比如新建一个磁盘文件c:\a.txt,将键盘输入的一字符串写到文件中:FILE*ft;charstr[50];ft=fopen("c:\\a.txt","w+");printf("输入一个字符串:");scanf("%s",str);fputs(str,ft);fclose(ft);//重新打开这个文件并读出字符串,显示在屏幕上ft=fopen("c:\\a.txt","rt");fgets(str,50,ft);fclose(ft);printf("%s",str);

二是低级输入输出方式仍如上例:inthd;charstr[50];printf("输入一个字符串:");scanf("%s",str);hd=open("c:\\a.txt",O_CREAT|O_TEXT|O_WRONLY);write(hd,str,strlen(str));close(hd);//重新打开这个文件并读出字符串,显示在屏幕上hd=open("c:\\a.txt",O_TEXT|O_RDONLY);read(hd,str,50);close(hd);printf("%s",str);

C++如何保存数据

C++中有多种数据类型,可以使用不同的方法来保存它们。以下是一些常见的方法:

基本数据类型(如int、float等)可以直接存储在变量中。

字符串可以使用字符数组或字符串类来保存。

数组可以使用数组变量来保存,也可以使用动态内存分配来创建数组。

结构体和类可以使用变量或动态内存分配来创建对象并保存数据。

文件可以使用文件流来打开、读取和写入数据。

c++动态链接库为什么不能写文件

C++动态链接库(DLL)是一种可以在运行时加载和卸载的库。DLL通常用于在不同的应用程序之间共享代码和数据。

DLL不能直接写入文件,因为它们无权访问文件系统。当DLL需要写入文件时,它必须调用宿主应用程序中有权访问文件系统的函数。

DLL不能直接访问文件系统有几个原因。首先,这将是一个安全风险。如果DLL可以直接写入文件,它可能会损坏主机应用程序或操作系统。

其次,这将是一个性能问题。如果每个DLL都必须直接访问文件系统,则会减慢宿主应用程序的执行速度。

最后,这将是一个维护问题。如果每个DLL都必须直接访问文件系统,那么更新或删除DLL就会更加困难。

由于这些原因,DLL不能直接写入文件。它们必须在有权访问文件系统的主机应用程序中调用一个函数。

c加加怎么创建文件

c加加创建文件方法/步骤

1/3

第一步,在VisualC++这里找到File窗口和选项即可新建。

2/3

第二步,就能够选择选项即可创建C++。

3/3

第三步,由于创建C语言和C++选项一样,因此建议加上扩展名cpp。

c++如何读取文件中的数据的关键字和标识符

需要先把文件格式做成多写协议,输入c++。

关于c++文件的读取和写入和c语言fopen函数的用法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

最新文章