C初学者:如何使用while循环将参数从*argv[]复制到字符串数组?
我正在学习C语言,我是一个绝对的初学者。我正试着做一个练习,但经过几次尝试,我都解决不了。 我必须使用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
将*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]