This blog is under construction

Tuesday 30 July 2013

C program to delete given word in a file

Write a C program to delete the given word from a file.


  #include <stdio.h>
  #include <string.h>
  #define MAX 256

  int main() {
        FILE *fp1, *fp2;
        char word[MAX], filename[MAX];
        char str[MAX], temp[] = "temp.txt", *ptr, *tmp;

        /* get the input file from the user */
        printf("Enter your input file name:");
        fgets(filename, MAX, stdin);
        filename[strlen(filename) - 1] = '\0';

        /* get the word to delete from the user */
        printf("Enter your input word:");
        scanf("%s", word);

        /* open input file in read mode */
        fp1 = fopen(filename, "r");

        /* error handling */
        if (!fp1) {
                printf("Unable to open the input file!!\n");
                return 0;
        }

        /* open temporary file in write mode */
        fp2 = fopen(temp, "w");

        /* error handling */
        if (!fp2) {
                printf("Unable to open temporary file!!\n");
                return 0;
        }

        /* delete the given word from the file */
        while (!feof(fp1)) {
                strcpy(str, "\0");
                /* read line by line from the input file */
                fgets(str, MAX, fp1);

                /*
                 * check whether the word to delete is
                 * present in the current scanned line
                 */
                if (strstr(str, word)) {
                        tmp = str;
                        while (ptr = strstr(tmp, word)) {
                                /*
                                 * letters present before
                                 * before the word to be deleted
                                 */
                                while (tmp != ptr) {
                                        fputc(*tmp, fp2);
                                        tmp++;
                                }
                                /* skip the word to be deleted */
                                ptr = ptr + strlen(word);
                                tmp = ptr;
                        }

                        /* characters present after the word to be deleted */
                        while (*tmp != '\0') {
                                fputc(*tmp, fp2);
                                tmp++;
                        }
                } else {
                        /*
                         * current scanned line doesn't 
                         * have the word that need to be deleted
                         */
                        fputs(str, fp2);
                }
        }

        /* close the opened files */
        fclose(fp1);
        fclose(fp2);

        /* remove the input file */
        remove(filename);
        /* rename temporary file name to input file name */
        rename(temp, filename);
        return 0;
  }



  Output:
  jp@jp-VirtualBox:~/$ cat data.txt 
  you The moment you I have realized God sitting you
  you in the temple of every you human body, you the 
  you moment I you stand in reverence you before every 
  you human being you and see God in you him - you that
  moment I am free from bondage, you  everything that 
  binds vanishes, and I am free. you
  -Swami Vivekanada

  jp@jp-VirtualBox:~/$ ./a.out
  Enter your input file name:data.txt
  Enter your input word:you

  jp@jp-VirtualBox:~/$ cat data.txt 
  The moment  I have realized God sitting 
  in the temple of every  human body,  the 
  moment I  stand in reverence  before every 
  human being  and see God in  him -  that
  moment I am free from bondage,   everything that 
  binds vanishes, and I am free. 
  -Swami Vivekanada






SEE ALSO

    No comments:

    Post a Comment