[英]C - Store Command Line Argument as an Array of Char
如果我有这两个命令行参数,是否可以采用第二个命令行参数,它是一个包含26个字符的单词,将所有字母分开并将它们放入一个新的字符数组中?
./substitution qwertyuiopasdfghjklzxcvbnm
我尝试使用此语法,但不确定是否有效?
char mapping[] = argv[1];
我认为该语句将创建一个称为映射的新字符数组,并将其分配给字符串,因为我假设argv[1]
是字符串。 然后,每个索引将根据命令行参数具有各自的字符:
mapping[0] = 'q'
mapping[1] = 'w'
...
任何提示将不胜感激! :)
你不能像这样给数组赋值。 但是您可以使用指针。 argv是一个以null结尾的字符串的指针数组。 这意味着它们的字符“ \\ 0”结尾处的ASCII值为零。
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]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.