Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7679746
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: C/C++

2011-05-31 10:48:49

/*

 *  文件打开与关闭

 *  Lzy    2011-5-28

 */

#include

 

int main(void)

{

    FILE *fp;                  //定义文件指针

   

    if((fp = fopen("F:\\lzy.txt","w+")) == NULL)      //以读/写方式找开lzy.txt

    {

        printf("打开失败!\n");

        exit(0);

    }

    else

    {

        printf("打开成功!\n");      

    }

 

    fclose(fp);                   /*闭关该文件*/

    return 0;

 

}

 

/*

 *  按字节写入文件

 *  Lzy    2011-5-28

 */

#include

 

int main(void)

{

    FILE *fp;                          //定义文件指针

    char c;

 

    if((fp = fopen("F:\\lzy.txt","w+")) == NULL)  //打开lzy.txt

    {

        printf("打开失败!\n");

        exit(0);

    }

    else

    {

        while((c = getchar()) != '\n')

        {

            if(fputc(c,fp) == EOF)           /*写入字符,判断是否写入失败*/

            {

                printf("写入失败!\n");

                exit(0);

            }

        }

    }

 

    fclose(fp);                               /*闭关该文件*/

    return 0;

}

 

/*

 *  按字节读取文件

 *  Lzy    2011-5-28

 */

#include

 

int main(void)

{

    FILE *fp;                          //定义文件指针

 

    if((fp = fopen("F:\\lzy.txt","r+")) == NULL)  //打开lzy.txt

    {

        printf("打开失败!\n");

        exit(0);

    }

    else

    {

        while(!feof(fp))                  /*判断文件是否结束*/

        {

            printf("%c",fgetc(fp));          /*按字节读取*/

        }

    }

 

    fclose(fp);                               /*闭关该文件*/

    return 0;

 

}

 

/*

 *  按字符串输入文件

 *  Lzy    2011-5-28

 */

#include

 

int main(void)

{

    FILE *fp;                          //定义文件指针

    char c[30];

 

    if((fp = fopen("F:\\lzy.txt","w+")) == NULL)  //打开lzy.txt

    {

        printf("打开失败!\n");

        exit(0);

    }

    else

    {

        printf("输入一串字符:");

        gets(c);

        if(fputs(c,fp) != 0)         /*写入字符,判断是否写入失败*/

        {

            printf("写入失败!\n");

            exit(0);

        }

       

    }

 

    fclose(fp);                               /*闭关该文件*/

    return 0;

}

 

 

/*

 *  按字符串输出文件

 *  Lzy    2011-5-28

 */

#include

 

int main(void)

{

    FILE *fp;                          //定义文件指针

    char c[30];

 

    if((fp = fopen("F:\\lzy.txt","r+")) == NULL)  //打开lzy.txt

    {

        printf("打开失败!\n");

        exit(0);

    }

    else

    {      

        if(fgets(c, 30, fp) != NULL)           

        {

            printf("%s\n",c);    

        }      

    }

 

    fclose(fp);                               /*闭关该文件*/

    return 0;

}

 

/*

 *  文件数据块操作

 *  Lzy    2011-5-28

 */

#include

 

struct student

{

    int id;

    char name[10];

    int score;

};

 

int main(void)

{

    FILE *fp;                                      //定义文件指针

    struct student stu[3],stu1[3], *p;

 

    if((fp = fopen("F:\\lzy.txt","wb+")) == NULL) //以二进制方式打开lzy.txt

    {

        printf("打开失败!\n");

        exit(0);

    }

   

    for(p = stu; p < stu +3; p++)                   //结构体初始化

    {

        printf("输入学生学号 姓名 分数\n");

        scanf("%d %s %d",&p->id, p->name, &p->score);

    }

 

    fwrite(stu, sizeof(struct student), 3 ,fp);       /*数据写入文件*/

    rewind(fp);                                       /*文件读写指针复位*/

    fread(stu1, sizeof(struct student), 3 ,fp);       /*数据输出赋给stu1*/

 

    printf("学生学号 姓名 分数\n");

    for(p = stu1; p < stu1 + 3; p++)               /*打印*/

    {

        printf("   %d\t %s\t %d\n",p->id, p->name, p->score);      

    }

 

    fclose(fp);                               /*闭关该文件*/

    return 0;

}

 

/*

 *  按格式化写入函数fprintf()

 *  Lzy    2011-5-28

 */

#include

 

int main(void)

