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

时间:2018-08-17 12:37:55

标签: 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 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");
            }
        }
    }
----------
}

是否可以在不创建新文件的情况下更新现有文件?

提前感谢您的回复。

1 个答案:

答案 0 :(得分:0)

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

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