C语言 在编译时打印文件(文档)的内容



为黑客程序打印文档的多产方法通常是:

void print_help(){
printf("a whole bunch of information
generally spanning many lines and looking ugly
requires editing a c file to modify documentation");
}

在我看来,这很难看,而且不容易修改文档。替代品:

通常不屑一顾:

void print_help(){
printf("read the README, you idiot");
}

容易出错,复杂:

void print_help(){
fopen("readme.md", "r");
//error check;
while (read from file){
printf("%s", line);
}
}

我想弥合解决方案1和3之间的差距,即:

void print_help(){
printf("#include"help_file.txt"");
}

我想我的问题是:

  • 真的这么简单吗?预处理器会跳过字符串,还是会注意到include指令?
  • 潜在问题?我知道任何不能很好地打印的东西如果放到文件
  • 中就会产生问题

创建一个包含文件,将文档定义为一个变量。

help_file.h:

char *help_text = "
a whole bunch of informationn
generally spanning many lines and looking uglyn
requires editing a c file to modify documentation"

program.c:

void print_help(){
#include "help_file.h"
printf("%s", help_text);
}

您可以使用shell脚本从普通的.txt文件创建包含文件。

字符串的内容不被预处理器处理,所以你不能用这样的字符串代替文件的内容。

如果您希望帮助文件是纯文本,而不是看起来像一系列C字符串,您唯一的选择是在运行时读取外部文件的内容并将其打印出来。我不会说它容易出错或者复杂:

void print_help()
{
FILE *f = fopen("readme.md", "r");
if (!f) {
printf("can't print help file");
} else {
char line[500];
while (fgets(line, sizeof line, f){
puts(line);
}
fclose(f);
}
}

相关内容

  • 没有找到相关文章

最新更新