2017-09-13 8 views
0

無効なオプション/コマンドが入力されても、whileループに入っていない場合でもプログラムをデフォルトのケースにしたいと思っています。私は何が間違っているのだろうと思っているし、それを動作させるためには何を変更する必要があるのだろうか。正しいケースが使用された場合にのみ機能する。 :)コメントからC - getopt switch whileループとデフォルトの無効なオプションのケース

#include <stdio.h> 
#include <stdlib.h> 
#include <getopt.h> 
#include <string.h> 
int main (int argc, char *argv[]){ 

const char *optstring = "rs:pih"; 
char option; 

while ((option = getopt(argc, argv, optstring)) != EOF) { 

printf("I'm in the while loop!"); 

    switch (option) { 
     case 'r': 
      break; 
     case 's': 
      printf("Second Argument: %s", optarg); 
      break; 
     case 'p': 
      printf("p"); 
      break; 
     case 'i': 
      printf("i"); 
      break; 
     case 'h': 
      printf("h"); 
      break; 
     default: 
      printf("nothing"); 

    } 

} 

return 0; 
} 
+0

あなたはこれをalookがかかる場合があります。https:// WWW .gnu.org/software/libc/manual/html_node/Example-of-Getopt.html#Getoptの例 –

+0

私にとってはうまくいくと思われます。テストケースを投稿してください。 – Dolda2000

+0

私のテストケースは./program_name d – John

答えて

0

./program_name dは旗を持っていません。試してみてください:./program_name -r -s fooの-p

あなたはまた、経由で解析されなかった残りのオプションを印刷することができます:

for (int i = optind; i < argc; i++) { 
    printf("remaining argument[%d]: %s\n", i, argv[i]); 
} 
関連する問題