干掉字符串赋值

Ran*_*lue 2 c embedded

下面是我的一个C functiosn:

void test(char * ptr)
{
    ptr[0] = 'T';
    ptr[1] = 'O';
    ptr[2] = 'P';
    ptr[3] = '\0';
}
Run Code Online (Sandbox Code Playgroud)

有没有办法缩短这个?我试过了

void test(char * ptr)
{
    ptr[0] = "TOP";
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.[注意:我没有库功能strcpy()或类似功能.]

Fre*_*red 8

不,你需要编写自己的strcpy().你只能做char ptr[] = "TOP"初始化者.

但是你可以这样做,可以很容易地改为strcpy():

void test(char * ptr)
{
    char * S_TOP = "TOP";

    do {
        *ptr++ = *S_TOP++;
    } while( *S_TOP != '\0' );
}
Run Code Online (Sandbox Code Playgroud)


Chr*_*oph 7

假设GCC,请查看内置函数列表.尤其是,这两个__builtin_strcpy()__builtin_memcpy()可作为编译instrinsics和不需要库支持.