c语言 读取文件,如何用C语言读写文件

1,如何用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}
2 , C语言读取文件数据先用getline或fgets读取数据到一个字符串中,这个串定义的长一点,保证够用就行 。举例:char str[1024] 。fgets( str , sizeof(str), fp ),//fp打开的文件指针 。然后调用for循环去读取串的的数据,假设你的分隔符是空格,遍历str,遇到空格就得到一个数据 , 然后继续遍历,直到str尾 。再去fgets数据,再遍历,即可得到所有的数据 。拓展资料:C语言是一门通用计算机编程语言,广泛应用于底层开发 。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言 。
3,C语言读取文件你把txt数据读到内存,不就可以了,不需要每次都读取吧 。读取文件内容记录到变量啊一个c语言读写文件程序:#include "stdio.h"#include 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语言 读取文件,如何用C语言读写文件】
4,C语言程序读取文件1. 关键:下面的的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库以二进制模式打开文件 。如果不加b,表示默认加了t,即rt,wt,其中t表示以文本模式打开文件 。由fopen()所建立的新文件会具有参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态 。mode有下列几种形态字符串:r 以只读方式打开文件,该文件必须存在 。r+ 以可读写方式打开文件,该文件必须存在 。rb+ 读写打开一个二进制文件,允许读写数据 。rw+ 读写打开一个文本文件 , 允许读和写 。w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失 。若文件不存在则建立该文件 。w+ 打开可读写文件 , 若文件存在则文件长度清为零,即该文件内容会消失 。若文件不存在则建立该文件 。a 以附加的方式打开只写文件 。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留 。(EOF符保留)a+ 以附加方式打开可读写的文件 。若文件不存在,则会建立该文件,如果文件存在 , 写入的数据会被加到文件尾后,即文件原先的内容会被保留 。(原来的EOF符不保留)wb 只写打开或新建一个二进制文件;只允许写数据 。wb+ 读写打开或建立一个二进制文件,允许读和写 。ab+ 读写打开一个二进制文件,允许读或在文件末追加数据 。at+ 打开一个叫string的文件,a表示append,就是说写入处理的时候是接着原来文件已有内容写入,不是从头写入覆盖掉,t表示打开文件的类型是文本文件,+号表示对文件既可以读也可以写 。百度百科搜索fopen5,C语言中 文件的读取示例程序 。//---------------------------------------------------------------------------#include <stdio.h>int main(void) FILE *fp; double u[20]; int i; fp=fopen("c:\\a.txt","r");/*打开要读取数字的文件*/ for (i = 0; i<20; i++)fscanf(fp,"%lf",&u[i]);/*从fp文件读取一个double类型的数字保存到数组u中,fscanf()函数除了第一个参数是文件指针外,其余的用法和scanf()函数一致,所以这里的格式控制字符串要求文件中的数字要用空格或者回车分隔*/printf("%f\t",u[i]);/*输出刚读取的数字*/ } fclose(fp);/*关闭文件*/ return 0;}//---------------------------------------------------------------------------一楼正解 。但是输出的时候改为printf("%3.2f\t",u[i]); 符合要求 。二楼读取时候fscanf(p,"%f\t",u[i]);也是对的,只要与u的定义一致 。哈哈 。三楼正解!#define N 10000//N设成足够容纳文件里数据个数的值float u[N];FILE *p;p=fopen("a.txt","r");int i=0;while(!foef(p) && i<N)fscanf(p,"%f\t",u[i]);i++;} fclose(p);1、使用fopen、fread、fwrite等c语言标准库中的文件i/o函数即可对文件进行打开、读取、写入操作 。下面的程序创建一个.bin的文件,然后再从里面读取数据 。#include int main() { file* pfile; float buffer[] = { 2.0 , 3.0 , 8.0 }; pfile = fopen("myfile.bin" , "wb"); // 打开文件写操作 fwrite(buffer , 1 , sizeof(buffer) , pfile); // 把浮点数组写到文件 myfile.bin fclose(pfile); // 关闭文件 float read[3]; pfile = fopen("myfile.bin" , "rb"); // 重新打开文件读操作 fread(read , 1 , sizeof(read) , pfile); // 从文件中读数据 printf("%f\t%f\t%f\n", read[0], read[1], read[2]); fclose(pfile); // 关闭文件 return 0; } 2、bin文件一般是指的二进制文件,它往往具有两种形式,一种是某种系统平台的可执行文件格式 , 比如windows平台的pe文件格式,linux平台的elf文件格式,另外一种是提取的一段二进制代码,比如系统的主引导记录mbr,就是一个包含512个字节的程序 , 用c语言对这类文件进行读取时,必须按一定格式进行解析 。而且常用的方法不是使用c语言的i/o操作,而一般使用系统提供的文件内存映射方法 。6,C语言如何读或写文件对于文件 , 常用的3个:read/write这是底层的系统调用fread/fwrite 这是二进制的读写函数fscanf/fprintf 这是格式化的读写函数1.fopen()fopen的原型是:FILE *fopen(const char *filename,const char *mode),fopen实现三个功能:为使用而打开一个流,把一个文件和此流相连接 , 给此流返回一个FILR指针 。参数filename指向要打开的文件名,mode表示打开状态的字符串,其取值如下:字符串 含义"r" 以只读方式打开文件"w" 以只写方式打开文件"a" 以追加方式打开文件"r+" 以读/写方式打开文件,如无文件出错"w+" 以读/写方式打开文件,如无文件生成新文件一个文件可以以文本模式或二进制模式打开,这两种的区别是:在文本模式中回车被当成一个字符\n,而二进制模式认为它是两个字符 0x0D,0x0A;如果在文件中读到0x1B,文本模式会认为这是文件结束符,也就是二进制模型不会对文件进行处理,而文本方式会按一定的方式对数据作相应的转换 。系统默认的是以文本模式打开 , 可以修改全部变量_fmode的值来修改这个设置,例如_fmode=O_TEXT;就设置默认打开方式为文本模式;而_fmode=O_BINARY;则设置默认打开方式是二进制模式 。我们也可以在模式字符串中指定打开的模式,如"rb"表示以二进制模式打开只读文件,"w+t"或"wt+"表示以文本模式打开读/写文件 。此函数返回一个FILE指针,所以申明一个FILE指针后不用初始化,而是用fopen()来返回一个指针并与一个特定的文件相连,如果成败,返回NULL.例:以下是引用片段:FILE *fp;if(fp=fopen("123.456","wb"))puts("打开文件成功");elseputs("打开文件成败");2.fclose()fclose()的功能就是关闭用fopen()打开的文件,其原型是:int fclose(FILE *fp);如果成功,返回0,失败返回EOF 。在程序结束时一定要记得关闭打开的文件 , 不然可能会造成数据丢失的情况,我以前就经常犯这样的错误 。例:fclose(fp);3.fputc()向流写一个字符,原型是int fputc(int c, FILE *stream); 成功返回这个字符,失败返回EOF 。例:fputc(X,fp);4.fgetc()从流中读一个字符 , 原型是int fputc(FILE *stream); 成功返回这个字符,失败返回EOF 。例:char ch1=fgetc(fp);5. fseek()此函数一般用于二进制模式打开的文件中,功能是定位到流中指定的位置,原型是int fseek(FILE *stream, long offset, int whence);如果成功返回0,参数offset是移动的字符数,whence是移动的基准,取值是:符号常量 值 基准位置SEEK_SET 0 文件开头SEEK_CUR 1 当前读写的位置SEEK_END 2 文件尾部例:fseek(fp,1234L,SEEK_CUR);//把读写位置从当前位置向后移动1234字节(L后缀表示长整数)fseek(fp,0L,2);//把读写位置移动到文件尾6.fputs()写一个字符串到流中,原型int fputs(const char *s, FILE *stream);例:fputs("I Love You",fp);7.fgets()从流中读一行或指定个字符,原型是char *fgets(char *s, int n, FILE *stream); 从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL 。例:如果一个文件的当前位置的文本如下:Love ,I HaveBut ……..如果用fgets(str1,4,file1);则执行后str1="Lov",读取了4-1=3个字符,而如果用fgets(str1,23,file1);则执行str="Love ,I Have",读取了一行(包括行尾的\n) 。8.fprintf()按格式输入到流 , 其原型是int fprintf(FILE *stream, const char *format[, argument, …]);其用法和printf()相同,不过不是写到控制台 , 而是写到流罢了 。例:fprintf(fp,"%2d%s",4,"Hahaha");9.fscanf()从流中按格式读取,其原型是int fscanf(FILE *stream, const char *format[, address, …]);其用法和scanf()相同,不过不是从控制台读?。?而是从流读取罢了 。例:fscanf(fp,"%d%d" ,&x,&y);10.feof()检测是否已到文件尾,是返回真,否则返回0,其原型是int feof(FILE *stream);例:if(feof(fp))printf("已到文件尾");11.ferror()原型是int ferror(FILE *stream);返回流最近的错误代码 , 可用clearerr()来清除它,clearerr()的原型是void clearerr(FILE *stream);例:printf("%d",ferror(fp));12.rewind()把当前的读写位置回到文件开始 , 原型是void rewind(FILE *stream);其实本函数相当于fseek(fp,0L,SEEK_SET);例:rewind(fp);13.remove()删除文件,原型是int remove(const char *filename); 参数就是要删除的文件名,成功返回0 。例:remove("c:\\io.sys");14.fread()从流中读指定个数的字符,原型是size_t fread(void *ptr, size_t size, size_t n, FILE *stream);参数ptr是保存读取的数据,void*的指针可用任何类型的指针来替换,如char*、int *等等来替换;size是每块的字节数;n是读取的块数,如果成功,返回实际读取的块数(不是字节数) , 本函数一般用于二进制模式打开的文件中 。例:以下是引用片段:char x[4230];FILE *file1=fopen("c:\\msdos.sys","r");fread(x,200,12 ,file1);//共读取200*12=2400个字节15.fwrite()与fread对应,向流中写指定的数据,原型是size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream);参数ptr是要写入的数据指针,void*的指针可用任何类型的指针来替换 , 如char*、int *等等来替换;size是每块的字节数;n是要写的块数,如果成功,返回实际写入的块数(不是字节数),本函数一般用于二进制模式打开的文件中 。例:以下是引用片段:char x[]="I Love You";fwire(x, 6,12,fp);//写入6*12=72字节将把"I Love"写到流fp中12次,共72字节16.tmpfile()其原型是FILE *tmpfile(void); 生成一个临时文件,以"w+b"的模式打开,并返回这个临时流的指针 , 如果失败返回NULL 。在程序结束时,这个文件会被自动删除 。例:FILE *fp=tmpfile();17.tmpnam();其原型为char *tmpnam(char *s); 生成一个唯一的文件名,其实tmpfile()就调用了此函数,参数s用来保存得到的文件名,并返回这个指针,如果失败 , 返回NULL 。写:FILE *pFile=fopen("1.txt","w");fwrite("abcdefg",1,strlen("abcdefg"),pFile);fclose(pFile);读:FILE *pFile=fopen("1.txt","r");char *pBuf;fseek(pFile,0,SEEK_END);//定位到文件末尾int len=ftell(pFile);//求文件长度pBuf=new char[len+1];rewind(pFile);//重新定位指针到文件开始处fread(pBuf,1,len,pFile);fclose(pFile);

    推荐阅读