Thread: File I/O with 2 input and 1 output file

  1. #1
    Registered User
    Join Date
    Mar 2003
    Posts
    3

    Question File I/O with 2 input and 1 output file

    Hi all,
    I am trying to take in 2 input files and an output file in as command line arguments. I am new to this, so bear with me if the code is a little rough. Below is what I have on that.
    In the command line I am typing in:
    > a.out lab5_1.txt lab5_2.txt ( I'm not typing the > )
    I get an error saying it can't open input file # 2. This is for a program that uses a struct and linked list. What I am trying to do is get the information from lab5_1.txt and lab5_2.txt and put it one line at a time into a.out. Can anyone see what I am doing wrong?

    Code:
    // driver
    int main ( int argc, char *argv[] )
    {
     struct employee *list;
     int flag = 1;
    
     // create file variables
     FILE *infile1, *infile2, *outfile;
     char buffer[80];
     char buffer2[80]; 
    // check for errors in opening files
     if ( argc < 2 )
        {
        fprintf (stderr, "Usage: %s filename\n", argv[0] );
        exit (1);
        }
     if ( ( outfile = fopen ( argv[1], "w+" ) ) == NULL )
        {
        fprintf (stderr, "Can't create output file.\n" );
        exit (1);   
        }
     if ( ( infile1 = fopen( argv[2], "r" ) ) == NULL)
        {
        fprintf (stderr, "Can't open input file 1\n" );
        exit (1);
        }
     strcpy( buffer, argv[2]);
     if ( ( infile2 = fopen( argv[3], "r") ) == NULL )
        {
        fprintf (stderr, "Input file 2 wouldn't open\n" );  
        exit (1);
        }
     strcpy( buffer2, argv[3] );
    
     while ( fread ( buffer, 80, 2, infile1 ) != '\n' )
          fwrite ( buffer, sizeof ( struct employee ), 1, outfile ); 
    
     if (fclose ( infile1 ) != 0 || fclose ( infile2 ) != 0
                      || fclose ( outfile ) != 0 )
        printf ( "Error in closing files\n" );
    
     return (0);
    }
    Thank you for your help, Sandy

  2. #2
    Registered User Vber's Avatar
    Join Date
    Nov 2002
    Posts
    807
    Well, I'm not sure, but fread() doesn't return what you want...
    fread and fwrite return the number of items successfully
    read or written

Popular pages Recent additions subscribe to a feed