在文本文件中查找单词并替换整行

时间:2013-11-13 22:00:42

标签: c replace line

我正在尝试编写一些简短的C代码,它们会找到“Applicat”这个词,并用其他东西替换整行,而不仅仅是单词。 例如,我有一个test.txt文件,上面写着:

姓名:测试

适用:某事

日期:今天

我当前的代码会找到“Applicat”这个词,并将其替换为“Applicat:ft_link”,但“东西”仍然存在。我怎么能看起来像这样:

姓名:测试

申请人:ft_link

日期:今天

或者有更简单的方法吗?

提前致谢!

以下是我的代码的主要部分:

 char buffer[512];
 while (fgets(buffer, sizeof(buffer), input) != NULL)
 {

 static const char text_to_find[] = "Applicat:";

 static const char text_to_replace[] = "Applicat: ft_link";

 char *pos = strstr(buffer, text_to_find);
 if (pos != NULL)
 {

 char *temp = calloc(
 strlen(buffer) - strlen(text_to_find) + strlen(text_to_replace) + 1, 1);

 memcpy(temp, buffer, pos - buffer);

 memcpy(temp + (pos - buffer), text_to_replace, strlen(text_to_replace));

 memcpy(temp + (pos - buffer) + strlen(text_to_replace),
 pos + strlen(text_to_find),
 1 + strlen(buffer) - ((pos - buffer) + strlen(text_to_find)));

 fputs(temp, output);

 free(temp);
 }

1 个答案:

答案 0 :(得分:1)

假设您的输出文件名与输入文件名

不同

如果您要更换整行,那么您只需使用换行符将 text_to_replace 写入文件即可。

char buffer[512];
while (fgets(buffer, sizeof(buffer), input) != NULL)
{
     static const char text_to_find[] = "Applicat:";
     static const char text_to_replace[] = "Applicat: ft_link\n";  // Added newline
     char *pos = strstr(buffer, text_to_find);
     if (pos != NULL)
     {
         fputs(text_to_replace, output);
     }
}