sprintf()函数原型:
int sprintf(char *str, const char *format, ...);
str参数:是指向存储输出结果的缓存区的指针,必须具有足够的容量来存储输出结果;
format参数:是格式控制字符串,定义了输出的格式等;
...参数:代表的是可变参数;
返回值:输出到缓存区中的字符数量,这个值不包括字符串结尾的'\0'。
例子:
char name[20] = "ysc";
char str[50];
sprintf(str, "My name is %s.", name);
printf("%s\n", str);
输出为:My name is ysc
一、sprintf使用注意点:
1.sprintf对非空空间进行赋值时,修改地址
1.1错误示范:
char buff[100]= "ysc";
sprintf(buff,"%s","sxy");
printf("%s\n",buff);
返回值如下,但并不是我们所希望的。
1.2正确示范:
char buff[100]= "ysc";
sprintf(buff+sizeof(ysc),"%s","sxy");
printf("%s\n",buff);
返回值:
2.使用sprintf时对第一个参数即缓存区buff对象使用错误
2.1错误示范:
char *buff = malloc(100);
buff ="ysc";
sprintf(buff,"%s","sxy");
printf("%s\n",buff);
发生段错误,原因是此时buff虽然拥有足够的空间存储字符串,但由于指向字符串"ysc",导致sprintf是对"ysc"的地址处进行操作。
正确示范:
#if 0
char *buff = malloc(100);
sprintf(buff,"%s","ysc sxy");
printf("%s\n",buff);
#else
char *buff = malloc(100);
memcpy(buff,"ysc",sizeof("ysc"));
sprintf(buff+sizeof("ysc"),"%s","sxy");
printf("%s\n",buff);
#endif
如果各位还遇到过其他问题欢迎提出。