Knowing when to stop

Detecting the end of file

When reading characters

When reading lines

Copying a file character by character using fscanf()

This program copies an input file into an output file character by character using fscanf().

/*******************************************************
 * File: copyByChar.c
 * Author: Tim Finin
 * Date: 4/10/2005
 * Modified by: Sue Evans
 * Date: 9/26/05
 * Section: 01XX & 02XX
 * Email: bogar@cs.umbc.edu
 *
 * This program takes two command line arguments naming
 * files.  It copies the contents of the first file to the
 * second a character at a time.
 *
 ********************************************************/

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

int main (int argc, char *argv[]) {

   char c;
   FILE *ifp, *ofp;

   /*  check for correct number of command line arguments */
   if (argc != 3) {
      fprintf(stderr, "Usage: a.out inputfile outputfile\n"); 
      exit(-1);
   }

   /* open input and output files */
   ifp = fopen(argv[1], "r");
   if (ifp == NULL) {
      fprintf(stderr, "Can't open %s for reading.\n", argv[1]); 
      exit(-2);
   }

   ofp = fopen(argv[2], "w");
   if (ofp == NULL) {
      fprintf(stderr,"Can't open %s for writing\n", argv[2]); 
      exit(-3);
   }

   /* copy characters from input to output files until an EOF */
   while(fscanf(ifp, "%c", &c) != EOF){
      fprintf(ofp,"%c", c);
   }

   /*  close files and return */
   fclose(ifp);
   fclose(ofp);

   return(0);
}

Copying a file character by character using fgetc()

This program copies an input file into an output file character by character using fgetc().


/*******************************************************
 * File: eof.c
 * Author: Sue Evans
 * Date:11/25/05
 * Section: 01XX & 02XX
 * Email: bogar@cs.umbc.edu
 *
 * This program takes two command line arguments naming
 * files.  It copies the contents of the first file to the
 * second a character at a time.
 *
 ********************************************************/

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

int main (int argc, char *argv[]) {

   int c;
   FILE *ifp, *ofp;

   /*  check for correct number of command line arguments */
   if (argc != 3) {
      fprintf(stderr, "Usage: a.out inputfile outputfile\n");
      exit(-1);
   }

   /* open input and output files */
   ifp = fopen(argv[1], "r");
   if (ifp == NULL) {
      fprintf(stderr, "Can't open %s for reading.\n", argv[1]);
      exit(-2);
   }

   ofp = fopen(argv[2], "w");
   if (ofp == NULL) {
      fprintf(stderr,"Can't open %s for writing\n", argv[2]);
      exit(-3);
   }

   /* copy characters from input to output files until an EOF */
   while((c = fgetc(ifp)) != EOF){
      fprintf(ofp,"%c", c);
   }

   /*  close files and return */
   fclose(ifp);
   fclose(ofp);

   return 0;
}

Copying a file line by line

This program copies an input file into an output file line by line.


/*******************************************************
 * File: copyByLine.c
 * Author: Tim Finin
 * Date: 4/10/2005
 * Modified by: Sue Evans
 * Date: 9/26/05
 * Section: 01XX & 02XX
 * Email: bogar@cs.umbc.edu
 * 
 * This function takes two command line arguments naming
 * files.  It copies the contents of the first file to the
 * second a line at a time.
 *
 ********************************************************/

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

#define MAXLINELENGTH 999

int main (int argc, char *argv[]) {

   FILE *ifp, *ofp;
   char line[MAXLINELENGTH];

   /*  check for correct number of command line arguments */
   if (argc !=3) {
      fprintf(stderr, "Usage: a.out inputfile outputfile\n"); 
      exit(-1);
   }

   /* open input and output files */
   ifp = fopen(argv[1], "r");
   if (ifp == NULL) {
      fprintf(stderr, "Can't open %s for reading.\n", argv[1]); 
      exit(-2);
   }

   ofp = fopen(argv[2], "w");
   if (ofp == NULL) {
      fprintf(stderr,"Can't open %s for writing\n", argv[2]); 
      exit(-3);
   }

   /* copy lines from input to output files until an EOF */
   while (fgets(line, MAXLINELENGTH, ifp) != NULL ) {
      fputs(line, ofp);
   }

   /*  close files and return */
   fclose(ifp);
   fclose(ofp);

   return(0);
}


Last Modified -