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

时间:2012-11-27 18:43:46

标签: 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”之类的字符串保存到文件中。我知道如果我用%%替换%,它会正确保存,但我无法为%

编写正确的替换代码

2 个答案:

答案 0 :(得分:0)

您可以执行fprintf(fp, "%s", buff)或使用同样的fputs(buff, fp)

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

答案 1 :(得分:0)

结帐fputsfwrite - 他们都没有执行任何替换。前者可能是您正在寻找的,也更容易使用,但如果您需要它,fwrite会为您提供更多功能(它通常用于将任意二进制文件写入文件)。

希望有所帮助!

PS:或者,对于一个非常蹩脚的hackish解决方案,请尝试:

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