alex_bn_lee

导航

【415】C语言文件读写

A program can open and close, and read from, and write to, a file that is defined by the user

This is generally done when you have

  • large volumes of stored data, or
  • complex data (such as structs) or
  • non-printable data

These don't happen often. Nevertheless, for the sake of completeness, here is a program that

  • reads a number from a file input.txt

  • writes the count from 1 to that number to the file output.txt

    • it is user-friendly :) : it tells the user that an output file has been created

// files.c
// read a number 'num' from a file input.txt
// write a count from 1 to 'num' to the file OUT

#define IN  "input.txt"
#define OUT "output.txt"

#include <stdio.h>
#include <stdlib.h>

#define NUMDIG 6 // size of numerical strings that are output

int main(void) {
   FILE *fpi, *fpo; // these are file pointers
   char s[NUMDIG];

   fpi = fopen(IN, "r");
   if (fpi == NULL) { // an important check
       fprintf(stderr, "Can't open %s\n", IN);
       return EXIT_FAILURE;
   }
   else {
       int num;
       if (fscanf(fpi, "%d", &num) != 1) { // an important check
           fprintf(stderr, "No number found in %s\n", IN);
           return EXIT_FAILURE;
       }
       else {
           fclose(fpi); // don't need the input file anymore
           fpo = fopen(OUT, "w");
           if (fpo == NULL) { // an important check
               fprintf(stderr, "Can't create %s!\n", OUT);
               return EXIT_FAILURE;
           }
           else { // got input and got an output file
               fprintf(fpo, "%s", "Counts\n");
               for (int i=1; i<=num; i++) {
                   sprintf(s, "%d", i);
                   fprintf(fpo, "%s\n", s);
               }
               fclose(fpo);
               printf("file %s created\n", OUT);
               return EXIT_SUCCESS;
           }
       }
   }
}

input.txt

10

output.txt

prompt$ dcc files.c
prompt$ ./a.out
file output.txt created
prompt$ more output.txt
Counts
1
2
3
4
5
6
7
8
9
10
11
12
13

 

posted on 2019-06-25 15:26  McDelfino  阅读(278)  评论(0编辑  收藏  举报