2012-03-29 188 views
2

下面是我的C functiosn之一:乾涸字符串賦值

void test(char * ptr) 
{ 
    ptr[0] = 'T'; 
    ptr[1] = 'O'; 
    ptr[2] = 'P'; 
    ptr[3] = '\0'; 
} 

有沒有辦法縮短這個?我已經試過

void test(char * ptr) 
{ 
    ptr[0] = "TOP"; 
} 

但這不起作用。 [注意:我沒有庫函數strcpy()或類似的。]

+1

如果你沒有'strcpy',你可能想寫一個。這幾乎是一個班輪。 – 2012-03-29 14:55:49

+0

'*((int *)ptr)='T'<< 24 | 'O'<< 16 | 'P'<< 8;' – nothrow 2012-03-29 14:57:29

+0

ptr =「TOP」;不這樣做? – 2012-03-29 14:58:40

回答

8

不,你需要編寫你自己的strcpy()。初始化程序只能執行char ptr[] = "TOP"

但你可以做到這一點,可以很容易地更換的strcpy():

void test(char * ptr) 
{ 
    char * S_TOP = "TOP"; 

    do { 
     *ptr++ = *S_TOP++; 
    } while(*S_TOP != '\0'); 
} 
7

假設GCC,看一看的built-in functions列表。具體而言,__builtin_strcpy()__builtin_memcpy()都可用作編譯器instrinsics並且不需要庫支持。