程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 程序猿之---C語言細節5

程序猿之---C語言細節5

編輯:關於C語言

程序猿之---C語言細節5


主要內容:字符串內存分配、合並兩個字符串

#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;
}
輸出:


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved