主要内容:字符串内存分配、合并两个字符串
一、字符串内存分配
见程序举例
二、合并两个字符串
见程序举例
#include
#include
int main(int argc, char *argv[])
{
/*
* 字符串操作:内存分配
* 字符串s和t,希望将这两个字符串连接成单个字符串r
*/
char* s = "abc";
char* t = "def";
// 方法一: 缺点:1、不能确定r指向何处;
// 2、同时不知道r所指向的内存空间是否有可容纳字符串的大小,并且是已经先分配的而不是用的是别程序使用的内存
#if 0
char* r;
strcpy(r,s);
strcat(r,t);
printf("%s\n",r);
#elseif 0
// 方法二: 缺点:s和t字符串加起来的大小不要超过r大小就能正常工作
char r[100]; // 预先指定了大小
strcpy(r,s);
strcat(r,t);
printf("%s\n",r);
#elseif 0
//方法三: 缺点: 1、malloc函数可能无法提供请求的内存
// 2、r分配的内存在使用完之后要及时释放
// 3、malloc并未分配足够的内存,字符串需要'\0' 结束
char *r;
r = malloc(strlen(s) + strlen(r));
strcpy(r,s);
strcat(r,t);
printf("%s\n",r);
#else
//方法四:
char *r;
r = malloc(strlen(s) + strlen(r) + 1);//为字符串'\0'分配内存
if (!r) // 判断是否分配成功
{
printf("malloc failed!\n");
exit(1);
}
strcpy(r,s);
strcat(r,t);
printf("%s\n",r);
free(r); // 释放内存
#endif
return 0;
}输出: