我正在尝试编写一些简短的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);
}
答案 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);
}
}