/********************************************** * CP-I Warmup 1999-2000 * Problem #11 *********************************************/ /* * Question: * * Your program takes a sentence (terminated by '\n') and two additional * words, word1 and word2 as input. You are required to write a program * in C that will replace every occurrence of word1 in the sentence by * word2. The program should display the new sentence, the number of * words replaced in the sentence and the column number where word1 * occured in the original sentence. If no occurrence of word1 is found * in the sentence, a suitable message should be displayed. * * You can assume that the length of word1 is equal to the length of word2. * You can also assume that the input is in lowercase letters. * * Ex: * Input: * this is my old gold book * old * new * Output: * this is my new gnew book * The number of replacements: 2 * Columns: 12 17 */ #include <stdio.h> #include <string.h> #define MAX_STRING_LENGTH 100 #define MAX_WORD_LENGTH 20 #define MAX_NO_OF_REPLACEMENTS 20 main() { char str[MAX_STRING_LENGTH]; char old[MAX_WORD_LENGTH],new[MAX_WORD_LENGTH]; char *temp; int col[MAX_NO_OF_REPLACEMENTS]={0},count; int i; printf("Give the string: \n"); scanf("%[^\n]",str); printf("Word to replace: "); scanf("%s",old); printf("Replace with: "); scanf("%s",new); temp=str; count=0; while(temp=strstr(temp,old)) { col[count++]=temp-str+1; strncpy(temp,new,strlen(new)); temp+=strlen(new); } if(count) { printf("New String: \n%s\n",str); printf("The number of replacements: %d\n",count); printf("Columns:"); for(i=0;i<count;i++) printf("%d\t",col[i]); printf("\n"); } else printf("No occurences of %s were found\n",old); }