C语言程序设计(6)文件

文件输入输出

顺序读写数据文件

文件打开之后,就可以对它进行读写了。在顺序写时,先写入的数据存放在文件中前面的位置,后写入的数据存放在文件中后面的位置。在顺序读时,读数据的顺序和数据在文件中的物理顺序是一致的。顺序读写需要用库函数实现。

对文本文件读入或输出一个字符的函数:

  1. fgetc:调用形式:fgetc(fp), 功能 从 fp 指向的文件读入一个字符,返回值 功,带回所读的字符;失败则返回文件结束标志 EOF(即 -1)
  2. fputc:调用形式:fputc(ch,fp),功能 把字符 ch 写到文件指针变量 fp 所指向的文件中,返回值 输出成功,返回值就是输出的字符;输出失败,则返回 EOF(即 -1)

说明:getc 的第一个字母 f 代表文件(file),中间的 get 表示获取,最后一个 c 表示字符 char。fputc 也类似。从键盘输入一些字符,逐个把它们送到磁盘上去,直到用户输入一个“ # ”为止。

代码练习:用 fgetc 函数从键盘逐个输入字符,然后用 fputc 函数写到磁盘文件。

#include<stdio.h>
#include<stdlib.h>   // stdlib 头文件即 standard library 标准库头文件
int main(){
    FILE * fp;
    char ch,filename[10];
    printf("Please enter the file name:");

    scanf("%s",filename);
    // 如果文件不存在,fopen 会建立该文件
    if((fp=fopen(filename,"w"))==NULL){    // 打开输出文件并使 fp 指向此文件
        printf("Unable to open this file\n");     // 如果打开出错,就输出“打不开”的信息
        exit(0);     // 终止程序
    }

    ch=getchar();     // 用来接收最后输入的回车符
    printf("Please enter a string  in the disk(Ends with a #):");
    ch=getchar();     // 接收从键盘输入的第一个字符
    while(ch!='#'){     // 当输入 # 时结束循环
        fputc(ch,fp);
        putchar(ch);
        ch=getchar();
    }

    fclose(fp);
    putchar(10);
    return 0;
}

程序分析

  1. exit 存在于标准 C 的库函数中,作用是使程序终止,用此函数时在程序的开头应包含 stdlib.h 头文件。

  2. .执行过程如下:先从键盘读入一个字符,检查它是否是“ # ”,如果是,表示字符串结束,不执行循环体。如果不是,则执行循环体,将该字符输出到 file.date 。然后在屏幕上显示出该字符,接着再从键盘读入一个字符。如此反复,直到出现“ # ”字符为止。这时程序已经将“ hello shiyanlou ”写到以“ file.date ”命名的文件中。

随机读写数据文件

实现随机读写的关键是要按要求移动位置指针,也就是文件的定位。
移动文件内部的位置指针的函数主要有两个,即 rewind() 和 fseek()。

rewind() 函数的调用形式为:rewind(文件指针);,它的功能是把文件内部的位置指针移到文件开头。
fseek 函数用来移动文件内部的位置指针,其调用形式为:fseek(文件指针,位移量,起始点);
例如fseek(fp,100L,0); //其意义是把位置指针移到离文件首 100 个字节处。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值