如何编写文件内容的字符串表示形式?

How to write the string representation of the contents of a file?

在我的文件中,假设它具有以下内容:

my_file.txt

/* My file "\n". */
Hello World

如果我想生成一个文件并将相同的内容作为 C 代码中的字符串传递,新文件将如下所示:

my_generated_c_file.c

const char my_file_as_string[] = "/* My file \"\n\". */\nHello World\n\n";

在一次不幸的尝试中,我试图简单地一个接一个地添加字符:

#include <stdio.h>
int main ()
{
  FILE *fp_in = fopen("my_file.txt", "r");
  FILE *fp_out = fopen("my_generated_c_file.c", "w");

  fseek(fp_in, 0L, SEEK_END);
  long size = ftell(fp_in);
  fseek(fp_in, 0L, SEEK_SET);

  fprintf(fp_out, "const char my_file_as_string[] = \"");
  while (size--) {
    fprintf(fp_out, "%c", getc(fp_in));
  }
  fprintf(fp_out, \";\n\n");

  fclose(fp_in);
  fclose(fp_out);
  return 0;
}

但这不起作用,因为例如 '\n' 被读取为换行符而不是 "\n"

如何解决?

您可以简单地在原始文件中存在 '\' 的地方打印 '\'

while (size--) {
    char next_c = getc(fp_in);
    if(next_c == '\') {
      fputs("\\", fp_out);
    }
    else {
      fputc(next_c, fp_out);
    }
  }

您可能还想执行其他此类转换,例如将换行符替换为 \n