fgets() 在扫描包含 % 符号的行时很奇怪

fgets() is being weird when scanning lines that contain a % symbol

这是学校项目的一部分,所以我不能向任何人展示我的代码,但足以说明,我的项目必须读取、复制和编辑自己的源代码(因为我们正在研究多态恶意软件).我正在使用 fgets() 来读取每一行代码,但是每当我有一行带有模运算或格式字符串的代码时,% 符号和它后面的任何非空白字符都会丢失。我猜测 fgets() 正在将 % 符号视为格式字符串,那么我该如何告诉它不要那样做呢?

Post 答案编辑: 我正在发布一行代码来演示哪里出了问题。 这就是我从文件中获取字符串的方式:

fgets(line, 128, src_file);

这就是我将该字符串写入新文件的方式(这是错误的)

fprintf(out_file, line);

您对 fprintf(out_file, line) 的调用是错误的。

line包含%字符时,fprintf()会将其解释为格式说明符,这不是您想要的。

您应该改为 fprintf(out_file, "%s", line)

如果您只需要将字符串写入文件,您最好使用 fputs():

fputs(line, out_file);