【发布时间】:2015-08-01 06:41:30
【问题描述】:
我想用动态参数控制printf()函数的输出格式,如下代码所示:
#include<stdio.h>
int main(int argc,char ** argv)
{
printf(argv[1],"hello,world");
return 0;
}
然后我编译并运行它:
$ gcc -o test test.c
$ ./test "\t%s\n"
结果很奇怪:
\thello,world\n$
为什么"\n"和"\t"没有效果?
【问题讨论】:
-
好吧,你显然可以用那个 arg 设置 printf 的格式,你仍然有你的 \t 和 \n。问题是这些字符似乎不被解读为制表和换行。另外,不要使用用户输入的第一个参数调用 print,这是一个 huuuuuge 安全漏洞!!!
-
这个问题(或其答案)实际上不是关于 C 或
printf,而是关于为什么你的 shell 不以与 C 编译器相同的方式解释字符串内部的\t和\n确实。
标签: c arguments printf command-line-arguments