在声明期间将char数组复制到另一个const char数组

LTC*_*ipp 3 c arrays string generic-programming

我想要做的是取一个指向的字符串argv[1]并将其复制到另一个数组,但我希望这个新数组是const.

有没有办法将数组声明为const并使用argv[1]同一行的内容初始化它?

我遇到的问题是我无法将其声明为const然后在下一行使用strcpy或某些此类函数复制字符串.那是无效的.

什么是最好的行动方案?

Jou*_*uge 7

你可以这样做:

#include <stdio.h>

int main(int argc, char *argv[])
{
    const char *argument = argv[1];
    printf("%s\n", argument);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

利用参数[0]与*参数基本相同的事实.但要小心!

int main(int argc, char *argv[])
{
    const char *argument = argv[1];
    printf("%s\n", argument);

    argument[2] = 'z';    //ERROR
    printf("%s\n", argument);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

以上情况会导致错误.但...

int main(int argc, char *argv[])
{
    const char *argument = argv[1];
    printf("%s\n", argument);

    argv[1][2] = 'z';     //same memory location but no errors
    printf("%s\n", argv[1]);

    printf("%s\n", argument);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

没有错误....实际上在最后一个printf中你可以看到你的字符串已被编辑.