C 从文本文件读取格式说明符

C 从文本文件读取格式说明符,c,io,formatting,printf,string-formatting,C,Io,Formatting,Printf,String Formatting,是否有一种方法可以从文本文件中读取格式说明符,例如%s或%d,然后在printf的字符串变量中使用此说明符 例如,如果我有一个包含 foo=%s 我能做这样的事吗 FILE * f = fopen("/home/foo/bar", "r"); charn * s_buf = malloc(sizeof(charn) * 256); fgets(s_buf, 255, f); printf(s_buf, "bar"); 并将此

是否有一种方法可以从文本文件中读取格式说明符,例如
%s
%d
,然后在
printf
的字符串变量中使用此说明符

例如,如果我有一个包含

foo=%s
我能做这样的事吗

FILE * f = fopen("/home/foo/bar", "r");

charn * s_buf = malloc(sizeof(charn) * 256);
fgets(s_buf, 255, f);
  
printf(s_buf, "bar");
并将此结果打印出来:

foo=bar

我知道它显然不是这样工作的,但我希望您理解我的意图,也许知道这样做的方法

您的代码是正确的,但是您必须考虑如果文件包含%d而不是%s,或者任何其他必须显示的无效格式说明符,会发生什么情况


为s_buf使用malloc()空间是正确的,但静态数组也可以。以后您不需要调用free(s_buf)。

在文件中写入指示数据类型的特定字符,然后用相应的printf切换大小写,不是更容易吗?它的工作原理非常类似。格式字符串没有什么特别之处:只是一个字符串。您可以将其指定为常量,也可以从文件中将其读入变量,或者根据自己的喜好进行构建。但是,当从外部来源阅读时,安全问题比比皆是。谢谢,它现在可以工作了。问题实际上是我将文件从windows复制到linux,而没有转换编码。我从我的项目中复制了代码并进行了一些修改,这就是malloc存在的原因。我需要一个动态长度。我可以控制文本文件中的内容,我只需要一个占位符从代码中插入变量