【发布时间】:2021-08-08 16:16:42
【问题描述】:
有没有办法从文本文件中读取格式说明符,例如%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
我知道它显然不能完全像这样工作,但我希望你明白我的目的,也许知道一种方法来做这样的事情
【问题讨论】:
-
在你的文件中写一个特定的字符来指示数据类型,然后用相应的 printf 切换大小写不是更容易吗?
-
很像这样。格式字符串没什么特别的:只是一个字符串。您可以将其指定为常量或将其从文件中读取到变量中,或根据需要构建它。不过,从外部来源读取它时,安全问题比比皆是。
标签: c io formatting printf string-formatting