c语言文件的读取和写入?c语言必背100代码
很多朋友对于c语言文件的读取和写入和c语言必背100代码不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
如何用C语言读写文件
c语言读写文件程序:
#include"stdio.h"
#include<stdlib.h>
main()
{
FILE*fp1;//定义文件流指针,用于打开读取的文件
FILE*fp2;//定义文件流指针,用于打开写操作的文件
char text[1024];//定义一个字符串数组,用于存储读取的字符
fp1= fopen("d:\\a.txt","r");//只读方式打开文件a.txt
fp2= fopen("d:\\b.txt","w");//写方式打开文件a.txt
while(fgets(text,1024,fp1)!=NULL)//逐行读取fp1所指向文件中的内容到text中
{
puts(text);//输出到屏幕
fputs(text,fp2);//将内容写到fp2所指向文件中
}
fclose(fp1);//关闭文件a.txt,有打开就要有关闭
fclose(fp2);//关闭文件b.txt
}
扩展资料:C语言文件读写操作总结
一.非标准文件的读写不带缓冲的
1.文件的打开和关闭
open()函数的作用是打开文件,其调用格式为: int open(char*filename, int access);该函数表示按access的要求打开名为filename的文件,返回值为文件描述字,其中access有两部分内容:基本模式和修饰符,两者用""("或")方式连接,修饰符可以有多个,但基本模式只能有一个。
access的规定
O_RDONLY只读
O_APPEND文件指针指向末尾
O_WRONLY只写
O_CREAT文件不存在时创建文件,属性按基本模式属性
O_RDWR读写
O_BINARY打开一个二进制文件
O_TEXT打开一个文字文件
open()函数打开成功,返回值就是文件描述字的值(非负值),否则返回-1。 close()函数的作用是关闭由open()函数打开的文件,其调用格式为: int close(int handle);该函数关闭文件描述字handle相连的文件。
2.读写函数
int read(int handle, void*buf, int count);
read()函数从handle(文件描述字)相连的文件中,读取count个字节放到buf所指的缓冲区中,返回值为实际所读字节数,返回-1表示出错。返回0表示文件结束。
write()函数的调用格式为: int write(int handle, void*buf, int count); write()函数把count个字节从buf指向的缓冲区写入与handle相连的文件中,返回值为实际写入的字节数。
3.随机定位函数
lseek()函数的调用格式为: int lseek(int handle, long offset, int fromwhere);
该函数对与handle相连的文件位置指针进行定位,功能和用法与fseek()函数相同。 tell()函数的调用格式为: long tell(int handle);该函数返回与handle相连的文件现生位置指针,功能和用法与ftell()相同
二、标准文件的读写
1.文件的打开函数fopen()
文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了。
当使用打开函数时,必须给出文件名、文件操作方式(读、写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指针指向文件开头。若已有一个同名文件存在,则删除该文件,若无同名文件,则建立该文件,并将文件指针指向文件开头。
fopen(char*filename,char*type);
其中*filename是要打开文件的文件名指针,一般用双引号括起来的文件名表示,也可使用双反斜杠隔开的路径名。
而*type参数表示了对打开文件的操作方式。其可采用的操作方式如下:
"r"打开,只读;"w"打开,文件指针指到头,只写;"a"打开,指向文件尾,在已存在文件中追加;"rb"打开一个二进制文件,只读;"wb"打开一个二进制文件,只写;"ab"打开一个二进制文件,进行追加;
"r+"以读/写方式打开一个已存在的文件;"w+"以读/写方式建立一个新的文本文件;"a+"以读/写方式打开一个文件文件进行追加;"rb+"以读/写方式打开一个二进制文件;"wb+"以读/写方式建立一个新的二进制文件;
"ab+"以读/写方式打开一个二进制文件进行追加;当用fopen()成功的打开一个文件时,该函数将返回一个FILE指针,如果文件打开失败,将返回一个NULL指针。
C语言 文件操作,要读取一个txt文件内容
在C语言中,文件操作都是由库函数来完成的。
要读取一个txt文件,首先要使用文件打开函数fopen()。
fopen函数用来打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式)其中,“文件指针名”必须是被说明为FILE类型的指针变量,“文件名”是被打开文件的文件名。“使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。
其次,使用文件读写函数读取文件。
在C语言中提供了多种文件读写的函数:
·字符读写函数:fgetc和fputc
·字符串读写函数:fgets和fputs
·数据块读写函数:freed和fwrite
·格式化读写函数:fscanf和fprinf
最后,在文件读取结束要使用文件关闭函数fclose()关闭文件。
下面以格式化读写函数fscanf和fprintf为例,实现对文件A.txt(各项信息以空格分割)的读取,并将它的信息以新的格式(用制表符分割各项信息)写入B.txt,实现对A.txt的处理。
C语言源程序如下所示:
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
typedef struct student{
char name[32];
int no;
char sex[16];
float score;
} stu;
int main(int argc, char* argv[])
{
//打开文件
FILE* r=fopen("A.txt","r");
assert(r!=NULL);
FILE* w=fopen("B.txt","w");
assert(w!=NULL);
//读写文件
stu a[128];
int i=0;
while(fscanf(r,"%s%d%s%f",a[i].name,&a[i].no,a[i].sex,&a[i].score)!=EOF)
{
printf("%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到显示器屏幕
fprintf(w,"%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到文件B.txt
i++;
}
//关闭文件
fclose(r);
fclose(w);
system("pause");
return 0;
}
C语言文本方式和二进制方式读写操作的区别
首先要明白一点:任何数据在内存中或者硬盘上的存储都是1、0组成的序列,从硬盘、内存这个角度看根本不存在什么二进制和文本模式之分
区别
稍对C语言操作文件有了解都知道2点:1、首先应该fopen打开文件2、有两类文件操作函数,对应着二进制模式和文本模式。
两个模式的区别在两个地方,这两个地方的区别正好体现在刚才说的2点上。
1、打开文件时选择模式
使用fopen函数时,要给予第二个参数一个值,告诉fopen使用什么模式打开文件。这里的参数决定的就是第一个区别:对于字符串中的\n如何处理?
教材中说,文本模式中,在存储\n时要转化为\r\n,读取文件时进行逆转换。二进制模式时,则不进行转换。这是在操作系统是Windows的条件下。
首先我们要知道回车和换行是不相同的,Windows中文字另起一行内存表示为<回车><换行>对应\r\n,而Linux、Unix中则是单单一个<换行>对应\n。Mac中则是一个<回车>对应\r
C语言起源于Unix的产生,对于文件中的另起一行,Unix采用单个\n表示。所以我们通常在输出一个短话想换行时加一个\n就可以了,Windows也是如此。到了数据从内存到硬盘上进行存储时,对于unix来说,\n照样是\n。而Windows为了防止读取时混乱必须转换为\r\n。Mac呢,就是\r。
这就是第一区别,这个区别是体现在fopen第二个参数,跟你使用文本模式的函数还是二进制模式的函数根本不相关!你可以做一个实验,使用二进制模式的函对于同样的字符串:”Hello\n”,当fopen使用w参数写入文件,无论是fwrite还是fprintf都会对\n会进行转换,而使用wb参数则都不进行转换。
2、两种不同模式的函数
打开文件后,要进行数据写入。
教材中说,使用文本模式打开文件,就要用fprintf写入数据,使用二进制模式打开文件,就要用fwrite写入数据。
其实你用文本模式打开文件,一个字符串,fprintf、fwrite都能写入文件,写入还都是一样的数据。使用两类函数的区别其实在于数字的处理上。
对于一个数字5,你用fprintf写入,将把数字5转换为字符5,将其对应的ASCII编码存入存储器,占用1个字节。但实际上数字5就是数字5,对应2进制101,整形占用4个字节。fwrite则将这个数字在内存中占用的4个字节全部原样写入到硬盘中,占4个字节。
而同样对于一段字符串”Hello”,使用ASCII编码对于fprintf和fwrite都能原样写到硬盘中。
同样对于这个区别,你仍然能做个实验,对于一个int型数字5,你如何用fprintf和fwrite写入到硬盘中,他们对应的十六进制码是多少?对于一段字符串你再用两个函数分别写到硬盘中,你看看对应的十六进制码是什么。这个实验跟你用fopen如何指定第二个参数无关。
c语言文件的读取和写入的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言必背100代码、c语言文件的读取和写入的信息别忘了在本站进行查找哦。