int main()
{
int t = 5;
char buf[100];
sprintf(buf, "%% Hello, world %d times! ", t);
printf(buf);
return 0;
}
期望显示为:% Hello, world 5 times!
实际显示为:Hello, world 5 times!
分析: sprintf printf 遇到%(%会被忽略)会查看后的字符,如果后面是d, f等,会取后面的值,其它如%等,不作处理.
上面改为sprintf(buf, "%%%% Hello, world %d times! ", t);