0

我正在尝试编写一些简短的 C 代码,这些代码将找到“应用程序”这个词,并将整行替换为其他内容,而不仅仅是这个词。例如,我有一个 test.txt 文件,上面写着:

名称:测试

申请:某事

日期:今天

我当前的代码会找到“应用程序”一词并将其替换为“应用程序: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);
 }
4

1 回答 1

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);
     }
}
于 2013-11-13T22:12:57.910 回答