gpt4 book ai didi

c - 读写就地不写?

转载 作者:太空宇宙 更新时间:2023-11-04 01:08:37 25 4
gpt4 key购买 nike

C 的新手,我正在尝试就地替换文本。我认为 fopen 中的 r+ 应该允许我读写。我正在查看文件中的每一行,如果它以/开头,那么我将在 http://example.com 之前添加到行首。示例...行是/tree 然后该行变为 http://example.com/tree .正则表达式工作正常。我可以很好地读取文件,但它没有写入。有什么想法吗?

void
fix_relative (char *page)
{
FILE *fp;
fp = fopen ("file", "r+");

char line[1000];
regex_t re;
regcomp (&re, "^/", REG_EXTENDED);

while (fgets (line, sizeof line, fp) != NULL)
{
if (regexec (&re, line, 0, NULL, 0) == 0) {
fprintf (fp, "http://example.com%s\n", line);
}
}

fclose (fp);
}

最佳答案

这不可能行得通。一旦您的新字符串完全与原始字符串一样长,您就会遇到问题。此外,由于您在文本模式下工作,换行/回车转换可能会产生额外的人工制品。

相反,请执行以下操作:

  • 以只读方式打开文件“file”
  • 创建一个新的只写临时文件
  • 读取一行,必要时修改,写入新文件
  • 完成后,删除"file"并重命名您的临时文件。

关于c - 读写就地不写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17762982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com