相关函数 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;
//要另外说下如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
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语言库函数,常用库函数有:
①.、scanf格式输入函数
①.0、fopen打开文件函数
①.1、getchar输入字符函数
扩展资料
语言组成:
①.、数据类型
C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型.
常量其值不可改变,符号常量名通常用大写.
变量是以某标识符为名字,其值可以改变的量.标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名.变量在编译时为其分配相应存储单元.
如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明.字符串也是一种数组.它们以ASCII的NULL作为数组的结束.要特别注意的是,方括内的索引值是从0算起的.
如果一个变量声明时在前面使用 * 号,表明这是个指针型变量.换句话说,该变量存储一个地址,而 *(此处特指单目运算符 * ,下同.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所指文件
for (i=*p;i*p◆1;i◆◆)这一句就错大了.p还没有赋值,哪来的*p?所以再没有往下看.
以上就是土嘎嘎小编为大家整理的c语言写文件的函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!