文档库 最新最全的文档下载
当前位置:文档库 › C语言文件操作常用函数详解

C语言文件操作常用函数详解

C语言文件操作常用函数详解
C语言文件操作常用函数详解

C语言文件操作详解

在C语言文件操作的过程中,通常有以下几种方式:

1.单个字符的操作:

fputc

函数原型:int fputc(int c, FILE *fp);

功能:把一字节代码c写入fp指向的文件中

返回值:正常,返回c;出错,为EOF(-1)

fgetc

函数原型:int fgetc(FILE *fp);

功能:从fp指向的文件中读取一字节代码

返回值:正常,返回读到的代码值;读到文件尾或出错,为EOF(-1) feof

函数原型:int feof(FILE *fp);

功能:判断文件是否到末尾

返回值:文件未结束,返回0;文件结束,返回真(非0)示例:

#include

#include

void main()

{

char ch;

FILE *fp1 = fopen("d:\\a.dat", "wb"); /* 以写的方式打开二进制文件*/

FILE *fp2;

if(NULL == fp1)

{

printf("Can not open this file!\n");

exit(0);

}

printf("please input a string:");

ch = getchar();

while(ch != '#') /* 输入#号结束*/

{

fputc(ch, fp1); /* 依次向文件中写*/

ch = getchar();

}

fflush(stdin); /* 清空输入缓冲区*/

fclose(fp1); /* 关闭文件*/

fp2 = fopen("d:\\a.dat", "rb"); /* 以读的方式打开二进制文件*/

if(NULL == fp2)

{

printf("Can not open this file!\n");

exit(0);

while(!feof(fp2)) /* 判断是否到达文件末尾*/

{

ch = fgetc(fp2); /* 从文件中依次读取*/

putchar(ch);

}

putchar('\n');

fflush(stdout); /* 清空输出缓冲区*/

fclose(fp2); /* 关闭文件*/

}

注意:

putc(ch,fp)与fputc(ch,fp)效果一致,但是putc可以作为宏替换,速度更快

getc(fp)与fgetc(fp)效果一致,但是getc可以作为宏替换,速度更快

putchar(c) 则是fputc(c,stdout)

getchar( ) 则是fgetc(stdin)

2.对字符串的操作:

char *fgets(char *s, int n, FILE *fp)

int fputs(char *s, FILE *fp)

功能:

fgets:从fp指向的文件中读一个长度为n的字符串,保存到s中。其中char* s要是已经有内存空间的,通常是用数组定义的,或者用char*则要用malloc分配内存。

fputs:向fp所指向的文件中写入字符串s。

返回值:

fgets:正常时返回读取字符串的首地址;出错或文件尾,返回NULL

fputs:正常时返回写入的最后一个字符;出错为EOF(-1)

示例:

#include

#include

#include

void main()

{

FILE *fp;

char string[100];

if((fp = fopen("file.txt", "w")) == NULL)

{

printf("cann't open this file!\n");

exit(0);

}

while(strlen(gets(string)) > 0) /* 从键盘输入字符串,回车停止*/

{

fputs(string, fp); /* 将字符串写入文件*/

fputs("\n", fp); /* 在最后加上一个’\n’ */

fclose(fp);

if((fp = fopen("file.txt","r")) == NULL)

{

printf("cann't open this file!\n");

exit(0);

}

while(fgets(string, 10, fp) != NULL) /* 判断是否到达文件末尾*/

fputs(string, stdout); /* 等价于puts(string); */

fclose(fp);

}

3.对二进制形式的块读写:

函数原型:

size_t fread(void *buffer,size_t size, size_t count, FILE *fp);

size_t fwrite(void *buffer,size_t size, size_t count, FILE *fp);

功能:读/写数据块fread与fwrite 一般用于二进制文件的输入/输出

fread:从fp所指向的文件中读取count个块,每个块的长度为size个字节,存放到以buffer为首地址的内存中。其中buffer必须已经是由内存空间的。

fwrite:从以buffer为首地址的内存中读取count个块,每个块的长度为size个字节,写入到fp所指向的文件中。

返回值:成功,返回读/写的块数;出错或文件尾,返回0

说明:

buffer: 指向要输入/输出数据块的首地址的指针

size: 读/写的数据块的大小(字节数)

count: 要读/写的数据块的个数

fp: 要读/写的文件指针

示例:

#include

#include

typedef struct STUDENT

{

char sNo[5];

char sName[20];

double score;

}STUDENT;

void main()

{

/* 只对单个的时候*/

// int x = 19;

// int y = 0;

// FILE* fp = fopen("d:\\a.dat", "w b");

// if(NULL == fp)

// printf("Can not open this file!\n");

// exit(0);

// }

// fwrite(&x, sizeof(x), 1, fp);

// fclose(fp);

//

// fp = fopen("d:\\a.dat", "r b");

// if(NULL == fp)

// {

// printf("Can not open this file!\n");

// exit(0);

// }

// fread(&y, sizeof(y), 1, fp);

// printf("%d\n", y);

// fclose(fp);

/* 对于块的时候*/

// int x[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};

// int y[9] = {0};

// int i;

// FILE* fp = fopen("d:\\a.txt", "w b");

// if(NULL == fp)

// {

// printf("Can not open this file!\n");

// exit(0);

// }

// fwrite(x, sizeof(int), sizeof(x)/sizeof(int), fp); // fclose(fp);

//

// fp = fopen("d:\\a.txt", "r b");

// if(NULL == fp)

// {

// printf("Can not open this file!\n");

// exit(0);

// }

// fread(y, sizeof(int), sizeof(y)/sizeof(int), fp); // for(i = 0; i < 9; i++)

// {

// printf("%d ", y[i]);

// }

// printf("\n");

// fclose(fp);

/* 操作一块*/

STUDENT stu[3] = {

"0001", "赵军", 89,

"0002", "李千", 90,

"0003", "张芳", 100

};

STUDENT stu2;

FILE* fp = fopen("d:\\b.txt", "wb+");

if(NULL == fp)

{

printf("Can not open this file!\n");

exit(0);

}

fwrite(stu, sizeof(STUDENT), sizeof(stu)/sizeof(STUDENT), fp);

rewind(fp); /* 文件指针重新回到头*/

fseek(fp, sizeof(STUDENT), SEEK_SET); /* 定位,此处跳过一条记录*/

fread(&stu2, sizeof(STUDENT), 1, fp); /* 从文件中读取指定大小的块*/

printf("%s-->%s-->%lf\n", stu2.sNo, stu2.sName, stu2.score);

fclose(fp);

}

4.格式化操作文本文件:

函数原型:

int fprintf(FILE *fp,const char *format[,argument,…])

int fscanf(FILE *fp,const char *format[,address,…])

功能:按格式对文件进行读写操作。二进制的文件不要用,而改用fread和fwrite。

fprintf:输出列表中的各项数据按指定的格式写入到fp指向的文件中

fscanf:从fp所指向的文件中按指定的格式读取数据依次存放到输出列表中的各项。

返回值:成功,返回读写的个数;出错或文件尾,返回EOF(-1),eg:

fprintf(fp,“%d,%6.2f”,i,t); //将i和t按%d,%6.2f格式输出到fp文件

fscanf(fp,“%d,%f”,&i,&t); //若文件中有3,4.5 ,则将3送入i, 4.5送入t 示例:

#include

#include

void main()

{

int a = 5, b;

double x = 3.5, y;

char szText[20] = "HelloWorld!", szNewText[20];

FILE* fp = fopen("d:\\c.txt", "w+");

if(fp == NULL)

{

printf("Can not open this file!\n");

exit(0);

}

fprintf(fp, "%d %lf %s\n", a, x, szText);

rewind(fp);

fscanf(fp, "%d %lf %s\n", &b, &y, szNewText);

printf("%d---%lf---%s\n", b, y, szNewText);

fclose(fp);

}

5. rewind函数

函数原型:void rewind(FILE *fp)

功能:重置文件位置指针到文件开头

返回值:无

6. fseek函数

函数原型:int fseek(FILE *fp,long offset,int whence)

功能:文件随机定位函数,改变文件位置指针的位置。一般用于二进制文件。

返回值:成功,返回0;失败,返回非0值

Eg: fseek(fp,100L,0);

fseek(fp,50L,1);

fseek(fp,-10L,2);

第2个参数offset表示相对whence为基点的偏移字节数,要求是长整型数据,可以是正整数(向文件尾方向移动)、0(不移动)、负整数(向文件头方向移动)。

第3个参数可以用如下的宏替换:

?文件开始SEEK_SET 0

?文件当前位置SEEK_CUR 1

?文件末尾SEEK_END 2

7.ftell函数

函数原型:long ftell(FILE *fp)

功能:返回位置指针当前位置(用相对文件开头的位移量表示)

返回值:成功,返回当前位置指针位置(长整型);失败,返回-1L,

可以利用fseek和ftell函数实现求文件的元素个数。如下:

#include

using namespace std;

int main()

{

FILE* fp1 = fopen("c:\\a.txt", "w");

if(NULL == fp1)

{

cout << "Can not open this file!" << endl;

exit(0);

}

char c = '\0';

while((c = getchar()) != '#')

{

fputc(c, fp1);

}

fseek(fp1, 0L, 2); //定位到文件末尾

cout << ftell(fp1) << endl; //告诉当前文件指针的位置

fclose(fp1);

return 0;

}

8.ferror函数

函数原型:int ferror(FILE *fp)

功能:测试文件是否出现错误

返回值:未出错,0;出错,非0

说明:

每次调用文件输入输出函数,均产生一个新的ferror函数值,所以应及时测试

fopen打开文件时,ferror函数初值自动置为0

9.remove函数

函数原型:int remove(char* path)

功能:删除指定路径的文件

返回值:成功删除,0;否则,-1

举例:如下

#include

void main()

{

if(-1 == remove("d:\\c.txt")) //删除d盘下的c.txt

{

printf("remove failed!\n");

}

}

10. clearerr函数

函数原型:void clearerr(FILE *fp)

功能:使文件错误标志置为0

返回值:无

说明:出错后,错误标志一直保留,直到对同一文件调clearerr(fp)或rewind或任何其它一个输入输出函数

举例:如下

#include

int main(void)

{

FILE *fp = fopen("abc.txt", "w");

getc(fp); //此时没有内容,读取失败

if (ferror(fp))

{

printf("Error reading from abc.txt\n");

clearerr(fp); //清除错误标志

}

if(!ferror(fp))

printf("Error indicator cleared!\n");

fclose(fp);

return 0;

}

11. 系统自动打开和关闭三个标准文件:

标准输入------------键盘stdin

标准输出------------显示器stdout

标准出错输出------显示器stderr

C语言程序中关于文件的操作

文件操作函数C语言(FILE fputc fgetc fputs fgets fscanf fprintf) 在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。 一、流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:typedef struct{ int level;/*fill/empty level of buffer*/ unsigned flags;/*File status flags*/ char fd;/*File descriptor*/ unsigned char hold;/*Ungetc char if no buffer*/ int bsize;/*Buffer size*/ unsigned char_FAR*buffer;/*Data transfer buffer*/ unsigned char_FAR*curp;/*Current active pointer*/ unsigned istemp;/*Temporary file indicator*/ short token;/*Used for validity checking*/ }FILE;/*This is the FILE object*/ FILE这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行,此种文件操作常用的函数见下表函数功能 fopen()打开流 fclose()关闭流 fputc()写一个字符到流中 fgetc()从流中读一个字符 fseek()在流中定位到指定的字符 fputs()写字符串到流 fgets()从流中读一行或指定个字符 fprintf()按格式输出到流 fscanf()从流中按格式读取 feof()到达文件尾时返回真值 ferror()发生错误时返回其值 rewind()复位文件定位器到文件开始处 remove()删除文件 fread()从流中读指定个数的字符 fwrite()向流中写指定个数的字符 tmpfile()生成一个临时文件流 tmpnam()生成一个唯一的文件名 下面就介绍一下这些函数 1.fopen() fopen的原型是:FILE*fopen(const char*filename,const char*mode),fopen实现三个功

Linux下C语言的文件读写

Linux下C语言的文件(fputc,fgetc,fwrite,fread对文件读写操 作) //================================== fputc 向文件写入字符 #include #include main() { FILE *fp; char ch; if((fp=fopen("test.txt","w"))==NULL) { printf("不能打开文件\n"); exit(0); } while ((ch=getchar())!='\n') fputc( ch, fp ); fclose(fp); } ------------- 小提示: fp=fopen("test.txt","w") ,把"w"改为"a" 可以创建文件并且追加写入内容 exit(0); 需要包含stdlib.h 头文件,才能使用 //============================================================ fgetc 读取字符 #include #include main( int argc, char *argv[] ) { char ch;

FILE *fp; int i; if((fp=fopen(argv[1],"r"))==NULL) { printf("不能打开文件\n"); exit(0); } while ((ch=fgetc(fp))!=EOF) putchar(ch); fclose(fp); } 文件结尾,通过判断EOF //============================================================== fwrite 的使用 使数组或结构体等类型可以进行一次性读写 #include #include main() { FILE *fp1; int i; struct student{ char name[10]; int age; float score[2]; char addr[15]; }stu; if((fp1=fopen("test.txt","wb"))==NULL) { printf("不能打开文件"); exit(0); } printf("请输入信息,姓名年龄分数1 分数2 地址:\n"); for( i=0;i<2;i++) { scanf("%s %d %f %f %s",https://www.wendangku.net/doc/fe15027991.html,,&stu.age,&stu.score[0],&stu.score[1], stu.addr);

C语言文件操作大全

1.创建文件夹 //using System.IO; Directory.CreateDirectory(%%1); 2.创建文件 //using System.IO; File.Create(%%1); 3.删除文件 //using System.IO; File.Delete(%%1); 4.删除文件夹 //using System.IO; Directory.Delete(%%1); 5.删除一个目录下所有的文件夹 //using System.IO; foreach (string dirStr in Directory.GetDirectories(%%1)) { DirectoryInfo dir = new DirectoryInfo(dirStr); ArrayList folders=new ArrayList(); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); for (int i = 0; i < folders.Count; i++) { FileInfo f = folders[i] as FileInfo; if (f == null) { DirectoryInfo d = folders[i] as DirectoryInfo; d.Delete(); } } } 6.清空文件夹 //using System.IO; Directory.Delete(%%1,true); Directory.CreateDirectory(%%1); 7.读取文件 //using System.IO; StreamReader s = File.OpenText(%%1); string %%2 = null; while ((%%2 = s.ReadLine()) != null){

C语言读写文件操作

C语言读写文件操作 #include #include #include FILE *stream;//, *stream2; FILE *stream2; void main( void ) { int numclosed; char *list; list="这个程序由czw编写"; //试图打开文件data.txt,如果该文件不存在,则自动创建 if( (stream= fopen( "data.txt", "r" )) == NULL ) { printf( "试图打开'data.txt'\n" ); printf( "'data.txt'不存在\n" ); printf( "'data.txt'被创建\n" ); } else printf( "'data.txt'被打开\n" ); //以写入方式打开 if( (stream2 = fopen( "data.txt", "w+" )) == NULL ) printf( "'data.txt'不存在\n" ); else { printf( "'data.txt'成功被打开\n" ); fwrite(list,strlen(list),30,stream2); printf("写入数据成功\n"); } //如果文件data.txt存在,就会打开成功,则stream!=NULL,这时就关闭stream if (stream!=NULL) if( fclose( stream) ) printf( "文件流 stream 被关闭\n" ); //关闭所有打开的文件流,返回关闭的文件流个数 numclosed = _fcloseall( );

C语言 文件操作

C语言中的文件操作 12.1请编写一个程序,把一个文件的内容复制到另一个文件中。 程序如下: #include main() { char ch; FILE *fp1; FILE *fp2; if((fp1=fopen("C:\\Users\\acer\\Documents\\1.txt","r"))==NULL) { printf("The file 1.txt can not open!"); exit(0); } if((fp2=fopen("C:\\Users\\acer\\Documents\\2.txt","w"))==NULL) { printf("The file 2.txt can not open!"); exit(0); } ch=fgetc(fp1); while(!feof(fp1)) { fputc(ch,fp2); ch=fgetc(fp1); } fclose(fp1); fclose(fp2); } 运行结果: 12.3请编写一个程序,比较两个文件,如果相等则返回0;否则返回1。

程序如下:#include main() { FILE *f1,*f2; char a,b,c; int x; printf("input strings for file1\n"); f1=fopen("file1","w"); while((c=getchar())!= EOF) putc(c,f1); fclose(f1); printf("output strings for file1\n"); f1=fopen("file1","r"); while((c=getc(f1))!= EOF) printf("%c",c); fclose(f1); printf("\n\ninput strings for file2\n"); f2=fopen("file2","w"); while((c=getchar())!= EOF) putc(c,f2); fclose(f2); printf("\noutput strings for file2\n"); f1=fopen("file2","r"); while((c=getc(f2))!= EOF) printf("%c",c); fclose(f2); f2=fopen("file2","r"); getch(); }

C语言中文件_数据的输入输出_读写

C语言中文件,数据的输入输出,读写. 文件是数据的集合体,对文件的处理过程就是对文件的读写过程,或输入输出过程。 所谓文件是指内存以外的媒体上以某种形式组织的一组相关数据的有序集合。文件分类: 顺序文件,随机文件。 文本文件和二进制文件。 文本文件也称为ASCII文件,在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。 文本文件可以在屏幕上按字符显示,源程序文件就是文本文件,由于是按字符显示,所以能读懂文件内容。 二进制文件是按二进制编码方式来存放的。这里主要讨论文件的打开,关闭,读,写,定位等操作。 文件的存取方法 C程序的输入输出(I/O)有两种方式:一种称为标准I/O或流式I/O,另一种称为低级I/O。流式I/O是依靠标准库函数中的输入输出函数实现的。低级I/O利用操作系统提供的接口函数(称为底层接口或系统调用)实现输入输出,低级I/O 主要提供系统软件使用。 在C语言中用一个FILE类型的指针变量指向一个文件,(FILE类型是系统在stdio.h中定义的描述已打开文件的一种结构类型),这个指针称为文件指针。FILE *指针变量标识符; 如 FILE *fp; 文件的打开与关闭 所谓打开文件,指的是建立文件的各种有关信息,并使文件指针指向该文件,以便对它进行操作。 关闭文件则是断开指针与文件之间的联系,也就禁止再对该文件进行操作。 1、fopen 函数原型:FILE *fopen(const char *filename,const char *mode); Fopen函数用来打开一个文件,前一部分用来说明文件路径及文件名,后一部分mode指出了打开文件的存取方式;返回值是被打开文件的FILE型指针,若打开失败,则返回NULL。打开文件的语法格式如下: 文件指针名=fopen(文件名,使用文件方式); 文件指针名必须被说明为FILE类型的指针变量。 FILE *fp; fp=fopen(“C:\\Windowss\\abc.txt”,”r”); 注意用两个反斜杠\\来表示目录间的间隔符。 存取文件的模式是一个字符串,可以由字母r,w,a,t,b及+组合而成,各字符的含

C语言 文件练习题

C语言文件练习题 1.系统的标准输入文件是指_________. a)键盘 b)显示器 c)软盘 d)硬盘 2.若执行fopen函数时发生错误,则函数的返回值是______. a)地址值 b)0 c)1 d)EOF 3.若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是______. a)"ab+" b)"wb+" c)"rb+" d)"ab" 4.fscanf函数的正确调用形式是______. a)fscanf(fp,格式字符串,输出表列) ) 11.下列关于C语言数据文件的叙述中正确的是________ A)文件由ASCII码字符序列组成,C语言只能读写文本文件 B)文件由二进制数据序列组成,C语言只能读写二进制文件 C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 12.函数fseek(pf, OL,SEEK_END)中的SEEK_END代表的起始点是________ A)文件开始B)文件末尾C)文件当前位置D)以上都不对 13.C语言中,能识别处理的文件为_______ A)文本文件和数据块文件B)文本文件和二进制文件 C)流文件和文本文件D)数据文件和二进制文件

