#include <stdio.h>
main(int argc,char *argv[])
{
FILE *fin,*fout;
if (argc != 3) {
fprintf(stderr,"USAGE: program input_file output_file\n");
exit(1);
}
if ((fin = fopen(argv[1],"r")) == NULL ) {
fprintf(stderr,"Can't open file %s for reading\n",argv[1]);
exit(1);
}
if ((fout = fopen(argv[2],"w")) == NULL ) {
fprintf(stderr,"Can't open file %s for writing\n",argv[2]);
exit(1);
}
/* rest of program */
}
Note: This program will read the last item in the file twice, since it does not dtect the end of file until it tries to read past it.
/*
Program to read integers from an input file
specified on the command line and write them out
as their corresponding ASCII codes in another file
*/
#include<stdio.h>
main(int argc, char *argv[])
{
int input;
FILE *fi, *fo;
/* Check if correct number of arguments specified */
if (argc!=3)
{
fprintf(stderr,"USAGE: conv_char input_file output_file\n");
exit(1);
}
/*open file for reading from */
if ((fi=fopen(argv[1],"r")) == NULL)
{
fprintf(stderr,"Can't open %s\n",argv[1]);
exit(1);
}
/*open file for writing to */
if ((fo=fopen(argv[2],"w")) == NULL)
{
fprintf(stderr,"Can't open %s\n",argv[2]);
exit(1);
}
while (!feof(fi))
{
/*read in integer*/
fscanf(fi, "%d", &input);
/*write to output file as char */
fprintf(fo,"%c\n",input);
}
}
Corrected Program
#include<stdio.h>
main(int argc, char *argv[])
{
int input;
FILE *fi, *fo;
/* Check if correct number of arguments specified */
if (argc!=3)
{
fprintf(stderr,"USAGE: conv_char input_file output_file\n");
exit(1);
}
/*open file for reading from */
if ((fi=fopen(argv[1],"r")) == NULL)
{
fprintf(stderr,"Can't open %s\n",argv[1]);
exit(1);
}
/*open file for writing to */
if ((fo=fopen(argv[2],"w")) == NULL)
{
fprintf(stderr,"Can't open %s\n",argv[2]);
exit(1);
}
fscanf(fi, "%d", &input);
while(!feof(fi))
{
/*write to output file as char */
fprintf(fo,"%c\n",input);
/*read in integer*/
fscanf(fi, "%d", &input);
}
}
Back to Main Page for Lecture 8 |