📌  相关文章
📜  用另一个给定的单词查找和替换文件中的单词的 C 程序

📅  最后修改于: 2021-09-07 03:27:59             🧑  作者: Mango

先决条件: C中的文件处理

给定一个包含一些文本的文件,以及两个字符串wordToBeFindwordToBeReplacedWith ,任务是找到文件中所有出现的给定单词“wordToBeFind”,并将它们替换为给定的单词“wordToBeReplacedWith”。
例子:

Input : File = "xxforxx xx for xx", 
        wordToBeFind = "xx", 
        wordToBeReplacedWith = "geeks"
Output : geeksforgeeks geeks for geeks

方法:这里的想法是从给定文件中读取内容,处理查找和替换,然后将输出存储在另一个文件中。

  1. 制作 FILE 的对象(ifp 和 ofp)
  2. 打开两个文件,一个用于读模式的文件输入,另一个用于写+模式
  3. 检查文件是否正确打开
  4. 逐字读取现有输入文件的内容
  5. 由于使用与fgets需要换行字符的输入(即回车键)也我们只是复制字符串一个位置的空字符后面,这样的换行符替换为“\ 0”
  6. 我们运行一个循环直到到达文件末尾并扫描文件中的每个单词并将其存储在变量“read”中。
  7. 然后我们将“read”与“wordToBeFind”进行比较,如果结果为真,我们使用“strcpy()”将“read”替换为“wordToBeReplacedWith”。
  8. 通过 printf 显示单词替换
  9. 现在我们再次移动文件开头的文件指针并打印输出文件的文件内容。

下面是上述方法的实现:

// C program to find and replace a word
// in a File by another given word
  
#include 
#include 
#include 
  
// Function to find and
// replace a word in File
void findAndReplaceInFile()
{
    FILE *ifp, *ofp;
    char word[100], ch, read[100], replace[100];
    int word_len, i, p = 0;
  
    ifp = fopen("file_search_input.txt", "r");
    ofp = fopen("file_replace_output.txt", "w+");
    if (ifp == NULL || ofp == NULL) {
        printf("Can't open file.");
        exit(0);
    }
    puts("THE CONTENTS OF THE FILE ARE SHOWN BELOW :\n");
  
    // displaying file contents
    while (1) {
        ch = fgetc(ifp);
        if (ch == EOF) {
            break;
        }
        printf("%c", ch);
    }
  
    puts("\n\nEnter the word to find:");
    fgets(word, 100, stdin);
  
    // removes the newline character from the string
    word[strlen(word) - 1] = word[strlen(word)];
  
    puts("Enter the word to replace it with :");
    fgets(replace, 100, stdin);
  
    // removes the newline character from the string
    replace[strlen(replace) - 1] = replace[strlen(replace)];
  
    fprintf(ofp, "%s - %s\n", word, replace);
  
    // comparing word with file
    rewind(ifp);
    while (!feof(ifp)) {
  
        fscanf(ifp, "%s", read);
  
        if (strcmp(read, word) == 0) {
  
            // for deleting the word
            strcpy(read, replace);
        }
  
        // In last loop it runs twice
        fprintf(ofp, "%s ", read);
    }
  
    // Printing the content of the Output file
    rewind(ofp);
    while (1) {
        ch = fgetc(ofp);
        if (ch == EOF) {
            break;
        }
        printf("%c", ch);
    }
  
    fclose(ifp);
    fclose(ofp);
}
  
// Driver code
void main()
{
    findAndReplaceInFile();
}

如何执行上面的代码:

  1. 从这里复制源代码并将其粘贴到离线 IDE 中
  2. 保存程序。
  3. 创建一个名为“ file_search_input.txt ”的文件并将其保存在您保存上述程序的文件夹中。
  4. 现在打开终端或离线IDE并运行程序
输出:
代码块 IDE 的输出

想要从精选的视频和练习题中学习,请查看C 基础到高级C 基础课程