14.若调用fputc函数输出字符成功,则其返回值是________ A)EOF B)1 C)0 D)输出的字符 15 已知函数的调用形式:fread(buf,size,count,fp),参数buf的含义是______ A)一个整型变量,代表要读入的数据项总数 B)一个文件指针,指向要读的文件 C)一个指针,指向要读入数据的存放地址 D)一个存储区,存放要读的数据项 16 当顺利执行了文件关闭操作时,fclose函数的返回值是_________ A)-1 B)TRUE C)0 D)1 17.如果需要打开一个已经存在的非空文件“Demo”进行修改下面正确的选项是______ 盘 d) 为pname指定的相应文件开辟一个缓冲区,调用操作系统提供的打开或 建立新文件功能; 22.利用fwrite (buffer, sizeof(Student),3, fp)函数描述不正确的_________. a) 将3个学生的数据块按二进制形式写入文件; b) 将由buffer指定的数据缓冲区内的3* sizeof(Student)个字节的数据写入指定文件; c) 返回实际输出数据块的个数, 若返回0值表示输出结束或发生了错误; d) 若由fp指定的文件不存在,则返回0值; 23.利用fread (buffer,size,count,fp)函数可实现的操作_________. a) 从fp指向的文件中,将count个字节的数据读到由buffer指出的数据区

C语言文件操作命令

C语言文件操作函数大全 clearerr(清除文件流的错误旗标) 相关函数 feof 表头文件 #include 定义函数 void clearerr(FILE * stream); 函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。 返回值 fclose(关闭文件) 相关函数 close,fflush,fopen,setbuf 表头文件 #include 定义函数 int fclose(FILE * stream); 函数说明 fclose()用来关闭先前fopen()打开的文件。此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源。 返回值若关文件动作成功则返回0,有错误发生时则返回EOF并把错误代码存到errno。 错误代码 EBADF表示参数stream非已打开的文件。 范例请参考fopen()。 fdopen(将文件描述词转为文件指针) 相关函数 fopen,open,fclose 表头文件 #include 定义函数 FILE * fdopen(int fildes,const char * mode); 函数说明 fdopen()会将参数fildes 的文件描述词,转换为对应的文件指针后返回。参数mode 字符串则代表着文件指针的流形态,此形态必须和原先文件描述词读写模式相同。关于mode 字符串格式请参考fopen()。 返回值转换成功时返回指向该流的文件指针。失败则返回NULL,并把错误代码存在errno中。 范例 #include main() { FILE * fp =fdopen(0,”w+”); fprintf(fp,”%s\n”,”hello!”); fclose(fp); } 执行 hello! feof(检查文件流是否读到了文件尾) 相关函数 fopen,fgetc,fgets,fread 表头文件 #include 定义函数 int feof(FILE * stream); 函数说明 feof()用来侦测是否读取到了文件尾,尾数stream为fopen()所返

