网站首页 > 文章中心 > 其它

c语言写文件的函数

作者:小编 更新时间:2023-10-02 07:08:12 浏览量:100人看过

C语言最文件操作函数(2)

相关函数 fopen,fclose

表头文件 #includestdio.h

定义函数 FILE * freopen(const char * path,const char * mode,FILE * stream);

函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode请参考fopen()说明.参数stream为已打开的文件指针.Freopen()会将原stream所打开的文件流关闭,然后打开参数path的文件.

返回值 文件顺利打开后,指向该流的文件指针就会被返回.如果文件打开失败则返回NULL,并把错误代码存在errno 中.

范例

复制代码代码如下:

#includestdio.h

main()

{

FILE * fp;

fp=fopen("/etc/passwd","r");

fp=freopen("/etc/group","r",fp);

fclose(fp);

}

相关函数 rewind,ftell,fgetpos,fsetpos,lseek

定义函数 int fseek(FILE * stream,long offset,int whence);

函数说明 fseek()用来移动文件流的读写位置.参数stream为已打开的文件指针,参数offset为根据参数whence来移动读写位置的位移数.

参数 whence为下列其中一种:

SEEK_SET从距文件开头offset位移量为新的读写位置.SEEK_CUR 以目前的读写位置往后增加offset个位移量.

SEEK_END将读写位置指向文件尾后再增加offset个位移量.

当whence值为SEEK_CUR 或SEEK_END时,参数offset允许负值的出现.

下列是较特别的使用方式:

①.) 欲将读写位置移动到文件开头时:fseek(FILE *stream,0,SEEK_SET);

返回值 当调用成功时则返回0,若有错误则返回-1,errno会存放错误代码.

附加说明 fseek()不像lseek()会返回读写位置,所以呢必须使用ftell()来取得目前读写的位置.

FILE * stream;

long offset;

fpos_t pos;

stream=fopen("/etc/passwd","r");

printf("offset=%d/n",ftell(stream));

rewind(stream);

fgetpos(stream,pos);

printf("offset=%d/n",pos);

pos=10;

fsetpos(stream,pos);

printf("offset = %d/n",ftell(stream));

fclose(stream);

offset =0

offset=10

相关函数 fseek,rewind,fgetpos,fsetpos

定义函数 long ftell(FILE * stream);

函数说明 ftell()用来取得文件流目前的读写位置.参数stream为已打开的文件指针.

返回值 当调用成功时则返回目前的读写位置,若有错误则返回-1,errno会存放错误代码.

错误代码 EBADF 参数stream无效或可移动读写位置的文件流.

范例 参考fseek().

相关函数 fopen,fread,fseek,fscanf

定义函数 size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream);

函数说明 fwrite()用来将数据写入文件流中.参数stream为已打开的文件指针,参数ptr 指向欲写入的数据地址,总共写入的字符数以参数size*nmemb来决定.Fwrite()会返回实际写入的nmemb数目.

返回值 返回实际写入的nmemb数目.

#define set_s (x,y) {strcoy(s[x].name,y);s[x].size=strlen(y);}

struct test

int size;

}s[nmemb];

set_s(0,"Linux!");

set_s(1,"FreeBSD!");

stream=fopen("/tmp/fwrite","w");

fwrite(s,sizeof(struct test),nmemb,stream);

执行 参考fread().

相关函数 read,fopen,fread,fgetc

定义函数 int getc(FILE * stream);

函数说明 getc()用来从参数stream所指的文件中读取一个字符.若读到文件尾而无数据时便返回EOF.虽然getc()与fgetc()作用相同,但getc()为宏定义,非真正的函数调用.

返回值 getc()会返回读取到的字符,若返回EOF则表示到了文件尾.

范例 参考fgetc().

相关函数 fopen,fread,fscanf,getc

定义函数 int getchar(void);

函数说明 getchar()用来从标准输入设备中读取一个字符.然后将该字符从unsigned char转换成int后返回.

返回值 getchar()会返回读取到的字符,若返回EOF则表示有错误发生.

附加说明 getchar()非真正函数,而是getc(stdin)宏定义.

int c,i;

c=getchar();

putchar(c);

相关函数 fopen,fread,fscanf,fgets

定义函数 char * gets(char *s);

函数说明 gets()用来从标准设备读入字符并存到参数s所指的内存空间,直到出现换行字符或读到文件尾为止,最后加上NULL作为字符串结束.

返回值 gets()若成功则返回s指针,返回NULL则表示有错误发生.

附加说明 由于gets()无法知道字符串s的大小,必须遇到换行字符或文件尾才会结束输入,所以呢容易造成缓冲溢出的安全性问题.建议使用fgets()取代.

范例 参考fgets()

相关函数 tmpfile

表头文件 #includestdlib.h

定义函数 char * mktemp(char * template);

函数说明 mktemp()用来产生唯一的临时文件名.参数template所指的文件名称字符串中最后六个字符必须是XXXXXX.产生后的文件名会借字符串指针返回.

