将字符串从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

而不是整个字符串。我在某个地方失去了第一个号码。我尝试了各种方法,每一种方法都一样或不起作用。

我的关键是只得到盐(在这种情况下)4MfvmFOaDUaa5bfrMfvmFOaDUaa5bfr 没有第三个 $ 字符。我也尝试在遇到第三个 $ 时获取复制字符串的方法,然后停止复制。

因为在字符串 MfvmFOaDUaa5bfr$cvtrefr 中,</code>、<code>$cvtrefr 被 shell 扩展为位置参数和变量,它们是都是空的。

用单引号传递参数:

./a.out 'MfvmFOaDUaa5bfr$cvtrefr'

这将阻止 shell 扩展。