下面是我的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