{

    FILE *fp;                                      //定义文件指针

    int a = 55;

    char b = 98;

 

    if((fp = fopen("F:\\lzy.txt","w+")) == NULL)  //以二进制方式打开lzy.txt

    {

        printf("打开失败!\n");

        exit(0);

    }

   

    fprintf(fp,"%d, %c", a, b);             /*把变量a,b 以逗号作分隔符,输出到fp所指向的文件中*/

 

    fclose(fp);                               /*闭关该文件*/

    return 0;

}

 

/*

 *  按格式化读取函数fscanf()

 *  Lzy    2011-5-28

 */

#include

 

int main(void)

{

    FILE *fp;                                      //定义文件指针

    int a ;

    char b ;

 

    if((fp = fopen("F:\\lzy.txt","r+")) == NULL)  //以二进制方式打开lzy.txt

    {

        printf("打开失败!\n");

        exit(0);

    }

   

    fscanf(fp,"%d, %c", &a, &b);            /*fp中读取的内容,分别赋给变量a,b (注意:以逗号作分隔符)*/ 

    printf("%d %c\n",a,b);

 

    fclose(fp);                               /*闭关该文件*/

    return 0;

}

 

/*

 *  putwgetw函数

 *  Lzy    2011-5-28

 */

#include

 

int main(void)

{

    FILE *fp;                                      //定义文件指针

    int a;

 

    if((fp = fopen("F:\\lzy.txt","w+")) == NULL)  //以二进制方式打开lzy.txt

    {

        printf("打开失败!\n");

        exit(0);

    }

 

    putw(66,fp);          /*整形数写入*/

    rewind(fp);               /*重设读写指针*/

    a = getw(fp);         /*整形数读出*/

    printf("%d\n",a);

 

    fclose(fp);                               /*闭关该文件*/

    return 0;

}

 

 

/*

 *  随机读写与fseek()函数

 *  Lzy    2011-5-28

 */

#include

 

struct Stu

{

    int id;

    char name[10];

}stu = {1,"lzy"};

 

int main(void)

{

    FILE *fp;                                      //定义文件指针

    char name[10];

 

    if((fp = fopen("F:\\lzy.txt","wb+")) == NULL) //以二进制方式打开lzy.txt

    {

        printf("打开失败!\n");

        exit(0);

    }

 

    fwrite(&stu,sizeof(stu),1,fp);              /*块方式写入数据*/

    fseek(fp,sizeof(int), 0);                   /*移动指针*/

    fread(name,10,1,fp);                     /*块方式输出数据*/

    printf("%s\n",name);

 

    fclose(fp);                               /*闭关该文件*/

    return 0;

}

 

 

 

 3. 文件检测函数

    1feof函数

     当在对文件进行读操作时,为了避免读完文件中数据时,继续对文件进行读取操作,可以通过来检测文件是否结束。

     函数调用格式:

                     feof(文件指针)

     函数功能:

     判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则为0。一般当该函数返回值为1时,结束对文件的读取操作。

     

    2ferror()函数  

    在调用输入输出库函数时,如果出错,除了函数返回值有所反映外,也可利用ferror()函数来检测。    用法: int  ferror(文件指针)

    功能:

    如果函数返回值为0,表示未出错;如果返回一个非0值,表示出错。对同一文件,每次调用输入输出函数均产生一个新的ferror()函数值。因此在调用了输入输出函数后,应立即检测,否则出错信息会丢失。    在执行fopen()函数时,系统将ferror()的值自动置为0

    3  clearerr()函数

    用法: void  clearerr(文件指针)

    功能:将文件错误标志(即ferror()函数的值)和文件结束标志(即feof()函数的值)置为0。对同一文件,只要出错就一直保留,直至遇到clearerr()函数或rewind()函数,或其它任何一个输入输出库函数。

 

    4  返回文件当前位置的函数ftell()

    由于文件的位置指针可以任意移动,也经常移动,往往容易迷失当前位置,ftell()就可以解决这个问题。

    用法:long  ftell(文件指针);

    功能:返回文件位置指针的当前位置(用相对于文件头的位移量表示)。

    调用格式:i = ftell( fp );

    如果返回值为-1L,则表明调用出错。例如:

          offset=ftell(fp)

          if (offset= =-1L)

          printf(ftell() error\n)

 

阅读(3233) | 评论(0) | 转发(2) |
3

上一篇:位段

下一篇:文件应用编程

给主人留下些什么吧!~~