【发布时间】:2014-03-20 04:09:19
【问题描述】:
我正在尝试执行以下操作:
给定一个带有 cmd 参数的程序,我试图将 argv 中的某些字符串存储到 char** 中,但我是 C 新手,我真的不确定如何做到这一点并不断遇到分段错误.我该怎么做?
示例:
程序运行执行“Program arg2 arg3 arg5”行
现在我想将arg2 和arg5 保存到一个新的字符串数组中,让我们调用它
StringFromArgs 和它的 char**,
我还可以看出argv[1] 和argv[3] 是我需要的,
假设我知道StringsFromArgs 的最大容量是 3。
我该怎么写:
StringsFromArgs[0]=argv[1]
StringsFromArgs[1]=argv[2]
StringFromArgs[2]=NULL
编辑 示例代码
int main(int argc, char** argv){
char** stringsFromArgs;
stringsFromArgs = malloc( 3 * sizeof(char*) ) ;
int i;int k=0;
for(i=1; i<argc; i++){
if(argv[i]= somecondition){
stringsFromArgs[k] = argv[i];
k++;
}
}
//do something
return 0;
}
**编辑: 最后用你的答案解决了,谢谢!
【问题讨论】:
-
你为 StringsFromArgs 分配空间了吗?
-
我有,由于某种原因它仍然无法工作......
-
很可能,您没有正确分配 StringsFromArgs。给我们malloc代码,我们就能指出错误。
-
看不到任何错误,除了“if(argv[i]= somecondition)”应该是“if(argv[i] == somecondition)”
-
另外,由于 "argv[i]" 是一个字符串,你不能只做一个 " == " 比较,只有当你知道你在做什么的时候。我会说,你必须做一个“strcmp”。
标签: c string command-line-arguments