返回值 文件顺利打开后,指向该流的文件指针就会被返回.如果文件打开失败则返回NULL,并把错误代码存在errno中.

附加说明 参数template所指的文件名称字符串必须声明为数组,如:

char template[ ]="template-XXXXXX";

不可用char * template="template-XXXXXX";

#includestdlib.h

char template[ ]="template-XXXXXX";

mktemp(template);

printf("template=%s/n",template);

相关函数 fopen,fwrite,fscanf,fputc

定义函数 int putc(int c,FILE * stream);

函数说明 putc()会将参数c转为unsigned char后写入参数stream指定的文件中.虽然putc()与fputc()作用相同,但putc()为宏定义,非真正的函数调用.

返回值 putc()会返回写入成功的字符,即参数c.若返回EOF则代表写入失败.

范例 参考fputc().

定义函数 int putchar (int c);

函数说明 putchar()用来将参数c字符写到标准输出设备.

返回值 putchar()会返回输出成功的字符,即参数c.若返回EOF则代表输出失败.

附加说明 putchar()非真正函数,而是putc(c,stdout)宏定义.

范例 参考getchar().

相关函数 fseek,ftell,fgetpos,fsetpos

定义函数 void rewind(FILE * stream);

函数说明 rewind()用来把文件流的读写位置移至文件开头.参数stream为已打开的文件指针.此函数相当于调用fseek(stream,0,SEEK_SET).

返回值

范例 参考fseek()

相关函数 setbuffer,setlinebuf,setvbuf

定义函数 void setbuf(FILE * stream,char * buf);

函数说明 在打开文件流后,读取内容之前,调用setbuf()可以用来设置文件流的缓冲区.参数stream为指定的文件流,参数buf指向自定的缓冲区起始地址.如果参数buf为NULL指针,则为无缓冲IO.Setbuf()相当于调用:setvbuf(stream,buf,buf?_IOFBF:_IONBF,BUFSIZ)

相关函数 setlinebuf,setbuf,setvbuf

定义函数 void setbuffer(FILE * stream,char * buf,size_t size);

函数说明 在打开文件流后,读取内容之前,调用setbuffer()可用来设置文件流的缓冲区.参数stream为指定的文件流,参数buf指向自定的缓冲区起始地址,参数size为缓冲区大小.

相关函数 setbuffer,setbuf,setvbuf

定义函数 void setlinebuf(FILE * stream);

函数说明 setlinebuf()用来设置文件流以换行为依据的无缓冲IO.相当于调用:setvbuf(stream,(char * )NULL,_IOLBF,0);请参考setvbuf().

相关函数 setbuffer,setlinebuf,setbuf

定义函数 int setvbuf(FILE * stream,char * buf,int mode,size_t size);

函数说明 在打开文件流后,读取内容之前,调用setvbuf()可以用来设置文件流的缓冲区.参数stream为指定的文件流,参数buf指向自定的缓冲区起始地址,参数size为缓冲区大小,参数mode有下列几种

_IONBF 无缓冲IO

_IOLBF 以换行为依据的无缓冲IO

_IOFBF 完全无缓冲IO.如果参数buf为NULL指针,则为无缓冲IO.

相关函数 fputc,getchar,getc

定义函数 int ungetc(int c,FILE * stream);

函数说明 ungetc()将参数c字符写回参数stream所指定的文件流.这个写回的字符会由下一个读取文件流的函数取得.

返回值 成功则返回c 字符,若有错误则返回EOF.

#include stdio.h

#include stdlib.h

int main()

FILE *fp = NULL;

char* str;

char re;

int num = 10;

str = (char*)malloc(100);

// printf("str=%s\n", str);

fp = fopen("/local/test.c","a◆");

