gpt4 book ai didi

c - 使用 C 将行写入文件

转载 作者:太空狗 更新时间:2023-10-29 17:23:05 24 4
gpt4 key购买 nike

我目前正在这样做:

FILE *fOut;
fOut = fopen("fileOut.txt", "w");
char line[255];
...
strcat(line, "\n");
fputs(line, fOut);

但是发现当我在文本编辑器中打开文件时我得到了

line 1

line 2

如果我删除 strcat(line, "\n");然后我明白了。

line 1line2

如何让 fOut 成为

line 1
line 2

最佳答案

puts() 函数将换行符附加到要写入 stdout 的字符串; fputs() 函数不会这样做。

由于您没有向我们展示所有代码,我们只能假设您做了什么。但是:

strcpy(line, "line1");
fputs(line, fOut);
putc('\n', fOut);
strcpy(line, "line2\n");
fputs(line, fOut);

会以两种略有不同的方式产生您需要的结果,每种方式都可以使用两次以实现一致性(并且您的代码应该是一致的——为您的文献写作留下“优雅的变化”,而不是为您的编程)。


在评论中,您说:

I'm actually looping through a file encrypting each line and then writing that line to a new file.

天呐!您是否对加密数据进行了 base-64 编码?如果没有,那么:

  1. 您必须在 fopen() 模式中包含 b(如 fOut = fopen("fileout.bin", "wb");) 因为加密数据是二进制数据,而不是文本数据。这(b)对于 Unix 和 Windows 都是安全的,但在 Windows 上很重要,在 Unix 上无关紧要。
  2. 您不得使用fputs() 写入数据;加密值中将有零字节 ('\0'),并且 fputs() 将在它遇到的第一个字节处停止。您可能需要改用 fwrite(),告诉它每次要写入多少字节。
  3. 你不能在任何地方插入换行符;加密数据可能包含换行符,但必须保留这些换行符,不能添加无关的。
  4. 当您读回此文件时,您必须将其作为二进制文件打开 “rb” 并使用 fread() 读取它。

如果您对加密数据进行 base-64 编码,那么您可以返回将输出视为文本;这就是 base-64 编码的意义所在。

关于c - 使用 C 将行写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9620987/

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