C 扫描包含%symbol的行时,fgets()很奇怪
这是一个学校项目的一部分,所以我不能向任何人展示我的代码,但可以说,我的项目必须阅读、复制和编辑自己的源代码(因为我们正在研究多态恶意软件)。我使用fgets()来读取每一行代码,但是每当我有一行带有模运算或格式字符串的代码时,%符号和它后面的任何非空白字符都会丢失。我猜fgets()将%符号视为格式字符串,那么我如何告诉它不要这样做呢 回答后编辑: 我发布了一行代码来证明什么是错误的。 这是我从文件中获取字符串的方式:C 扫描包含%symbol的行时,fgets()很奇怪,c,string,file-io,C,String,File Io,这是一个学校项目的一部分,所以我不能向任何人展示我的代码,但可以说,我的项目必须阅读、复制和编辑自己的源代码(因为我们正在研究多态恶意软件)。我使用fgets()来读取每一行代码,但是每当我有一行带有模运算或格式字符串的代码时,%符号和它后面的任何非空白字符都会丢失。我猜fgets()将%符号视为格式字符串,那么我如何告诉它不要这样做呢 回答后编辑: 我发布了一行代码来证明什么是错误的。 这是我从文件中获取字符串的方式: fgets(line, 128, src_file); 这就是我将字符串
fgets(line, 128, src_file);
这就是我将字符串写入新文件的方式(这是错误的)
您对fprintf(out\u file,line)的调用是错误的
当行
包含%
字符时,它将被fprintf()
解释为格式说明符,这不是您想要的
您应该将其改为
fprintf(out_file,“%s”,line)
。如果您只需要将字符串写入您最好使用的文件:
如何确定缺少字符?我猜您是用
printf()
输出的,没有格式字符串?给我们一些代码。否则很难讨论(你所遇到的问题说明了这一点)。你不必展示一切。只需提供一个fprintf(out_文件,行);我猜我应该使用fprintf(out_文件,“%s”,行);如果您使用类似于printf
-的函数打印任意字符串,则必须使用printf(“%s”,string)
,而不要使用printf(string)
。您非常擅长这一点,能够识别没有代码时的问题所在(再次表示抱歉)。
fprintf(out_file, line);
fputs(line, out_file);