我正在用C编写一个函数/方法,它应该执行以下操作:
/***接收参数列表并复制以确认文件名
配置文件的。*如果默认文件名为
如果参数f存在,则使用或2
使用了指定的名称。如果有-f*参数,则返回0
但无效。(最后一个参数)
*/
基本上,程序将“询问”这两个选项中的一个:
1-控制器-f FCF |外观
2-控制器FCF |外观
如果询问第二个,则输入使用默认名称的情况。
int get_conf_name(char* argv[], char* conffile) {
// Searches for -f
s = strstr(*argv, "-f");
if(s != NULL){
if(//its valid){
strcpy(conffile, //the name of the file which comes after -f
return 2
}
else return 0
}
else{
strcpy(confile, "config.vss")
return 1
}
}
这里的问题是如何得到-f之后的单词并将其复制到confile?而且,我是否可以像访问conffile一样访问argv,因为其中一个是数组?
我想用一个for循环和一个strlen,但这对计算机来说是一个不必要的工作,不是吗?
最佳答案
我认为作业要求你逐个地检查各个参数,并将它们与"-f"
进行比较。
如果您看到no-f
,您就知道需要使用默认文件
如果你看到旗子在最后位置,你就知道-f
是无效的
如果您在k
位置看到标志,则文件名将位于argv[k+1]
程序的框架应该如下所示:
bool foundFlag = false;
for (int i = 1 ; i < argc ; i++) {
if (strcmp(argv[i], "-f") == 0) {
if (i == argc-1) {
// Error
} else {
// argv[i+1] is the file name;
}
foundFlag = true;
break;
}
}
if (!foundFlag) {
// Default name is used
}