thekevshow
thekevshow

Reputation: 784

Replace string with another

I am just not sure why my replaceWord isn't going in to the file at all i have used all the commented out and so on and so forth. I am just trying to replace with with the text received from the command line argument. I know i might be far off I was just looking for a relatively easy way to do it.

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

int main ( int argc, char *argv[] )
{
if ( argc != 4 ) /* argc should be 2 for correct execution */
    {
        /* We print argv[0] assuming it is the program name */
        printf( "usage: %s filename\n", argv[0] );
    }
    else 
    {
        // We assume argv[1] is a filename to open
        char* wordReplace = argv[1];
        char* replaceWord = argv[2]; 
        FILE *file = fopen( argv[3], "r" );
        /* fopen returns 0, the NULL pointer, on failure */
        if ( file == 0 )
        {
            printf( "Could not open file\n" );
        }
        else 
        {
           char string[100];
           int len = 0;
            /* read one character at a time from file, stopping at EOF, which
               indicates the end of the file.  Note that the idiom of "assign
               to a variable, check the value" used below works because
               the assignment statement evaluates to the value assigned. */
            while  ( (fscanf( file, "%s", string ) ) != EOF )
            {
                len = strlen(string);
                printf( "%s\n", string );
                if(strcmp(string, wordReplace) == 0){
                //fseek (file, (-strlen(string) + 1), 1);
                //fputc(*replaceWord,file);
                //replaceWord++;
                //strcpy(string, replaceWord);
                fprintf(file,"%s",replaceWord);
                fputs(replaceWord, file);
                printf("\n%d\n", len);
                }
            }
            fclose( file );
        }
      }
    printf("\n");
    return 0;
}

Upvotes: 1

Views: 1123

Answers (1)

Pavan Manjunath
Pavan Manjunath

Reputation: 28525

You've opened the file in r ie read mode and trying to write to it.

Also after correcting that, note that, the replaced word and word to be replaced have to be of the same size, if you want to replace the file in place. Else you will end up overwriting other data. And you need to use functions like fseek to reposition the internal file pointer as fp would have moved ahead after fscanf

Upvotes: 5

Related Questions