john pfeiffer
  • Home
  • Categories
  • Tags
  • Archives

file strncat safe argv

/* john pfeiffer 2010-07  safe way to get command line and copy/append strings
*/

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

#define BUFFERMAX 16

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

    char c;
    FILE* fptr;
    char filename[ BUFFERMAX ];

    if( argc != 2 )
    {   fprintf( stderr , "\nwrong parameters, usage: ") ;
        fprintf( stderr , "%s infile.txt\n" , argv[0] ); 
        fprintf( stderr , "%d characters max filename\n" , BUFFERMAX );
        exit( 1 );
    }

    memset ( filename , 0 , strlen( filename ) );
    if( BUFFERMAX - strlen( argv[1] ) - 1 )
    {
        strncat ( filename , argv[1] , BUFFERMAX );
        /* strncat stops copying/appending after the str2 null char, then
        appends a null char ... but requires manual check for negative values*/    
    }
    printf( "%s = %d\n" , filename , BUFFERMAX - strlen( argv[1] ) - 1);

    fptr = fopen( filename , "rb" );    
    if( fptr == NULL)
    {   fprintf( stderr , "Error opening input file! %s" , strerror(errno) );
        exit( 1 );      
    }

    while( !feof( fptr ) && !ferror( fptr) )
    {   
        c = fgetc( fptr ) ;
      /*  fputc( c , stdout ) ; */
    }

    fclose( fptr );
    return 0;
}/*end of main*/

  • « wince conversion steps
  • Hyper v windows server 2008 firewall icmp enable ping »

Published

Jul 28, 2010

Category

c

~132 words

Tags

  • argv 3
  • c 95
  • file 92
  • safe 4
  • strncat 1