String 如何在C语言中保存没有格式字符串的文本文件

String 如何在C语言中保存没有格式字符串的文本文件,string,file,format,String,File,Format,我想使用以下功能将文本保存到文件中: void wl (char* buff[],char lp[],char mt[]) { FILE *fp; fp=fopen(lp, mt); fprintf(fp, buff); fclose (fp); } 如果我通过一个简单的输入缓冲区运行它,比如“abcd”。。。。“abcd”将保存到目标文件中 但是,如果我包含包含“%s%d…”或其他C格式字符串的文本。。。它将保存错误的数据 我想知道如何将“ab%cd”这样的字符串保

我想使用以下功能将文本保存到文件中:

 void wl (char* buff[],char lp[],char mt[])
 {
  FILE *fp;
  fp=fopen(lp, mt);

  fprintf(fp, buff);
  fclose (fp);
  }
如果我通过一个简单的输入缓冲区运行它,比如“abcd”。。。。“abcd”将保存到目标文件中

但是,如果我包含包含“%s%d…”或其他C格式字符串的文本。。。它将保存错误的数据

我想知道如何将“ab%cd”这样的字符串保存到文件中。我知道如果我将%替换为%%,它将正确保存,但我无法为
%

编写正确的替换代码。您可以执行
fprintf(fp,“%s”,buff)
或使用
fputs(buff,fp)
执行相同的操作

您可能永远不应该将任何输入用作格式化字符串-这可能会导致漏洞利用。

请签出,并且-它们都不执行任何替换。前者可能是您想要的全部,也更易于使用,但如果需要,fwrite会为您提供更多功能(通常用于将任意二进制文件写入文件)

希望有帮助

PS:或者,对于一个真正蹩脚的黑客解决方案,请尝试:

fprintf(fp, "%s", buff); //Yuck!

谢谢你的回答和安全提示;)