如果我有这两个命令行参数,有没有一种方法可以让第二个命令行参数(一个包含 26 个字符的单词)分隔所有字母并将它们放入一个新的字符数组中?
./substitution qwertyuiopasdfghjklzxcvbnm
我试过使用这种语法,但我不确定它是否有效?
char mapping[] = argv[1];
我认为该语句会创建一个新的字符数组,称为映射,并将其分配给一个字符串,因为我假设 argv[1]
是一个字符串。然后每个索引将根据命令行参数具有相应的字符:
mapping[0] = 'q'
mapping[1] = 'w'
...
如有任何提示,我们将不胜感激! :)
最佳答案
你不能给这样的数组赋值。但是您可以使用指针。 argv 是指向空终止字符串的指针数组。这意味着它们在末尾具有 ASCII 值为零的字符“\0”。
char *mapping = argv[1];
现在 mapping
指向第一个参数。
如果您需要第一个 arg 的副本,您应该使用 malloc
(stdlib.h
) 函数为字符串分配足够的内存,然后将其复制到该内存块strcpy
(string.h
).
char *mapping = malloc(strlen(argv[1]) + 1); //strlen returns the size of the string not including the null character at the end.
strcpy(mapping,argv[1]);
...
free(mapping);//then you will have to free the allocated space when you are done with it.
现在 mapping
是 argv[1]
的副本,修改它不会影响 argc[1]
。
关于C - 将命令行参数存储为 Char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45128685/