2

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

 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”这样的字符串保存到文件中。我知道如果我用 %% 替换 %,它会正确保存,但我无法编写正确的替换代码%

4

2 回答 2

1

你可以做fprintf(fp, "%s", buff)或使用fputs(buff, fp)它做同样的事情。

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

于 2012-11-27T19:33:19.633 回答
0

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

希望有帮助!

PS: 或者,对于一个非常蹩脚的、骇人听闻的解决方案,请尝试:

fprintf(fp, "%s", buff); //Yuck!
于 2012-11-27T19:33:21.677 回答