如何在文件中查找字符串并使用C在文件中搜索字符串的下一行写入新字符串

如何在文件中查找字符串并使用C在文件中搜索字符串的下一行写入新字符串,c,linux,file,file-io,C,Linux,File,File Io,我需要一个使用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

我需要一个使用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");
            }
        }
    }
----------
}
有没有办法在不创建新文件的情况下更新现有文件

提前感谢您的回复。

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


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

您尝试编写了哪些代码来解决问题?我们可以帮助您解决代码问题,但我们不是来为您编写代码的。请逐行将File.txt复制到临时文件中,在包含“ddddd”的每一行之后,也将“MMMM NNNN”写入临时文件中。最后,删除File.txt并将临时文件重命名为File.txt。这就是逻辑。现在该由你来实施了。正如你从评论和答案中看到的,这里的人不清楚你的项目的哪一部分给你带来了麻烦。是关于逐行复制文件吗?它是关于检测密钥字符串的吗?是关于写新字符串的吗?对于有经验的程序员来说,这些事情似乎微不足道,除了一件之外,其中一些对您来说也很简单。但是这里没有人知道是哪一个给你带来麻烦。显示您拥有的代码,这些代码几乎达到了您的目标,但还没有完全达到您的目标,然后突出显示您无法完成的部分,或者您怀疑问题是由哪些部分引起的。此外,您应该避免将StackOverflow误认为是免费的代码编写服务,因为这是一个被否决的严重风险,更重要的是,被忽视。这也可以通过显示几乎正常工作的代码来避免。很抱歉,没有添加我正在工作的代码。现在,我已经更新了代码,想知道更新现有文件而不是创建新文件的可能性。感谢您的回复。但是,我正在尝试更改现有文件本身。如果在C语言中有什么办法的话?不,你不能。通过替换“现有文件”来更改“现有文件”。(我的建议末尾的重命名)该文件是文件系统中的一个条目。执行此过程后,文件系统中存在同名文件。请参阅更新。