zoukankan      html  css  js  c++  java
  • 本周大头作业:使用c语言对TXT文件的控制

    本次课程与作业首次涉及到了c语言对自己文件的控制,由于使用了指针,所以首触指针对我们来说时比较麻烦而又困难,不过问题不会很大,因为书本上已经有一个相关的模板供我们参考,但是需要仔细分析,谨慎入坑!不惧入坑!话不多说了,直接进入试题!
    一.试题:
    请在第一周作业的基础上,继续完成:找出给定的文件中数组的最大值及其对应的最小下标(下标从0开始)。并将最大值和对应的最小下标数值写入文件。
    输入:
    请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。
    输出
    在不删除原有文件内容的情况下,将最大值和对应的最小下标数值写入文件。
    二.分析:之前我们是在c语言编辑器中将题目要求完成,但是这次作业需要我们利用c语言编辑器对TXT文件编辑板进行控制以完成任务!
    三.先依照教材上的模板写上代码:

      #include<stdio.h>
      #include<string.h> 
      #include<stdlib.h>
      int main()
     {
    	FILE*fp;
    	char a[20];
    	int i,N,biao=0,max=0;
    	if((fp=fopen("D:\wonzenkei.txt","r"))==NULL);
    	{
    		printf("File open error!
    ");
    		exit(0);
    	}
    	scanf("%d",&N);
    	for(i=0;i<N;i++){
    	scanf("%d",&a[i]);
     }
        max=a[0];
        for(i=0;i<N;i++){
        	if(a[i]>max)
        	max=a[i];
        	biao=i;
    	}
    	fprintf("%d %d",max,biao);
    	if(fclose(fp)){
    		printf("Can not close the file!
    ");
    		exit(0);
    	}
    	return 0;
     }
    

    四.报错截图:
    问题果然出现
    五.问题解决:打开文件错误,此处也许是多数同学碰到的问题,无法打开文件,究其根源,花了半小时才发现if((fp=fopen("D:wonzenkei.txt","r"))==NULL)后多了一“;”号
    六.大功告成时才发现,如图:
    原有的TXT文档已被更改,原输入的几个数已不存在,只输出了题中要求的最大数与下标
    六.问题解决:调试代码发现,主代码中只有scanf,主代码并没有与TXT文本文件相挂钩,也许这就是导致TXT文本文件内容被更改的原因
    七.到最后的一步了,是时候要解决问题了!在代码中键入fscanf(fp,"%d",&a[i])还有在for循环中需要键入fprintf(fp,"%d",a[i]);据本人推测因为使用c语言控制TXT文本时,文本可能已经发生了更改,必须要使用该行代码,才以确保c语言编辑框中的内容再次与TXT文本相同步!
    八 .再次附上修改后的代码:

      #include<bits/stdc++.h>// 此处强烈建议大家使用c++万能头文件的开头,因为它所包含的库函数是很多的,所以使用该开头能为大家省去很多的麻烦!!
      int main()
    {
    	FILE *fp;
    	char a[20];
    	int i,N,biao=0,max=0;
    	if((fp=fopen("D:\wonzenkei.txt","w+"))==NULL)//一定要注意,此处还是需要使用w+以打开TXT文本文件,因为我们需要对数据进行处理并修改,并且w+对文件打开并处理的作用会更大!
    	{
    		printf("File open error!
    ");
    		exit(0);
    	}
    	scanf("%d",&N);
    	fprintf(fp,"%d
    ",N);//此处一定需要fprintf,作用在第七步已说明
    	for(i=0;i<N;i++){
    		scanf("%d,",&a[i]);
    	        fprintf(fp,"%d,",a[i]);//此处同上
    	}
    	max=a[0];
    	for(i=0;i<N;i++)
    		if(max<a[i]){
    		max=a[i];
    		biao=i;
    	}
    	fprintf(fp,"
    %d %d",max,biao);
    	if(fclose(fp)){
    		printf("Can not close the file!
    ");
    		exit(0);
    	}
    	return 0;
    }
    

    九.思维流程图:
    十.总结:此处需要明白,fprintf,代表在数据TXT文本中打印,fscanf代表在数据TXT文本中输入,其他暂时便没有想到什么东西了,闲余时间再好好多学习一下相关的文件指针方面知识吧
    由于我名字粤语读法是wonzenkei,所以我下意识地把文件名写成了wonzenkei.txt
    十 一.学习总结

  • 相关阅读:
    技术牛人在阿里内网的公开信:“王坚,你为什么要放弃”
    hadoop日志【6】----mahout的速度
    基于命令行的mahout软件0.8版本Canopy算法分析的数据处理流程
    WolframAlpha
    颠覆编程方式的感知编码:Wolfram雄心勃勃的全新计算模式
    Autolayout及VFL经验分享
    IOS7 Text View 截断的问题解决
    Discuz 首页图文列表实现
    UIResponder详解
    IOS开发之----四舍五入问题
  • 原文地址:https://www.cnblogs.com/wonzenkei/p/10480784.html
Copyright © 2011-2022 走看看