将字符串从argv复制到C中的char数组
Copying string from argv to char array in C
我有以下代码将参数字符串复制到 char 数组。
char *str = malloc(strlen(argv[1]) + 1);
strcpy(str, argv[1]);
printf("%s\n", str);
为什么当我传递以下参数时:
MfvmFOaDUaa5bfr$cvtrefr
我得到:
MfvmFOaDUaa5bfr
而不是整个字符串。我在某个地方失去了第一个号码。我尝试了各种方法,每一种方法都一样或不起作用。
我的关键是只得到盐(在这种情况下)4MfvmFOaDUaa5bfr
或 MfvmFOaDUaa5bfr
没有第三个 $ 字符。我也尝试在遇到第三个 $ 时获取复制字符串的方法,然后停止复制。
因为在字符串 MfvmFOaDUaa5bfr$cvtrefr
中,</code>、<code>
和 $cvtrefr
被 shell 扩展为位置参数和变量,它们是都是空的。
用单引号传递参数:
./a.out 'MfvmFOaDUaa5bfr$cvtrefr'
这将阻止 shell 扩展。
我有以下代码将参数字符串复制到 char 数组。
char *str = malloc(strlen(argv[1]) + 1);
strcpy(str, argv[1]);
printf("%s\n", str);
为什么当我传递以下参数时:
MfvmFOaDUaa5bfr$cvtrefr
我得到:
MfvmFOaDUaa5bfr
而不是整个字符串。我在某个地方失去了第一个号码。我尝试了各种方法,每一种方法都一样或不起作用。
我的关键是只得到盐(在这种情况下)4MfvmFOaDUaa5bfr
或 MfvmFOaDUaa5bfr
没有第三个 $ 字符。我也尝试在遇到第三个 $ 时获取复制字符串的方法,然后停止复制。
因为在字符串 MfvmFOaDUaa5bfr$cvtrefr
中,</code>、<code>
和 $cvtrefr
被 shell 扩展为位置参数和变量,它们是都是空的。
用单引号传递参数:
./a.out 'MfvmFOaDUaa5bfr$cvtrefr'
这将阻止 shell 扩展。