作者DEATHX (幽光)
看板C_and_CPP
標題Re: [問題] 關於strcpy 的 char
時間Wed Nov 3 13:42:03 2010
看到 愛我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