gpt4 book ai didi

c - fputs 制造问题

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

fseek(ofile, 13, SEEK_SET);
fputs("\t", ofile);

do
{
ch = getc(ofile);
printf("%c", ch);

if(ch == '\n') {
fseek(ofile, 13, SEEK_CUR);
fputs("\t", ofile);
}
} while(ch != EOF);

我编写了这个程序,它操作一个文件并在每一行的特定位置后插入一个\t。每当我使用第二个 fputs 时,它都会使文件不可读。为什么会这样?

最佳答案

一些你可能想看的东西:

  • fputs 不会插入 任何东西,它覆盖 那里的任何东西。换句话说,TAB 字符将简单地覆盖原来存在的任何内容。如果你想插入东西,你最好编写一个过滤器类型的程序,将字符从一个文件复制到另一个文件,允许沿途进行更改(例如,如果最后一个换行符在 13 个字符之前插入)。<
  • 您的fseek 将更改写入 后续getc 操作的当前位置。这意味着您需要注意比预期短的线路。
  • 您确实应该检查 fseekfputs 的返回值 - 它们可能会失败。
  • getc 之后,文件指针位于下一个 字符处,因此请确保它是您感兴趣的换行符后的十四个字符。<
  • 注意文件中的最后一个换行符。超出此范围的 13 个字节的搜索不太可能起作用,而且无论如何您都在执行 fputs

如果所有这些都失败了,使用类似 Linuxy 的东西以十六进制模式转储修改后的文件:

od -xcb myFileName.txt

并查看各个字节是什么。 gEdit 因拒绝甚至有一个字符不正常的文件而臭名昭著,这就是为什么我对所有内容都使用 vim :-)

关于c - fputs 制造问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5296988/

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