Pav*_*ath -1 c format-specifiers
我有类似的东西
char string[]="My name is %s";
printf("%s",string,"Tom");
Run Code Online (Sandbox Code Playgroud)
我期待输出,My name is Tom但我得到了My name is %s
我尝试逃避%角色,但它有效.
这里出了什么问题?我怎么会有%s一个%s?
尝试这样的事情
printf(string,"Tom");
Run Code Online (Sandbox Code Playgroud)
你的方法的问题是这个 -
只要在格式字符串中printf看到%s格式说明符,它就会假定列表中的下一个参数是字符指针指向的字符串,检索它并将其打印出来代替%s.现在,printf不进行递归替换,因此
%s在你的string遗体内部就是这样,而"汤姆"现在是一个额外的参数,它只是被丢弃了.