看板 C_and_CPP 關於我們 聯絡資訊
看到 愛我00835熱心提供程式碼,覺得非常精闢,而原po的問題, 主要必須看裡面initNode函式就知道該怎麼解了,為了讓答案簡化, 我把 愛我00835所提供程式碼擷取出原po所需要的部份: 程式碼如下: ------------------------------------------------------------------- #include<stdio.h> #include<stdlib.h> #include<string.h> /*自己寫一個strcpy函式,需要一個字元指標跟一個常數字串 * *然後回傳一個配置好空間且複製好字傳的位址回來 */ char* My_strcpy(char *ptr, char const *const_string) { int length = strlen(const_string) + 1; <---把需要的空間算好 ptr = (char*)malloc(length); <---配置好空間 strcpy(ptr, const_string); <---開始複製常數字串 return ptr; } int main(void) { /*創建一個字元指標*/ char* buffer; buffer = My_strcpy(buffer, "幹你娘!"); <---試用看看 /*下面檢查是否記憶體配置成功,若不成功則印出訊息,並且結束程式.*/ if(buffer == NULL) { printf("配置記憶體失敗\n"); return 0; } /*如果記憶體配置成功,就會執行到這邊,把東西給印出來.*/ printf("%s\n", buffer); /*用完記憶體記得歸還*/ free(buffer); return 0; } ----------------------------------------------------------------------- 編譯測試結果: bigdick@bigdick:~/code$ clear && gcc -o My_strcpy My_strcpy.c && ./My_strcpy 幹你娘! bigdick@bigdick:~/code$ ----------------------------------------------------------------------- 希望這樣可以幫助原po理解,當然也更謝謝 愛我00835提供的好程式碼,讓我受益良多. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.161.187.77
ledia:why not use strdup ? 11/03 15:03
loveme00835:因為那不屬於標準函式庫, 把指標 pass 進去感覺怪怪的 11/03 15:12
stupid0319:My_strcpy(buffer, "幹你娘!");<<這個就不佔空間嗎?? 11/03 16:12
loveflames:呼叫My_strcpy的動作只佔幾個byte吧 11/03 16:18