干掉字符串赋值

时间:2012-03-29 14:54:01

标签: c embedded

以下是我的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()或类似的。]

2 个答案:

答案 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,不需要库支持。