呃,sprintf功能很强大,能连接任何格式的任何变量到一起,然后我用它来直接连接(或叫合并)两个字符串的时候,发现得不到正确的结果,然后呢?
1、错误做法1
int main ()
{
char * a1 = "shengruxiahua,siruzhaolu";
char * a2 = "wo ai beijing tian an men";
char * s;
s = malloc ( 10000 );
sprintf (s,"%s%s",a1,a2);
printf ("the s is %s\n",s);
return 0;
}
这样得不到正确结果,原因我不是很清楚了。
2、错误做法2
int main ()
{
char * a1 = "shengruxiahua,siruzhaolu";
char * a2 = "wo ai beijing tian an men";
char * s;
s = malloc ( 10000 );
sprintf (s,"%.*s%.*s",sizeof(a1),a1,sizeof(a2),a2);
printf ("the s is %s\n",s);
return 0;
}
这样也得不到正确的结果,因为sizeof(a1)结果为4,仅表示a1首地址的大小,就是4个字节啦。
3、正确做法
int main ()
{
char * a1 = "shengruxiahua,siruzhaolu";
char * a2 = "wo ai beijing tian an men";
char * s;
s = malloc ( 10000 );
sprintf (s,"%.*s%.*s",strlen(a1),a1,strlen(a2),a2);
printf ("the s is %s\n",s);
return 0;
}
这样就能把a1和a2这两个字符串直接连接到一起了。