在C中,我需要从argv []
获取一个字符串参数并将其放入另一个数组中,以便我可以迭代字符。我该怎么做?
(这是为了实施Veginere Cypher FYI)
答案 0 :(得分:0)
如果要迭代n
中argv
条目的字符:
int i;
int len = strlen(argv[n]);
for (i = 0; i < len; i++)
// do something with argv[n][i]
如果您想先将其复制到其他地方(很可能没有必要),请使用strcpy()
或strdup()
。
答案 1 :(得分:0)
您无需将其复制到单独的字符串中。
以下是:
// argv is array of strings, or array of array of chars
int main( int argc, char** argv ) // here argv is an array of strings
{
int i = 0;
while( 1 )
{
if( argv[1][i] == '\0' )
break; // argv[1][i] <- Current character of the first cmd-line arg
i++
}
}
或者如果你真的想复制它以使用一个简单的字符串,只需设置一个指向字符串开头的指针,如下所示:
char* firstArgument = argv[n]; // where n is the nth command line argument
答案 2 :(得分:0)
您无需复制字符串。你没有声明你正在改变字符串(虽然argv是可修改的,我可能会不管它),所以只是迭代它。
int main(int argc, char *argv[])
{
if(argc < some_min_value) {
print_usage();
return -1;
}
for(int i = 0; argv[str_idx][i]; ++i) {
char c = argv[str_idx][i];
/* do something with c */
}
return 0;
}