次のことを行うはずのCで関数/メソッドを書いています:
/** * 引数のリストを受け取り、 * 構成ファイルの名前を conffile にコピーします。* デフォルトのファイル名が使用された場合は 1 を返します。* パラメータ -f が存在し、指定された名前が使用された場合は 2 を返します。-f * パラメータがあっても無効な場合は 0 を返します。(最後の引数)
*/
基本的に、これら 2 つのオプションのいずれかがプログラムによって「尋ねられます」:
1- コントローラー -f FCFS|LOOK
2- コントローラ FCFS|LOOK
2 番目を尋ねられた場合は、デフォルトの名前を使用する場合を入力します。
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 にコピーする方法です。そして、それらの1つが配列であるため、conffileにアクセスするのと同じ方法でargvにアクセスできますか? for ループと strlen を使おうと思ったのですが、それだとコンピュータにとって余計な手間がかかりますよね。