我正在用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
}

10-06 09:05