Chinaunix首页 | 论坛 | 博客
  • 博客访问: 96739
  • 博文数量: 23
  • 博客积分: 516
  • 博客等级: 中士
  • 技术积分: 315
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-29 16:45
文章分类
文章存档

2012年(11)

2011年(12)

分类: C/C++

2011-10-29 20:47:21

库函数
    一、概念:C库函数的文件操作是独立于具体的操作系统平台的,不管是再DOS、Windows、lInux还是在VxWorks中都是使用这些函数。
    二、常见函数
        1、打开操作
           函数:FILE *fopen(const char *filename,const char *mode)
           参数:mode模式:
           r,rb         只读方式打开
           w,wb        只写方式打开,如果文件不存在,则创建该文件
           a,ab         追加方式打开,如果文件不存在,则创建该文件
           r+,r+b,rb+   读写方式打开
           w+,w+b,wb+   读写方式打开,如果……
           a+,a+b,ab+   读和追加方式打开。如果…… 
           b用于区分二进制文件和文本文件,这一点只在DOS、Windows系统中有区分。
 
         2、文件的读操作
            函数:size_t fread(void *ptr,size_t size,size_t n,FILE *stream)
            功能:从stream指向的文件中读取n个字段,每个字段为size字节,并将读取的的数据放入
                  ptr所指向的字符数组中,返回实际已读取的字节数。读取的数据量为size*n。
 
         3、文件的写操作
            函数:size_t fwrite(const void *ptr,size_t size,size_t n,FILE *stream)
            功能:从缓冲区ptr所指向的数组中把n个字段写到stream指向的文件中,每个字段长为size个
                  字节,返回世界写入的字段数。
 
          4、int fgetc(FILE *stream)
             功能:从指定的文件中读一个字符
             实例:
             #include
             main()
             {
                  FILE *fp;
                  char ch;
                  if((fp=fopen("c1.txt","rt")) == NULL)
                  {
                         printf("\nCannt open file strike any key exit!");
                         getch();
                         exit(1);
                   }
                   ch = fgetc(fp);
                   while(ch != EOF)
                   {
                        putchar(ch);
                        ch = fgetc(fp);
                    }
                    fclose(fp);
              }
 
          5、int fputc(FILE *stream)
             功能:从指定的文件中写一个字符
             实例:
             #include
             main()
             {
                  FILE *fp;
                  char ch;
                  if((fp=fopen("string","wt+")) == NULL)
                  {
                         printf("\nCannt open file strike any key exit!");
                         getch();
                         exit(1);
                   }
                   printf("input a string:\n");
                   ch = getchar;
                   while(ch != '\n')
                   {
                       fputc(ch,fp);
                       ch = getchar(); 
                   }
                   printf("\n");
                    fclose(fp);
              }
      6、文件定位
         函数:int fseek(FILE *stream,long offset,int whence)     
         用法与linux中的lseek一致。
          
      7、路径获取
         函数:char *getcwd(char *buffer,size_t size)
         功能:getcwd会把当前的路径名copy到大小为size的buffer中去。如果buffer太小,函数返回-1
         #include
         main()
         {
              char buf[80];
              getcwd(buf,sizeof(buf));
              printf("current workong directory is %s",buf);
          } 
        
      8、 创建目录
          #include
          int mkdir(char *dir,int mode)
          返回0表示成功,-1表示出错。
实例:
 
#include
#include
typedef struct student
{
 char name[10];
 int num;
 int age;
 char addr[15];
}TypeStu,*TypePtr;
void main()
{
 FILE *fp;
 int ret;
 TypePtr pa=NULL;
 TypeStu stu[2];
 int i;
 if((fp=fopen("stu_lis.txt","w+"))==NULL)
 {
  printf("open file failed!\n");
  exit(1);
 }
 pa = (TypeStu *)malloc(sizeof(TypeStu));
 if(pa == NULL)
 {
  printf("malloc failed\n");
  exit(1);
 }
 printf("input data:\n");
 for(i = 0; i < 2; i++)
 {
  scanf("%s  %d  %d  %s",pa->name,
   &pa->num,&pa->age,pa->addr);
 
  ret = fwrite(pa,sizeof(TypeStu),1,fp);
  if(ret != 1)
  {
   printf("write data failed\n");
  }
 }
 
 rewind(fp);
 ret=fread(stu,sizeof(TypeStu),2,fp);
 if(ret != 2)
 {
  printf("read data failed\n");
  exit(1);
 }
 for(i = 0; i < 2; i++)
  printf("stu[%d]------------->name:%s  num:%d   age:%d  addr:%s\n",
   i,stu[i].name,stu[i].num,stu[i].age,stu[i].addr);
 fclose(fp);
}
阅读(2376) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~