程序猿之---C语言细节5
主要内容:字符串内存分配、合并两个字符串
#include <stdio.h> #include <string.h> 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; }输出:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。