C语言文件操作之绝对路径

C语言中对文件进行操作如何使用绝对路径? 我编了一个小程序试了一下,好像默认的路径是在生成的.exe文件所在目录下。如果使用像D:\\ABC.TXT这样的路径可以在D盘下对ABC.TXT进行操作,但如果使用D:\\SSS\ABC.TXT就不正确了,创建的文件是SSSABC.TXT,不支持多级的路径,它把路径和文件名弄混了。 到底怎么办 D:\\SSS\\ABC.TXT //你少了个\,在C字符串中,出现\的地方,你一律打两个\\就行了。 请问啊,C语言里,fopen、fread与fwrite的参数中,要求文件名,用写盘符吗? 写绝对路径吗?#include #include int main() { FILE *pfile = fopen("d:\\Jimmy.txt","wb");//Jimmy.txt写在D盘根目录下绝对路径//以2进制写入方式打开 //FILE *pfile = fopen("\\Jimmy.txt","wb");//Jimmy.txt写在当前目录下相对路径//以2进制写入方式打开 char sz[6] = "Billy"; fwrite("Jimmy",6,1,pfile);//将字串"Jimmy"写入文件pfile fclose(pfile); pfile = fopen("d:\\Jimmy.txt","rb");//以2进制读取方式打开绝对路径,D盘根目录 //pfile = fopen("\\Jimmy.txt","rb");//以2进制读取方式打开相对路径,当前路径 printf(sz);//显示原字串 printf("\n"); fread((char*)sz,6,1,pfile);//由开头读入6字节信息 printf(sz);//显示读取的信息 printf("\n"); fclose(pfile); system("pause"); return 0; }

