1

我正在用 C 语言编写一个函数/方法,它应该执行以下操作:

/** * 接收参数列表并将配置文件的名称复制到 conffile。* 如果使用了默认文件名,则返回 1;如果 * 参数 -f 存在并因此使用了指定的名称,则返回 2。如果有 -f * 参数但无效,则返回 0。(最后一个参数)
*/

基本上,程序将“询问”这两个选项之一:

1-控制器-f FCFS|LOOK

2-控制器FCFS|LOOK

如果问第二个,我们输入使用默认名称的情况。

 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 之后获取单词并将其复制到配置文件中?而且,我可以像访问 conffile 一样访问 argv,因为其中一个是数组吗?我想过使用 for 循环和 strlen,但这对计算机来说是很多不必要的工作,不是吗?

4

1 回答 1

3

我认为作业希望您一一了解各个论点,并将它们与"-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
}
于 2013-10-27T16:48:47.670 回答