用于文件系统的C库函数

 9/20/2017 学<LINUX C编程实战》中


 

1.打开

File *fopen(const char *path , const char * mode);

  fopen实现打开指定的文件FileName,mode指打开的款式,C语言中打开的款式种类如下:

  C语言 1

  C语言 2

  b用于打开二进制文件要非文本文件,这是DOS、Windows下之情事。在Linux中未区分二进制文件以及文书文件。

  同时注意,标志还是const char *
类型,即都是字符串字面值,需要因此到双引号,写成fopen(”1.txt” , r);
是误的。

  由于fopen();的返回值是FILE
*类,所以用一个平等档次的对象要fp去标识fopen();,即fp标识目标文件。之后对fp的操作就凡是针对目标文件的操作。  

 

2.读写

  支持字符串、字符等单位展开读写文件。

int fgetc(FILE *stream);
int fputc(int c, FILE *stream);
char *fgets(char *s, int n, FILE *stream);
int fputs(const char *s, FILE *stream);
int fprintf(FILE *stream, const char *format, ...);
int fscanf (FILE *stream, const char *format, ...);
size_t fread(void *ptr, size_t size, size_t n, FILE *stream);
size_t fwrite (const void *ptr, size_t size, size_t n, FILE *stream);

  fread();:实现由流stream中读出n个字段,每个字段长size个字节,并以n个字段放入名也ptr的字符数组中,返回实际读取的字段数。

  fwrite();:实现由缓冲区ptr所依赖的数组中把n个字段写副流stream,每个字段长size个字节,返回实际写副的字段数。

  fputs();:实现了将字符串写副流stream中。参数s是一个频繁组,包含了因为’\0’也最终的字符序列。参数stream是依靠为FILE对象的指针,该目标标识了若吃描绘副的流。返回值:成功之话语返回一个非负值,失败的语句返回一个EOF。

  注意要只要贯彻output功能,需要因此一个字符串数组存储内容并出口,fputs();是于文件被”ouput“,即写副文件,并非输出文件。

3.定位

int fgetpos(FILE *stream, fpos_t *pos);
int fsetpos(FILE *stream, const fpos_t *pos);
int fseek(FILE *stream, long offset, int whence);

  返回值:成功返回回0,否则回非0。

  用法如下:

#include <stdio.h>

int main ()
{
   FILE *fp;
   fpos_t position;

   fp = fopen("file.txt","w+");
   fgetpos(fp, &position);
   fputs("Hello, World!", fp);

   fsetpos(fp, &position);
   fputs("这将覆盖之前的内容", fp);
   fclose(fp);

   return(0);
}

  创建一个文件file.txt,并坐读写的方打开,首先使fgetpos();获取文件的始位置,写副“Hello,
World!”,然后利用fsetC语言pos();重置为文件头的职务。再写副”这将掩盖前的内容“,实现内容之幂。最终输出”浙江蒙前的情“。

  

4.关闭

int fclose(FILE *stream);

  关闭流stream,刷新缓冲区。参数stream是FILE对象的指针,该目标指定了而让关闭的流动。

  返回值:成功关闭返回0,失败返回EOF。

 

例程:

  编写一个主次,在当前目录下创造用户可读写文件“hello.txt”,在里边写副“Hello, software
weekly”,关闭该文件。再次打开该公文,读取其中的始末并出口在屏幕上。

  

 1 #include <stdio.h>
 2 #define LENGTH 100
 3 
 4 int main()
 5 {
 6     FILE *fp;
 7     char str[LENGTH];
 8     fp = fopen("hello2.txt" , "w+");
 9     if(fp)
10     {
11         fputs("Hello,software weekly" , fp);
12         fclose(fp);
13     }    
14     fp = fopen("hello2.txt" , "r");  
15     fgets(str , LENGTH , fp);
16     printf("%s\n" , str); 
17     return 0;
18 }

  output:bw98@ubuntu:~/Practice/project3$ ./2
     Hello,software weekly