2012-03-29 62 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并且不需要库支持。