c语言程序中关于文件的操作

文件操作函数 C语言 (FILE fputc fgetc fputs fgets fscanf fprintf) 在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。 一、流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在中定义如下: typedef struct { int level; /* fill/empty level of buffer */ unsigned flags; /* File status flags */ char fd; /* File descriptor */ unsigned char hold; /* Ungetc char if no buffer */ int bsize; /* Buffer size */ unsigned char _FAR *buffer; /* Data transfer buffer */ unsigned char _FAR *curp; /* Current active pointer */ unsigned istemp; /* Temporary file indicator */ short token; /* Used for validity checking */ } FILE; /* This is the FILE object */ FILE这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行,此种文件操作常用的函数见下表函数功能 fopen() 打开流 fclose() 关闭流 fputc() 写一个字符到流中

c语言文件操作的语句

文件操作 //1.定义文件类型指针 FILE *fp; //2. 以只读方式打开文件 fp = fopen(“data.in”, “r”); //3. 判断文件打开是否失败 if (fp==NULL){ printf(“Error 1\n”); return 1; } // 4. 判断整型数据输入是否非法 // ①文件为空或数据格式不符致使输入不成功,即没读到数据 //②输入数据不合题意(假设题目要求31 &&n < 10) { // ①|| !②printf (“Error 2\n”); fclose(fp); //关闭文件 return 2; } // 5. 判断字符串输入是否非法 // ①文件为空或数据格式不符致使输入不成功,即没读到字符串str //②输入数据不合题意(假设题目要求串长strlen(str)<80)lenth = strlen( (str, 80, fp)

