#include <stdio.h>
void wrapperPrint(char* s)
{
printf(s);
return;
}
int main()
{
wrapperPrint("Hello world\n");
wrapperPrint("This is a string");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果程序正确打印字符串(确实在gcc 4.6.3上测试过),为什么我们需要像%d,%s等格式说明符.或者换句话说,这个程序的潜在问题是什么.
原样,完全没有问题.但是,如果传入包含百分号的字符串,可能会导致问题,因为printf会尝试将其视为转换说明符的开头,但1)转换说明符的其余部分可能不会存在,2)当你调用时,你也不会传递匹配的参数printf,所以如果你确实传递了一个正确的转换说明符,它将尝试使用一个不存在的参数(给出未定义的行为).