2016-05-29 7 views
0

次はもちろんの番組名以外の1つのコマンドライン引数を受け入れ、単純なコードであり、そしてそれは1から32コマンドライン引数arg "^" output "more?"

  1. の間の整数であるかどうかを確認するためにチェックが求めCMDます。cd c:\ somefolder
  2. CMDプロンプト:C:\ somefolder>のgcc -o myCodeがmycode.c
  3. CMDプロンプト:C:\ somefolder> myCode 5
  4. CMDプロンプト:C:\ somefolder>あなたの引数が受理されました。
  5. cmdプロンプト:c:\ somefolder> myCode^
  6. cmd prompt:もっとですか?

次に、別の入力を待ちます。手紙を確認したように、どうすればこのことを確認できますか?

#include <stdio.h> 
#include <stdlib.h> 

int main(int argc, char *argv[]) 
{ 
    if (argc == 1) 
    { 
     printf("\nPlease enter a cmd-line arg between 1 and 32.\n"); 
     return 0; 
    } 

    if (argc == 2) 
    { 
     int x; 
     char *ptr; 
     long y = strtol(argv[1], &ptr , 10); 
     int l = strlen(argv[1]);     

     for (x = 0; x <= (l - 1); x++) 
     { 

      if (argv[1][x] >= 'a' && argv[1][x] <= 'z') 
      { 
       printf("\nYou can't enter letters.\n"); 
       return 0; 
      } 
      else if (argv[1][x] >= 'A' && argv[1][x] <= 'Z') 
      { 
       printf("\nYou can't enter letters.\n"); 
       return 0; 
      } 
      else 
      { 
       //printf("\nCeaser shift accepted.\n"); 
      } 
     } 

     if (y <= 0 || y > 32) 
     { 
      printf("\nCeaser shift must be between 1 and 32.\n", y); 
      return 0; 
     } 

    } 

    if (argc > 2) 
    { 
     printf("You entered too many arg."); 
     return 0; 
    } 

    printf("\nYour arg is accepted.\n"); 

    return 0; 
} 
+0

注意/シフト。 –

+1

文字クラスをチェックするには、 'isalpha()'、 'islower()'、 'isupper()'、 'isdigit()'のような ''ヘッダとマクロ/関数を使うべきです。 –

+0

@Jonathanはい、私はこれを使ってシーザー暗号を使ってメッセージを暗号化しています。私はにもお礼を見ていきます。 –

答えて

2

特別なコンソール記号(エスケープ文字[1,2])ですが、何もできません。

あなたはそのようなあなたのプログラムを実行することがあります。

myCode "^" # (with double quotes) 

または

myCode ^^ 

を[1] http://ss64.com/nt/syntax-esc.html

それはシーザー暗号であること、[2] http://www.robvanderwoude.com/useless.php#EscapeChar

+0

興味深い。ユーザーが私のプログラムの入力として誤って入力しないことを願っています。 –

関連する問題