if (fp==NULL){

printf("Fail to open file\n");

// ? ? fseek(fp,-1,SEEK_END);

num = ftell(fp);

printf("test file long:%d\n",num);

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

printf("str = %s\n",str);

printf("test a: %s\n",str);

while ((re=getc(fp))!=EOF){//getc可以用作fgetc用

printf("%c",re);

//fread(str,10,10,fp);

fgets(str,100,fp);

sprintf(str,"xiewei test is:%s", "ABCDEFGHIGKMNI");

// ?fprintf(fp,"%s\n",str);

if(str!=NULL){

free(str);

return 0;

C语言文件函数

//要另外说下如fprintf(stderr, "Can't open %s\n", file_app);这是向文件或者系统设备输出的函数;但他的文件指针为stderr;这是c中的标准错误输出设备指针,系统自动分配为显示器故相当于printf("Can't open %s\n", file_app);

#include string.h

void append(FILE *source, FILE *dest);

int main(void)

int files = 0; // 追加文件个数

char file_app[SLEN];

puts("Enter name of destination file:");//输出Enter name of destination file:

gets(file_app);//输入要追加的文件名

if ((fa = fopen(file_app, "a")) == NULL)//fa指向追加的目的文件,以追加方式打开文件,如果打开失败退出;

fprintf(stderr, "Can't open %s\n", file_app);

if (setvbuf(fa, NULL, _IOFBF, BUFSIZE) != 0)//创建缓冲器与流相关,大小为BUFSIZE,作用是提高IO速度;如果打开失败退出

fputs("Can't create output buffer\n", stderr);

puts("Enter name of first source file (empty line to quit):");//输出Enter name of first source file (empty line to quit):

while (gets(file_src) file_src[0] != '\0')//输入源文件如果是空串结束循环

if (strcmp(file_src, file_app) == 0)//如果源和追加文件相同

fputs("Can't append file to itself\n",stderr);

else if ((fs = fopen(file_src, "r")) == NULL)//如果打开源文件失败

fprintf(stderr, "Can't open %s\n", file_src);

else

if (setvbuf(fs, NULL, _IOFBF, BUFSIZE) != 0)//创建缓冲器与流相关,大小为BUFSIZE,作用是提高IO速度;如果打开失败开始下次循环

fputs("Can't create input buffer\n",stderr);

continue;

append(fs, fa);//函数

if (ferror(fs) != 0)//检查文件操作是否有错

fprintf(stderr,"Error in reading file %s.\n",

file_src);

if (ferror(fa) != 0)

fprintf(stderr,"Error in writing file %s.\n",

file_app);

fclose(fs);//关闭源文件

files◆◆;//追加文件数◆1

printf("File %s appended.\n", file_src);

puts("Next file (empty line to quit):");

printf("Done. %d files appended.\n", files);

fclose(fa);//关闭追加文件

void append(FILE *source, FILE *dest)

size_t bytes;

static char temp[BUFSIZE];

while ((bytes = fread(temp,sizeof(char),BUFSIZE,source)) 0)//把源文件的内容追加到追加文件,块大小sizeof(char),块数为BUFSIZE

fwrite(temp, sizeof (char), bytes, dest);//写文件块大小sizeof(char),块数为BUFSIZE

C语言中的Write函数

write()写文件函数

原形:int write(int handle,char *buf,unsigned len)

对于磁盘或磁盘文件,写操作从当前文件指针处开始,对于用O_APPEND选项打开的文件,写数据之前,文件指针指向EOF;对于设备,字节被直接传送到设备中.

扩展资料:

用法

头文件:unistd.h

write有两种用法.一种是:ssize_t write(int fd, const void *buf, size_t nbyte);

fd:文件描述符;

buf:指定的缓冲区,即指针,指向一段内存单元;

nbyte:要写入文件指定的字节数;

返回值:写入文档的字节数(成功);-1(出错)

write函数把buf中nbyte写入文件描述符handle所指的文档,成功时返回写的字节数,错误时返回-1.

另一种是: write(const char* str,int n)

str是字符指针或字符数组,用来存放一个字符串.n是int型数,它用来表示输出显示字符串中字符的个数.

write("string",strlen("string");表示输出字符串常量

C语言常用的函数有哪些

C语言库函数,常用库函数有:

①.、scanf格式输入函数

①.0、fopen打开文件函数

①.1、getchar输入字符函数

扩展资料

语言组成:

①.、数据类型

C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型.

常量其值不可改变,符号常量名通常用大写.

变量是以某标识符为名字,其值可以改变的量.标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名.变量在编译时为其分配相应存储单元.

如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明.字符串也是一种数组.它们以ASCII的NULL作为数组的结束.要特别注意的是,方括内的索引值是从0算起的.

如果一个变量声明时在前面使用 * 号,表明这是个指针型变量.换句话说,该变量存储一个地址,而 *(此处特指单目运算符 * ,下同.C语言中另有 双目运算符 *) 则是取内容操作符,意思是取这个内存地址里存储的内容.指针是 C 语言区别于其他同时代高级语言的主要特征之一.

用C语言的函数创建、打开和读写文件

#include?stdio.h

void?main(int?argc,char?*argv[])?//命令行参数

int?ch;//定义文件类型指针

FILE?*fp;//判断命令行是否正确

return;?//键入了错误的命令行,结束程序的执行

//按读方式打开由argv[1]指出的文件

if((fp=fopen(argv[1],"r"))==NULL)

printf("The?file?%s?can?not?be?opened.\n",argv[1]);//打开操作不成功

return;//结束程序的执行

//成功打开了argv[1]所指文件

ch=fgetc(fp);?//从fp所指文件的当前指针位置读取一个字符

while(ch!=EOF)?//判断刚读取的字符是否是文件结束符

putchar(ch);?//若不是结束符,将它输出到屏幕上显示

ch=fgetc(fp);?//继续从fp所指文件中读取下一个字符

}?//完成将fp所指文件的内容输出到屏幕上显示

fclose(fp);?//关闭fp所指文件

c语言写入文件的函数

for (i=*p;i*p◆1;i◆◆)这一句就错大了.p还没有赋值,哪来的*p?所以再没有往下看.

以上就是土嘎嘎小编为大家整理的c语言写文件的函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章