计算机等级考试二级C语言程序设计专项训练题——文件操作 ...

打印 上一主题 下一主题

主题 853|帖子 853|积分 2559

一.基础知识

在C语言中,文件操作有四个步骤:
① 定义文件指针;
② 打开文件:文件指针指向磁盘文件缓冲区;
③ 文件处理:文件读写操作;
④ 关闭文件。
文件打开函数如下:
fp=fopen("文件名","文件打开方式")
其功能是:使文件指针fp与相应文件实体对应起来,程序对文件指针进行操作,即fp代表磁盘文件。
        函数fopen()若执行成功,则返回包含文件缓冲区等信息的FILE型地址,赋给文件指针fp;若不成功,则返回一个NULL(空值)。
文件关闭函数如下:
fclose(文件指针)
        其功能是:把缓冲区中的数据写入磁盘扇区,确保写文件的正常完成;释放文件缓冲区单元和FILE结构体,使文件指针与具体文件脱钩。
        若正常关闭文件,函数fclose()的返回值为0;若无法正常关闭文件,返回非0。
文件读写函数包括
字符读写函数: fgetc() / fputc()
字符串读写函数:fputs() / fgets()
格式化读写函数:fscanf() / fprintf()
二进制读写函数:fread ()/ fwrite()
其他相关函数:
检测文件结尾函数feof()
文件定位的函数fseek() 、rewind()
各函数的调用格式示例如下:
ch = fgetc( fp ) ;
从fp所指示的磁盘文件上读入一个字符到ch
fputc(ch, fp);
把一个字符 ch 写到 fp 所指示的磁盘文件上
fgets(s, n, fp);
        从文本文件中读取字符串。其中,s可以是字符数组名或字符指针;n指定读入的字符个数;fp代表文件指针。
        函数被调用时,最多读取n-1个字符,并将读入的字符串存入s所指向内存地址开始的n-1个连续的内存单元中。
        当函数读取的字符达到指定的个数,或接收到换行符,或接收到文件结束标志EOF时,将在读取的字符后面自动添加一个’\0’字符;若有换行符,则将换行符保留(换行符在’\0’字符之前);若有EOF,则不保留。
        fputs(s, fp);
向指定的文本文件写入一个字符串s,字符串s中的结束符’\0’不写入文件。
fscanf(文件指针,格式字符串,输入表);
fprintf(文件指针,格式字符串,输出表);
指定格式的输入输出函数。
fread(buffer, size, count, fp);
从二进制文件中读入一个数据块到变量
fwrite(buffer, size, count, fp);
向二进制文件中写入一个数据块     
其中,四个参数说明如下:
buffer:指针,表示存放数据的首地址;
size:数据块的字节数;
count:要读写的数据块块数;
fp:文件指针。
feof(fp) ;
判断fp指针是否已经到文件末尾,若到文件结束位置,函数返回值1;若文件未结束,函数返回值0。
rewind(fp);
定位文件指针,使文件指针指向读写文件的首地址,即打开文件时文件指针所指向的位置。
fseek(fp, offset, from);
        其中,offset为移动偏移量,long型;from表示起始位置,文件首部、当前位置和文件尾部分别对应0,1,2,或常量SEEK_SET、SEEK_CUR、SEEK_END。
        例如:fseek(fp, 20L, 0):将文件位置指针移动到离文件首20字节处;fseek(fp, -20L, SEEK_END):将文件位置指针移动到离文件尾部前20字节处。 
二.程序填空题练习题

1.给定程序中,函数fun的功能是:将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为0。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include 
#include 
int fun(char *source, char *target)

    FILE  *fs,*ft;     
    char  ch;
    /**********found**********/
    if((fs=fopen(source, ___1___))==NULL)
      return 0;
    if((ft=fopen(target, "w"))==NULL)
      return 0;
    printf("\nThe data in file :\n");
    ch=fgetc(fs);
    /**********found**********/
    while(!feof(___2___))
    { 
        putchar( ch );
    /**********found**********/
        fputc(ch,___3___);
        ch=fgetc(fs);
    }
    fclose(fs); 
    fclose(ft);
    printf("\n\n");
    return  1;
}
int main()

    char  sfname[20] ="myfile1",tfname[20]="myfile2";
    FILE  *myf;     
    int  i;     
    char  c;
    myf=fopen(sfname,"w");
    printf("\nThe original data :\n");

    for(i=1; i
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立聪堂德州十三局店

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表