上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
字符读写函数fgetc和fputc
作者:未知 申领版权
2012年01月24日 共有 1375 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    

 字符读写函数fgetc和fputc

字符读写函数是以字符(字节)为单位的读写函数。 每次可从文件读出或向文件写入一个字符。
    1. 读字符函数fgetc
    fgetc函数的功能是从指定的文件中读一个字符,函数调用的形式为:
    字符变量=fgetc(文件指针);
    例如:
    ch=fgetc(fp);
    其意义是从打开的文件fp中读取一个字符并送入ch中。
    对于fgetc函数的使用有以下几点说明:
    1) 在fgetc函数调用中,读取的文件必须是以读或读写方式打开的。
    2) 读取字符的结果也可以不向字符变量赋值,
    例如:
    fgetc(fp);
    但是读出的字符不能保存。
    3) 在文件内部有一个位置指针。用来指向文件的当前读写字节。在文件打开时,该指针总是指向文件的第一个字节。使用fgetc 函数后,该位置指针将向后移动一个字节。 因此可连续多次使用fgetc函数,读取多个字符。应注意文件指针和文件内部的位置指针不是一回事。文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。文件内部的位置指针用以指示文件内部的当前读写位置,每读写一次,该指针均向后移动,它不需在程序中定义说明,而是由系统自动设置的。
    【例13.1】读入文件c1.doc,在屏幕上输出。
    #include<stdio.h>
    main()
    {
    FILE *fp;
    char ch;
    if((fp=fopen("d:\\jrzh\\example\\c1.txt","rt"))==NULL)
    {
    printf("\nCannot open file strike any key exit!");
    getch();
    exit(1);
    }
    ch=fgetc(fp);
    while(ch!=EOF)
    {
    putchar(ch);
    ch=fgetc(fp);
    }
    fclose(fp);
    }
    本例程序的功能是从文件中逐个读取字符,在屏幕上显示。程序定义了文件指针fp,以读文本文件方式打开文件“d:\\jrzh\\example\\ex1_1.c”,并使fp指向该文件。如打开文件出错,给出提示并退出程序。程序第12行先读出一个字符,然后进入循环,只要读出的字符不是文件结束标志(每个文件末有一结束标志EOF)就把该字符显示在屏幕上,再读入下一字符。每读一次,文件内部的位置指针向后移动一个字符,文件结束时,该指针指向EOF。执行本程序将显示整个文件。
    2. 写字符函数fputc
    fputc函数的功能是把一个字符写入指定的文件中,函数调用的形式为:
    fputc(字符量,文件指针);  
    其中,待写入的字符量可以是字符常量或变量,例如:
    fputc('a',fp);
    其意义是把字符a写入fp所指向的文件中。
    对于fputc函数的使用也要说明几点:
    1) 被写入的文件可以用写、读写、追加方式打开,用写或读写方式打开一个已存在的文件时将清除原有的文件内容,写入字符从文件首开始。如需保留原有文件内容,希望写入的字符以文件末开始存放,必须以追加方式打开文件。被写入的文件若不存在,则创建该文件。
    2) 每写入一个字符,文件内部位置指针向后移动一个字节。
    3) fputc函数有一个返回值,如写入成功则返回写入的字符,否则返回一个EOF。可用此来判断写入是否成功。
    【例13.2】从键盘输入一行字符,写入一个文件,再把该文件内容读出显示在屏幕上。
    #include<stdio.h>
    main()
    {
    FILE *fp;
    char ch;
    if((fp=fopen("d:\\jrzh\\example\\string","wt "))==NULL)
    {
    printf("Cannot open file strike any key exit!");
    getch();
    exit(1);
    }
    printf("input a string:\n");
    ch=getchar();
    while (ch!='\n')
    {
    fputc(ch,fp);
    ch=getchar();
    }
    rewind(fp);
    ch=fgetc(fp);
    while(ch!=EOF)
    {
    putchar(ch);
    ch=fgetc(fp);
    }
    printf("\n");
    fclose(fp);
    }
    
    程序中第6行以读写文本文件方式打开文件string。程序第13行从键盘读入一个字符后进入循环,当读入字符不为回车符时,则把该字符写入文件之中,然后继续从键盘读入下一字符。每输入一个字符,文件内部位置指针向后移动一个字节。写入完毕,该指针已指向文件末。如要把文件从头读出,须把指针移向文件头,程序第19行rewind函数用于把fp所指文件的内部位置指针移到文件头。第20至25行用于读出文件中的一行内容。
    【例13.3】把命令行参数中的前一个文件名标识的文件,复制到后一个文件名标识的文件中, 如命令行中只有一个文件名则把该文件写到标准输出文件(显示器)中。
    #include<stdio.h>
    main(int argc,char *argv[])
    {
    FILE *fp1,*fp2;
    char ch;
    if(argc==1)
    {
    printf("have not enter file name strike any key exit");
    getch();
    exit(0);
    }
    if((fp1=fopen(argv[1],"rt"))==NULL)
    {
    printf("Cannot open %s\n",argv[1]);
    getch();
    exit(1);
    }
    if(argc==2) fp2=stdout;
    else if((fp2=fopen(argv[2],"wt "))==NULL)
    {
    printf("Cannot open %s\n",argv[1]);
    getch();
    exit(1);
    }
    while((ch=fgetc(fp1))!=EOF)
    fputc(ch,fp2);
    fclose(fp1);
    fclose(fp2);
    }
    
    本程序为带参的main函数。程序中定义了两个文件指针fp1和fp2,分别指向命令行参数中给出的文件。如命令行参数中没有给出文件名,则给出提示信息。程序第18行表示如果只给出一个文件名,则使fp2指向标准输出文件(即显示器)。程序第25行至28行用循环语句逐个读出文件1中的字符再送到文件2中。再次运行时,给出了一个文件名,故输出给标准输出文件stdout,即在显示器上显示文件内容。第三次运行,给出了二个文件名,因此把string中的内容读出,写入到OK之中。可用DOS命令type显示OK的内容。
    

 

相关新闻

testtest
上善制度的炼成
新时代呼唤管理理论创新——大卫�梯斯与动态能力理论
创业的不变逻辑
创新管理需要回答的5个问题
十一、弥离
十、转院
九、生机
八、传染
七、求血

您可能对这些感兴趣  

第7讲 综合分析BIM在运用与推广中的障碍问题
考核学生质量的困难
日本福岛核电站事故初步分析
论科技异化与科技人化
中国科技计划项目管理现状与对策
财政科技资金的审计重点和内容
软科学研究机构在政府决策中的功效、困境及对策研究
打造超级DOS系统(下)
DOS命令基础应用(6)
打造超级DOS系统(上)

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》