Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        4年前关闭。
                                                                                            
                
        
这是一个学校项目的一部分,因此我无法向任何人展示我的代码,但是可以说,我的项目必须读取,复制和编辑自己的源代码(因为我们正在研究多态恶意软件)。我正在使用fgets()读取每一行代码,但是每当我有一行带有模运算或格式字符串的代码时,都会丢失%符号以及后面的任何非空白字符。我猜fgets()会将%符号当作格式字符串对待,那么如何告诉它不要这样做呢?

发表答案编辑:
我要发布一行代码来演示错误所在。
这就是我从文件中获取字符串的方式:

fgets(line, 128, src_file);


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

fprintf(out_file, line);

最佳答案

您对fprintf(out_file, line)的呼叫是错误的。

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

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

09-06 16:53