C - 将命令行参数存储为Char数组

时间:2017-07-16 12:36:11

标签: c arrays command-line-arguments

如果我有这两个命令行参数,是否有一种方法可以使用第二个命令行参数,即包含26个字符的单个单词,将所有字母分开并将它们放入一个新的字符数组中?

./substitution qwertyuiopasdfghjklzxcvbnm

我尝试使用这种语法,但我不确定它是否有效?

char mapping[] = argv[1];

我认为这个语句会创建一个名为mapping的新数组,并将其分配给一个字符串,因为我假设argv[1]是一个字符串。然后每个索引将根据命令行参数具有相应的字符:

mapping[0] = 'q'
mapping[1] = 'w'
...

任何提示将不胜感激! :)

1 个答案:

答案 0 :(得分:2)

你不能为这样的数组赋值。但你可以使用指针。 argv是一个指向空终止字符串的指针数组。这意味着他们有角色' \ 0'最后ASCII值为零。

char *mapping = argv[1];

现在mapping指向第一个参数。 如果你需要第一个arg的副本,你应该为mallocstdlib.h)函数为字符串分配足够的内存,然后用strcpy将其复制到那个内存块({{ 1}})。

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]