以下是我的C函数之一:
void test(char * ptr)
{
ptr[0] = 'T';
ptr[1] = 'O';
ptr[2] = 'P';
ptr[3] = '\0';
}
有没有办法缩短这个?我试过了
void test(char * ptr)
{
ptr[0] = "TOP";
}
但这不起作用。 [注意:我没有库函数strcpy()
或类似的。]
答案 0 :(得分:8)
不,你需要编写自己的strcpy()。您只能为初始化程序执行char ptr[] = "TOP"
。
但你可以这样做,可以很容易地改为strcpy():
void test(char * ptr)
{
char * S_TOP = "TOP";
do {
*ptr++ = *S_TOP++;
} while( *S_TOP != '\0' );
}
答案 1 :(得分:7)
假设GCC,请查看built-in functions列表。特别是,__builtin_strcpy()
和__builtin_memcpy()
都可用作编译器instrinsics,不需要库支持。