实验十一 文件操作程序设计实验
一.目的要求
1) 掌握文件以及缓冲文件系统、文件指针的概念。
2) 学会使用文件打开、关闭、读、写等文件操作函数。
3) 学会用缓冲文件系统对文件进行简单的操作。
二、实验环境与设备
实验分组进行,每人一组,每组包括已安装Windows操作系统(Windows Xp)和C-free3.51台计算机。
三、预备知识
熟悉文件打开函数fopen( )、关闭函数fclose( )、字符方式读写函数fgec( )fputc( )、检查文件是否结束函数feof( )、格式化文件读写函数fscanf( ) fpintf( )、重命名文件函数rename( )、删
除文件函数remove( ),学生必须理解文件操作函数的功能、参数及返回值所代表的意义并能根据解决应用问题的需要熟练调用相关的文件操作函数。
四、实验内容
1.用记事本建立文件src.dat,其中存放若干字符。编写程序,从文件src.dat中读取数据,统计其中的大写字母、小写字母、数字、其它字符的个数,并将这些数据写入到文件test.dat中。
#include<stdio.h>
#include<stdlib.h>
int main()
{
    FILE *fp;
    char ch;
    int daxie=0,xiaoxie=0,shuzi=0,qita=0;
    if((fp=fopen("src.dat","r"))==NULL){
        printf("File open error!\n");
        exit(0);
    }
    while(!feof(fp)){
        ch=fgetc(fp);
        if(ch>='A'&&ch<='Z'){
            daxie++;}
            else if(ch>='a'&&ch<='z'){
                xiaoxie++;}
                else if(ch>='0'&&ch<='9'){
                    shuzi++;}
                    else qita++;
    }
    if((fp=fopen("test.dat","w"))==NULL){
        printf("File open error!\n");
        exit(0);
    }
    fprintf(fp,"大写=%d\n小写=%d\n数字=%d\n其它=%d\n",daxie,xiaoxie,shuzi,qita);
    if(fclose(fp)){
        printf("Can not close the file!\n");
        exit(0);
    }
    return 0;
}
或者
#include<stdio.h>
#include<stdlib.h>
int main()
{
    FILE *fp1,*fp2;
    char ch;
    int daxie=0,xiaoxie=0,shuzi=0,qita=0;
    if((fp1=fopen("src.dat","r"))==NULL){
        printf("File open error!\n");
        exit(0);
    }
    while(!feof(fp1)){
        ch=fgetc(fp1);
        if(ch>='A'&&ch<='Z'){
            daxie++;}
            else if(ch>='a'&&ch<='z'){
                xiaoxie++;}
                else if(ch>='0'&&ch<='9'){
                    shuzi++;}
                    else qita++;
    }
  if(fclose(fp1)){
        printf("Can not close the file!\n");
        exit(0);
    }
        if((fp2=fopen("test.dat","w"))==NULL){
        printf("File open error!\n");
        exit(0);
    }
    fprintf(fp2,"大写=%d\n小写=%d\n数字=%d\n其它=%d\n",daxie,xiaoxie,shuzi,qita);
    if(fclose(fp2)){
        printf("Can not close the file!\n");
        exit(0);
    }
    return 0;
}
2.输出文本文件中的非空格字符。
输出在屏幕
#include<stdio.h>
#include<stdlib.h>
int main()
{
    char ch;
    FILE *fp;
    if((fp=fopen("","r"))==NULL){
        printf("File open error!\n");
        exit(0);
    }
    while(!feof(fp)){
        ch=fgetc(fp);
        if(ch!=' '){
            putchar(ch);
        }
    }
    printf("\n");
    if(fclose(fp)){
        printf("Can not close the file!\n");
        exit(0);
    }
    return 0;
}
输出在文本
3.610000内出所有的合数,并顺序将每个合数用语句fprint(p,%6d,n)写入到新建的文件design.dat,要求文件名由命令行输入,如HeShu design.dat,其中HeShu为可执行文件名。(合数是指一个数等于除它本身外所有因数的和,如6=1+2+328=1+2+4+7+14)
#include<stdio.h>
int sort(int i)
{
  int m,sum;
  sum=0;
  for(m=1;m<i;m++){
  if(i%m==0)
  sum=sum+m;
fopen和open区别  }
  if(sum==i)
  return 1;
  else
  return 0;
}
int main(int argc,char *argv[])
{
    int i;
    FILE *p;
    if((p=fopen(argv[1],"wb"))==NULL){
        printf("File open error!\n");
        exit(0);
    }
    for(i=6;i<=10000;i++){
        if(sort(i)){
            fprintf(p,"%6d",i);
            printf("%6d",i);
            }
            }
    if(fclose(p)){
        printf("Can not close the file!\n");
        exit(0);
    }
    return 0;
}
4.有一个文件t.dat,请编写一程序,将t.dat中的所有小写英文字母转换成大写英文字母,其它字符不作转换,原样存储。
五、实验要求
1)理解和掌握本实验所涉的预备知识;
2)需求分析和结构化程序设计要求,综合运用本课程所学各知识单元,在实验之前,独立编写好程序;
3)准备好程序测试数据,利用上机时间进行程序功能调式并分析结果。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。