1、典型问题一
下面的程序输出什么为什么?
1 #include <stdio.h> 2 3 int main() 4 { 5 char buf[10] = {0}; 6 char src[] = "hello %s"; 7 8 snprintf(buf, sizeof(buf), src); //src打印到buf里面 9 printf("buf = %s ", buf); 10 return 0; 11 }
分析 :
snprintf函数本身是可变参数函数,原型如下:
int snprintf(char* buffer, int buf_size, const char* fomart, ...)
当函数只有3个参数时,如果第三个参数没有包含格式化信息,函数调用没有问题;相反,如果第三个参数包含了格式化信息,但缺少后续对应参数,则程序行为不确定。
应改为
1 snprintf(buf, sizeof(buf), src, "wss");
2、典型问题二
下面的程序输出什么为什么?
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() 5 { 6 #define STR "Hello,