#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; }