首页 > 解决方案 > 如何在文件中查找字符串并使用 C 在文件中紧接该搜索字符串的下一行写入新字符串

问题描述

我需要一个建议来使用 c 程序在文件中查找和写入字符串。

例如 File.txt 有以下内容

aaaaa bbbbb
ccccc ddddd
eeeee fffff
ggggg

在这里,我想搜索一个字符串“ddddd”并在这一行之后写入新字符串(“MMMM NNNN”),如

添加新字符串后,文件将具有以下内容,

aaaaa bbbbb
ccccc ddddd
MMMM NNNN
eeeee fffff
ggggg

以下是我试图使其工作并仍在工作的示例代码

int main(int argc, char *argv[])
{
    ------
    ------  

    /* Opening a file based on command line argument*/
    fptr = fopen(argv[1], "rw");

    while(fgets(buf, buflen, fptr))
    {
         ------------
        {


            /*Checking the key string "ddddd" and if presents then have to add "MMMM NNNN" in immediate next line*/

            if (strstr(buf, "ddddd"))
            {
                printf("Found Matching for : %s\n", argv[3]);
                fprintf(fptr, "\n%s\n", "MMMM NNNN");
            }
        }
    }
----------
}

有没有办法在不创建新文件的情况下更新现有文件?

提前感谢您的回复。

标签: clinuxfilefile-io

解决方案


您需要“假脱机”文件。也就是说,打开文件进行读取,打开一个新文件进行写入,从文件中读取,“做你的事情”并写入新文件,关闭文件,删除旧文件并将新文件重命名为旧文件. 编码这个你必须自己做。

请注意,文本文件本质上是一个顺序文件。这意味着,如果您以读/写模式打开文件,则不能“插入”数据,因为这会覆盖其他现有数据。


推荐阅读