if ( !(0< lenth && lenth <80) ) { // fgets失败返回0 printf (“Error 2\n”); fclose(fp); //关闭文件 return 2; } // 6. 判断字符输入是否非法: // ①文件为空或数据格式不符致使输入不成功,即没读到字符ch //②输入数据不合题意(假设题目要求ch为数字) if ( ch = fgetc(fp) == EOF || !(…0?<=ch && ch<=’9’ ) ) { // ①||!②printf (“Error 2\n”); fclose(fp); //关闭文件 return 2; } //7. 调用fscanf函数从文件输入n个学生信息的结构体型数据 #define SIZE 60 struct student_type{ unsigned long num; char name[10]; int score[3]; }stud[SIZE];

C语言文件操作函数freopen

freopen 目录 函数简介 程序例 函数简介 函数名: freopen 功能: 替换一个流,或者说重新分配文件指针,实现重定向。如果stream流已经打开,则先关闭该流。如果该流已经定向,则freopen将会清除该定向。此函数一般用于将一个指定的文件打开一个预定义的流:标准输入、标准输出或者标准出错。 用法: FILE *freopen(const char *filename,const char *type, FILE *stream); 头文件:stdio.h 返回值:如果成功则返回该指向该stream的指针,否则为NULL。 程序例 举例1: #include int main() { /* redirect standard output to a file */ if (freopen("D:OUTPUT.txt", "w", stdout)==NULL) fprintf(stderr, "error redirecting stdout\n"); /* this output will go to a file */ printf("This will go into a file."); /* close the standard output stream */ fclose(stdout); return 0; } 举例2: 如果上面的例子您没看懂这个函数的用法的话,请看这个例子。这个例子实现了从stdout到一个文本文件的重定向。即,把输出到屏幕的文本输出到一个文本文件中。 #include int main() { int i; if (freopen("D:OUTPUT.txt", "w", stdout)==NULL) fprintf(stderr, "error redirecting\stdout\n"); for(i=0;i<10;i++) printf("%3d",i); printf("\n"); fclose(stdout);

原创C语言位图操作

#ifndef BITMAPHEARDER_H #define BITMAPHEARDER_H //#include"DefineBM.h" #include #include #include #include #include using namespace std; static FILE *fp; //数据类型定义 typedef unsigned short WORD; typedef unsigned long DWORD; typedef long LONG; typedef unsigned char BYTE; typedef struct tagBMFILEHEADER {//位图文件头结构,该结构体占14个字节。 WORD bfType;//位图文件类型,必须是0x424D,即字符串"BM",也就是说,所有的"*.bmp"文件的头两个字节都是"BM"。 DWORD bfSize;// 位图文件的大小,以字节为单位 WORD bfReserved1;//位图文件保留字,必须为0 WORD bfReserved2; // 位图文件保留字,必须为0 DWORD bfOffBits;// 位图数据的起始位置,以相对于位图文件头的偏移量表示,以字节为单位 }BMFILEHEADER; typedef struct tagBMINFOHEADER {//位图信息头结构,该结构体共占40个字节。 DWORD biSize;// 本结构所占用字节数,40个字节 DWORD biSizeImage;// 位图的大小,以字节为单位 LONG biWidth;// 位图的宽度,以像素为单位 LONG biHeight;// 位图的高度,以像素为单位 WORD biPlanes;// 目标设备的级别,必须为1 WORD biBitCount;// 每个像素所需的位数,必须是1(双色),4(16色),8(256色)或24(真彩色)之一 DWORD biCompresses;// 位图压缩类型,必须是0(不压缩),1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一 LONG biXPelsPelMeter;// 位图水平分辨率,每米像素数 LONG biYPelsPelMeter; // 位图垂直分辨率,每米像素数 DWORD biClrUsed;// 位图实际使用的颜色表中的颜色数,如果该值为零,则用到的颜色数为2的biBitCount次幂。

C语言文件操作函数大全(超详细).docx

fopen (打开文件) 相关函数open, fclose 表头文件#include 定义函数FILE * fopen (const char * path, const char * mode); 两数说明参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流 形态。 mode有下列几种形态字符串: r打开只读文件,该文件必须存在。 r+打开可读写的文件,该文件必须存在。 w打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。 w+打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。 a以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。 a+以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 复制代码代码如下: r Open text file for reading. The stream is positioned at the beginning o f the file. r+ Open for reading and writing. The stream is positioned at the beginning of the file. w Truncate file to zero length or create text file for writing? The strea m is positioned at the beginning of the file. w+ Open for reading and writing? The file is created if it does not exist, otherwise it is truncatod? The stream is posi -

C语言文件操作

C语言中没有输入输出语句,所有的输入输出功能都用ANSI C提供的一组标准库函数来实现。文件操作标准库函数有: 文件的打开操作 fopen 打开一个文件 文件的关闭操作 fclose 关闭一个文件 文件的读写操作 fgetc 从文件中读取一个字符 fputc 写一个字符到文件中去 fgets 从文件中读取一个字符串 fputs 写一个字符串到文件中去 fprintf 往文件中写格式化数据 fscanf 格式化读取文件中数据 fread 以二进制形式读取文件中的数据 fwrite 以二进制形式写数据到文件中去 getw 以二进制形式读取一个整数 putw 以二进制形式存贮一个整数 文件状态检查函数 feof 文件结束 ferror 文件读/写出错 clearerr 清除文件错误标志 ftell 了解文件指针的当前位置 文件定位函数 rewind 反绕 fseek 随机定位 文件的打开 1.函数原型 FILE *fopen(char *pname,char *mode) 2.功能说明 按照mode 规定的方式,打开由pname指定的文件。若找不到由pname指定的相应文件,就按以下方式之一处理: (1)此时如mode 规定按写方式打开文件,就按由pname指定的名字建立一个新文件; (2)此时如mode 规定按读方式打开文件,就会产生一个错误。 打开文件的作用是: (1)分配给打开文件一个FILE 类型的文件结构体变量,并将有关信息填入文件结构体变量; (2)开辟一个缓冲区; (3)调用操作系统提供的打开文件或建立新文件功能,打开或建立指定文件;FILE *:指出fopen是一个返回文件类型的指针函数;

C语言文件操作常用函数详解

C语言文件操作详解 在C语言文件操作的过程中,通常有以下几种方式: 1.单个字符的操作: fputc 函数原型:intfputc(intc,FILE*fp); 功能:把一字节代码c写入fp指向的文件中 返回值:正常,返回c;出错,为EOF(-1) fgetc 函数原型:intfgetc(FILE*fp); 功能:从fp指向的文件中读取一字节代码 返回值:正常,返回读到的代码值;读到文件尾或出错,为EOF(-1) feof 函数原型:intfeof(FILE*fp); 功能:判断文件是否到末尾 返回值:文件未结束,返回0;文件结束,返回真(非0)示例: #include #include voidmain() { charch; FILE*fp1=fopen("d:\\a.dat","wb");/*以写的方式打开二进制文件*/ FILE*fp2; if(NULL==fp1) { printf("Cannotopenthisfile!\n"); exit(0); } printf("pleaseinputastring:"); ch=getchar(); while(ch!='#')/*输入#号结束*/ { fputc(ch,fp1);/*依次向文件中写*/ ch=getchar(); } fflush(stdin);/*清空输入缓冲区*/ fclose(fp1); /*关闭文件*/ fp2=fopen("d:\\a.dat","rb");/*以读的方式打开二进制文件*/ if(NULL==fp2) { printf("Cannotopenthisfile!\n"); exit(0);

C语言文件读写基本操作

#include #include //写文件 bool writeToFile(); //读文件所有内容 bool readFromFile(); //获取文件长度 long getLength(FILE *fp); //读文件单行 void readSingleLine(); void main() { if(writeToFile()) { if(!readFromFile()) { printf("读取失败\n"); } printf("\n读取第一行:\n"); readSingleLine(); } } bool writeToFile() { FILE *fp; char *temp = "文件写入测试1\r\n文件写入测试2\r\n文件写入测试3"; fp = fopen("d:\\test.txt", "w"); if(!fp) { printf("文件不存在\n"); return false; } fprintf(fp, "%s", temp); fclose(fp); return true;

} bool readFromFile() { FILE *fp; char *temp; fp = fopen("d:\\test.txt", "r"); if(!fp) { printf("文件不存在\n"); return false; } long n = getLength(fp); temp = (char*) malloc(sizeof(char) * n); while(!feof(fp)) { fscanf(fp, "%s", temp); printf("%s\n", temp); } printf("文件长度:%ld\n", n); fclose(fp); return true; } long getLength(FILE *fp) { if(!fp) { return 0; } fseek(fp, 0, SEEK_SET); fseek(fp, 0, SEEK_END); long t = ftell(fp); fseek(fp, 0, SEEK_SET); return t; } void readSingleLine() { FILE *fp;

相关文档