[英]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);
为什么当我传递以下参数时:
$6$4MfvmFOaDUaa5bfr$cvtrefr
我明白了:
MfvmFOaDUaa5bfr
而不是整个字符串。 我失去了第一个号码。 我尝试了各种方法,每个方法都相同或不起作用。
我的关键是只获得盐(在这种情况下) 4MfvmFOaDUaa5bfr
或$6$4MfvmFOaDUaa5bfr
没有第三个$字符。 当我遇到第三个$然后停止复制时,我也尝试获取复制字符串的方法。
因为在字符串$6$4MfvmFOaDUaa5bfr$cvtrefr
, $6
, $4
和$cvtrefr
由shell扩展为位置参数和变量,它们都是空的。
用单引号传递参数:
./a.out '$6$4MfvmFOaDUaa5bfr$cvtrefr'
这将阻止壳扩展。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.