c语言文件流函数 c语言文件流是什么( 三 )


附加说明 putchar()非真正函数,而是putc(c,stdout)宏定义 。
范例 参考getchar() 。
24.rewind(重设文件流的读写位置为文件开头)
相关函数 fseek,ftell , fgetpos,fsetpos
表头文件 #includestdio.h
定义函数 void rewind(FILE * stream);
函数说明 rewind()用来把文件流的读写位置移至文件开头 。参数stream为已打开的文件指针 。此函数相当于调用fseek(stream,0,SEEK_SET) 。
返回值
范例 参考fseek()
25.setbuf(设置文件流的缓冲区)
相关函数 setbuffer,setlinebuf , setvbuf
表头文件 #includestdio.h
定义函数 void setbuf(FILE * stream,char * buf);
函数说明 在打开文件流后,读取内容之前,调用setbuf()可以用来设置文件流的缓冲区 。参数stream为指定的文件流,参数buf指向自定的缓冲区起始地址 。如果参数buf为NULL指针,则为无缓冲IO 。Setbuf()相当于调用:setvbuf(stream,buf,buf?_IOFBF:_IONBF,BUFSIZ)
返回值
26.setbuffer(设置文件流的缓冲区)
相关函数 setlinebuf,setbuf,setvbuf
表头文件 #includestdio.h
定义函数 void setbuffer(FILE * stream,char * buf,size_t size);
函数说明 在打开文件流后,读取内容之前,调用setbuffer()可用来设置文件流的缓冲区 。参数stream为指定的文件流,参数buf指向自定的缓冲区起始地址,参数size为缓冲区大小 。
返回值
27.setlinebuf(设置文件流为线性缓冲区)
相关函数 setbuffer,setbuf,setvbuf
表头文件 #includestdio.h
定义函数 void setlinebuf(FILE * stream);
函数说明 setlinebuf()用来设置文件流以换行为依据的无缓冲IO 。相当于调用:setvbuf(stream,(char * )NULL,_IOLBF,0);请参考setvbuf() 。
返回值
28.setvbuf(设置文件流的缓冲区)
相关函数 setbuffer , setlinebuf,setbuf
表头文件 #includestdio.h
定义函数 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 。
返回值
29.ungetc(将指定字符写回文件流中)
相关函数 fputc,getchar,getc
表头文件 #includestdio.h
定义函数 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);
//snprintf(str, 10,"test: %s", "0123456789012345678");
// 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);
printf("test a: %s\n",str);
sprintf(str,"xiewei test is:%s", "ABCDEFGHIGKMNI");
printf("str2=%s\n", str);
//fprintf(fp,"%s\n",str);
fwrite(str,2,10,fp);
num = ftell(fp);
if(str!=NULL){
free(str);
}

推荐阅读