下面是我的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()
或類似的。]
下面是我的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()
或類似的。]
不,你需要編寫你自己的strcpy()。初始化程序只能執行char ptr[] = "TOP"
。
但你可以做到這一點,可以很容易地更換的strcpy():
void test(char * ptr)
{
char * S_TOP = "TOP";
do {
*ptr++ = *S_TOP++;
} while(*S_TOP != '\0');
}
假設GCC,看一看的built-in functions列表。具體而言,__builtin_strcpy()
和__builtin_memcpy()
都可用作編譯器instrinsics並且不需要庫支持。
如果你沒有'strcpy',你可能想寫一個。這幾乎是一個班輪。 – 2012-03-29 14:55:49
'*((int *)ptr)='T'<< 24 | 'O'<< 16 | 'P'<< 8;' – nothrow 2012-03-29 14:57:29
ptr =「TOP」;不這樣做? – 2012-03-29 14:58:40