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

📅  最后修改于: 2021-05-28 04:50:56             🧑  作者: 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需输入新行字符(即Enter键),因此我们只需将字符串的空字符复制回一个位置,以便将换行符替换为“ \ 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基础课程》。