郭晓非吧 关注:19贴子:3,105

关于最使用C语言文件处理(Intro仅献给NOIP刚刚接触C语言的朋友)

只看楼主收藏回复

大家好,好久没来这里啦!
今天有空来写一篇关于最使用C语言文件处理的Intro
-------------------------------------------------
对于NOIP评测,大家都知道需要递交带正确的文件读入读出的程序,其实C语言的文件读入读出和Pascal一样好用,下面以A + P Problem 为例。


IP属地:广西1楼2006-04-19 10:01回复
    问题:从文件inputfile.in中读入两个数据,中间有空格。输出两个数之和,写到outputfile.out中。
    输入样例:
    ********inputfile.in********
    1 1
    ****************************
    输出样例:
    *******outputfile.out*******
    2
    ****************************
    数据范围:
    两数之和小于short int


    IP属地:广西2楼2006-04-19 10:01
    回复
      文件打开函数(fopen函数)
      通常形式:
      FILE *fp;
      fp=fopen(文件名,访问文件方式);


      IP属地:广西3楼2006-04-19 10:03
      回复
        打开的文件必须要关闭,所以要谈到下面的关闭函数


        IP属地:广西4楼2006-04-19 10:03
        回复
          文件的关闭(fclose函数)
          通常形式: 
          fclose(文件指针);


          IP属地:广西5楼2006-04-19 10:04
          回复
            好啦,下面该说说怎样读和写啦
            推荐大家使用fprintf函数和fscanf函数


            IP属地:广西6楼2006-04-19 10:05
            回复
              通常形式:
              fscanf(文件指针,格式字符串,输入列表);
              fprintf (文件指针,格式字符串,输出列表);


              IP属地:广西7楼2006-04-19 10:06
              回复
                有了这些知识,这道题就显得非常简单啦
                可以这样理解
                在Pascal中打开文件要这样:
                assign(input,'文件名');reset(input);
                而输出要这样写:
                assign(output,'文件名');rewrite(output);
                而C语言中的一行就完全代表啦!
                要想正确保存准备写入的文件(有可能在缓冲区)就一定要关闭,在Pascal中
                close(input);close(output);//close(output);是必须的,不过close(input)不关的话似乎没有什么异常
                这样在C语言中就可以写close两个指针。
                好啦,不多讲,写程序啦。


                IP属地:广西8楼2006-04-19 10:10
                回复
                  #include <stdio.h>
                  #include <stdlib.h>
                  main()
                  {
                   int a,b;
                   FILE *fpr,*fpw;
                   
                   fpr=fopen("inputfile.in","r");
                   fpw=fopen("outputfile.out","w");
                   
                   fscanf(fpr,"%d %d",&a,&b);
                   fprintf(fpw,"%d",a+b);
                   
                   fclose(fpr);fclose(fpw);
                  }


                  IP属地:广西9楼2006-04-19 10:14
                  回复
                    之后别忘记保存,并与保存目录同层下创建inputfile.in内容为“1 1”。编译,运行看看你的程序吧!
                    本程序在Dev-C++下测试通过


                    IP属地:广西10楼2006-04-19 10:15
                    回复
                      什么??你说为什么不用short int呀?
                      你可以尝试把int改为short int结果会是你输入数据的第二个数字!至于原因我现在正在查资料(也搞不懂),所以推荐大家用int啦!如果有哪位大牛路过此地并看到小生这么差劲的文章,请多多指教!!!


                      IP属地:广西11楼2006-04-19 10:17
                      回复
                        呵呵,孙凯快来看!哈


                        IP属地:广西12楼2006-06-26 14:44
                        回复
                          • 221.209.14.*
                          ding


                          13楼2006-06-26 14:50
                          回复
                            晕!


                            IP属地:广西14楼2006-06-26 15:01
                            回复
                              • 222.170.2.*
                              不错,文件读入正好不会


                              15楼2006-07-03 07:49
                              回复