将字符串从argv复制到C中的char数组

标签 c arrays linux copy

我有以下代码将参数字符串复制到 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/

相关文章:

c - fgets 在 C 中导致无限循环

c++ - 为什么我可以使用比分配的内存更多的内存?

c - 为什么#include 指令在语句末尾没有分号?

java - JTextfield 数组帮助

java - 合并两个已排序的用户输入数组时出现问题

linux - 在 bash 中仅杀死管道中的第一个进程

c++ - 通过 shell 脚本和 C++ 获取当前前台应用程序的名称

c - 我如何在客户端的 recv() 中引起 ECONNRESET?

java - 如何拆分带有圆括号的字符串?

linux - 无法使用 sqlplus : ORA-12154: TNS:could not resolve the connect identifier specified 连接到数据库