C语言中,文件的操作

一、文件操作基本知识

   c语言文件的操作分  "读"和“写”

   1. 指的是:将文件内的信息写入到程序,可以理解为

   硬盘信息->内存信息 的转化方式


   2.写指的是:将程序中的信息写入到文件,如txt文件。是一种

   内存信息->硬盘信息 的转化方式


二、具体使用方法

     1.定义文件变量

          在C语言中,读文件的需要用到文件类型  FILE

          通常的使用方式为: FILE *fp; 定义一个文件指针;

      2.打开一个文件

          用指针打开文件的函数为:fp = fopen("mm.txt","w"));

          w也可以是r,对应两种使用方式:w(write),r(read)。

          如果是将信息写入文件,则是w。

          若是将文件信息写入程序,则是r。

          在r的方式时,即读文件的方式时,若打开的文件不存在,则会打开失败。

         在w的方式时。即在写进文件的,比如将信息写入“cc.mm”这么一个文件里时,程序发现并没“cc.mm”那么一个文件则会自动创建一个新文件 命名为“cc.mm”,将信息写入其中。注意!后缀名 .xx、.tet、.什么都无所谓,都默认按txt的方式写入。

       3.函数的调用

        文件的读取函数为:fwrite(p, sizeof(XX), 1, fp);

        即将文件内的信息,按XX大小的内存(类型)写入指针P当中。通过函数调用之后,fp即文件指针自动后移。

       

        文件写入的函数为:fprintf(fp,"%x",p );

        即将p指针里的信息按照%x的格式写入文件中。


      4.在最后一定要记得使用fclose(fp)!!!!关闭文件指针


三、示例

       1.文件的写入

#include <string.h>
#include <windows.h>
#define NEW (TX *)malloc(sizeof(TX))
typedef struct tongxunlu       //定义的一个通讯录的结构体
{
    char number[10];          //号码
    char name[20];            //姓名
    int old;                    //年龄
    char address[20];        //地址
    char phone[12];        //电话
    struct tongxunlu *next;//链表
}TX;
int main ()
{
    FILE *fp;                                      // 文件指针fp
    TX  *p;
    int i,n;                                       // i,n控制循环
    if((fp = fopen("学生信息.txt","w")) == NULL )  // 打开文件
    {
        printf("  人品 不够!!启动失败!!!\n");
        exit(0);
    }
    printf("输入人数:");                          // 键盘输入人数n
    scanf("%d",&n);
    fprintf(fp,"%d",n);                            // 将人数n写入文件
    fprintf(fp,"\n");
    p = NEW;                                       // 开辟一个新内存,并让指针p指向它
    printf(" 输入档案号、姓名、年龄、籍贯、联系电话\n");
    for(i = 0; n > i ; i++)                        // 反复用同一个节点进行n次循环
    {
        scanf("%s",&p -> number);                  // 键盘将数据写入该节点
        scanf("%s",&p -> name);
        scanf("%d",&p -> old);
        scanf("%s",&p -> address);
        scanf("%s",&p -> phone);
        fprintf(fp,"%s ",p -> number);             // 将该节点内的数据写入文件
        fprintf(fp,"%s ",p -> name);
        fprintf(fp,"%d ",p -> old);
        fprintf(fp,"%s ",p -> address);
        fprintf(fp,"%s ",p -> phone);
        fprintf(fp,"\n");
    }
    free(p);                                       // 释放p内存
    fclose(fp);                                    // 关闭文件
    printf("\n\n数据输入完成\n");
}

        2.文件的读取

TX *setTX()
{
    FILE *fp;                                        // 文件指针fp用来打开文件
    TX *head, *p, *q;                                // 结构体指针,用来建立链表
    int i,n;                                         // 整形i,n控制循环
    if((fp = fopen("学生信息.txt","r")) == NULL )    // 用只读的方式打开文件
	{
		printf("  现无数 据请先输入数据!!!\n");
		exit(0);
	}
    fscanf(fp,"%d",&n);                              // 从文件读取人数n
    head = NEW;                                      // 给头结点head开辟一段内存
    p = head ;
    for (i = 0;i < n ;i++)                           // for循环,进行n次构建节点
    {
        q = NEW ;
        p -> next = q;
        fscanf(fp,"%s",&q -> number);                // 将文件内的数据写入节点
        fscanf(fp,"%s",&q -> name);
        fscanf(fp,"%d",&q -> old);
        fscanf(fp,"%s",&q -> address);
        fscanf(fp,"%s",&q -> phone);
        p = q;
    }
    q -> next = NULL;                                // 尾节点指向NULL
    fclose(fp);                                      // 关闭文件
    return head;                                     // 返回所建立的链表的头结点
}


  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值