Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C初学者:如何使用while循环将参数从*argv[]复制到字符串数组?_C_Arrays_While Loop_Copy_Argv - Fatal编程技术网

C初学者:如何使用while循环将参数从*argv[]复制到字符串数组?

C初学者:如何使用while循环将参数从*argv[]复制到字符串数组?,c,arrays,while-loop,copy,argv,C,Arrays,While Loop,Copy,Argv,我正在学习C语言,我是一个绝对的初学者。我正试着做一个练习,但经过几次尝试,我都解决不了。 我必须使用将*argv[]中的参数复制到一个字符串数组*states[],同时循环 printf("You've mentioned the state %s.\n", states[i]); 打印出应该作为参数输入的状态的名称。我认为我必须使用的唯一标题是stdio.h 提前感谢您的帮助 编辑。到目前为止,我只尝试过这样的事情 char *states[]; i = 1; states[i] = ar

我正在学习C语言,我是一个绝对的初学者。我正试着做一个练习,但经过几次尝试,我都解决不了。 我必须使用
*argv[]
中的参数复制到一个字符串数组
*states[]
,同时
循环

printf("You've mentioned the state %s.\n", states[i]);
打印出应该作为参数输入的状态的名称。我认为我必须使用的唯一标题是
stdio.h

提前感谢您的帮助

编辑。到目前为止,我只尝试过这样的事情

char *states[];
i = 1;
states[i] = argv[i];
if(argc > 1) {
    while(i < argc){
        printf("You've mentioned the state %s.\n", states[i]);
        i++;
    }
}
char*状态[];
i=1;
状态[i]=argv[i];
如果(argc>1){
而(i

但是,当然,我得到了一个错误,因为
状态[I]=argv[I]语句。

您可以执行以下操作:

char* states[argc];
int i = 0;
while (i < argc) {
     strcpy(states[i], argv[i]);
}
char*状态[argc];
int i=0;
而(i

您必须包括

argv
已经是一个字符串数组,为什么要复制它?我想练习的目的是更好地理解如何使用数组。您应该展示您已经尝试过的内容。张贴您的代码。您需要在之前分配每个状态[i],以避免分段错误。另一种选择是使用字符状态[argc][MAX],其中MAX是参数的最大期望值。或者,为了避免SF,可以使用状态[i]=argv[i];但这不会创建实际的副本。按照@aeliton的建议,这是可行的,但我认为我不应该使用
strcpy
@ToritoVerdejo。另一种方法是设置最大arg长度并执行嵌套循环。就像在矩阵上一样。在内部循环中,状态[i][j]=argv[i][j]