2、linux文件编程(库函数)

来源:互联网 发布:航空霸业2飞机数据 编辑:程序博客网 时间:2024/05/24 23:12
 

              库函数

       C库函数的文件操作是独立于具体的操作系统平台的,不管是DOS,Windows,linux还是在Vxworks中都是这些库函数

              FILE  *fopen(const char *filename,const char *mode)

l         filename 打开的文件名(包含路径,没有则为当前路径)

l         mode 打开模式

 

常见打开模式:

Ø         r,rb                只读方式打开

Ø         w,wb             只写方式打开,如果文件不存在,则创建

Ø         a,ab               追加方式打开,若不存在,创建

Ø         r+,r_b,rb+      读写方式打开

Ø         w+,w+b,wh+ 读写方式打开,若不存在,创建

Ø         a+,a+b,ab+     读和追加方式打开。如果文件不存在,创建

 

库函数—读

size_t fread (void *ptr,size_t n,FILE *stream)

功能:

从stream指向的文件中读取n个字段,每个字段为size字节,读取的数据放入ptr所指的字符数组中,返回实际读取的字节数。

 

库函数—写

size_t fwrite(const void *ptr,size_t size,size_t n, FILE *stream)

功能:从缓冲区ptr所指的数组中把n个字段写到stream指向的文件,每个字段长为size字节,返回实际写入的字段数

 

库函数—读字符

       int fgetc(FILE *stream)

       从指定的文件中读一个字符

#include<stdio.h>

main()

{

       FILE *fp;

       char ch;

       if ((fp=fopen(“c1.txt”))==NULL)

{

printf(\n cannot open file ,press any key exit!);

getch();

exit(1);

}

ch=fgetc(fp);

while(ch!=EOF)

{

putchar(ch);

ch=fgetc(fp);

}

fclose(fp);

}

 

                     库函数—写字符

              int fputc(int c, FILE *stream)

              像指定文件中写入一个字符

              #include<stdio.h>

              main()

       {

              FILE *fp;

              char ch;

              if((fp=fopen(“string”,“wt+”))==NULL)

{

              printf(“cannot open file ”);

              getch();

              exit(1);

}

              printf(“input a string\n”);

              ch=getchar();      //从键盘输入中获取一个字符

              while(ch!=’\n’)    //直到输入回车键

{

fputc(ch,fp);

ch=getchar();

}

printf(“\n”);

fclose(fp);

}

 

              库函数—格式化读

       fscanf(FILE *stream,char *format[,argument,…..])  //’stream’表示一个文件

       从一个流中进行格式化输入

       #include<stdlib.h>

       #include<stdio.h>

       int main()

       {

       int i;

       printf(“input an integer”);

if (fscanf(stdin,”%d”,&i))            //‘stdin’标准的输入文件。输入一个整形(也可

//以是c或s等)格式化到i中

              Printf(“the integer read was %i\n”,i);

       return 0;

}

 

 

              库函数—格式化写

       Int fprintf(FILE *stream, char *format[,argument,……])

       格式化输出到一个流中

       #include<stdio.h>

       FILE *stream;

       Int main()

       {

       int i=10;

       double fp=1.5;

       char s[]=”this is a string”;

       char c=’\n’;

       stream=fopen(“fprintf.out”,”w”);

       fprintf(stream,”%s%c”,s,c);        //以字符串和字符的格式(char s[]=”this is a

// string”; char c=’\n’;)把数据传到stream所指//向的fprintf.out文件中

       fprintf(stream,”%d\n”,i);

       fprinf(stream,”%f\n”,fp);

       fclose(stream);

}

 

 

              库函数—定位

       int fseek(FILE *stream, long offset ,int whence)

whence:

SEEK_SET     从文件的开始处开始搜索

SEEK_CUR    从当前位置开始搜索

SEEK_END    从文件的结束处开始搜索

 

              路径获取

       在编写程序的时候,有时候我们需要得到当前路径。C库函数提供了getcwd来解决这个问题

       char *getwd(char *buffer,size_t size)

       我们提供size大小的buffer,getcwd会把当前的路径名复制到buffer中,如果buffer太小,返回-1.

#include<unistd.h>

Main()

{

       Char buf[80];

       Getcwd(buf,sizeof(buf));    //sizeof中放了buf地址

       Printf(“current working directory :%sn”,buf);

}

 

              创建目录

       #include<sys/stat.h>

       Int mkdir (char *dir,int mode)

       功能:创建一个目录

       返回值:成功 0.失败-1

原创粉丝点击