我有以下代码将参数字符串复制到 char 数组。
char *str = malloc(strlen(argv[1]) + 1);
strcpy(str, argv[1]);
printf("%s\n", str);
为什么当我传递以下参数时:
$6$4MfvmFOaDUaa5bfr$cvtrefr
我得到:
MfvmFOaDUaa5bfr
而不是整个字符串。我在某个地方失去了第一个号码。我尝试了各种方法,但每一种方法都一样有效或无效。
我的 key 是只获取盐(在这种情况下)4MfvmFOaDUaa5bfr
或 $6$4MfvmFOaDUaa5bfr
没有第三个 $ 字符。我还尝试在遇到第三个 $ 时获取复制字符串的方法,然后停止复制。
最佳答案
因为在字符串 $6$4MfvmFOaDUaa5bfr$cvtrefr
中,$6
、$4
和 $cvtrefr
被展开位置参数和变量的 shell,它们都是空的。
用单引号传递参数:
./a.out '$6$4MfvmFOaDUaa5bfr$cvtrefr'
这将阻止 shell 扩展。
关于将字符串从argv复制到C中的char数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30309247/