使用scanf验证特定数量的参数(int)?

时间:2017-11-19 02:33:13

标签: c validation input scanf

我需要做一个"连接4"基于用户输入的网格程序。如何在没有任何缓冲的情况下检测扫描的数量,或者接受"一个简短的输入而不等待另一个论点?在这种情况下,我希望用户在程序开头输入3个值。

 Example 1
 ./connectn.out 5 20
 Not enough arguments entered

 Example 2
 ./connectn.out 13 2 3 4 5
 Too many arguments entered

1 个答案:

答案 0 :(得分:0)

您需要的是argc和argv参数。您可以使用argc作为参数计数,使用argv作为参数本身。

以下是您的示例代码:

#include <stdio.h>
#include <string.h>

int main (int argc, char * argv[])
{
  // Check the argument count first
  if (argc != 4)
  {
    if (argc > 4)
    {
      printf("Too many arguments entered!\n");
    }
    else
    {
      printf("Not enough arguments entered!\n");
    }
    return -1;
  }
  else
  {
    // Check a specific argument (-h)
    if (strcmp(argv[3], "-h") != 0)
    {
      printf("Invalid option!\n");
      return -1;
    }
  }

  printf("Hello World.\n");
  return 0;
}

请注意,./connectn.out 5 20 argc为3.因为“connectn.out”也很重要。

以下是一些示例输出:

./out 1 2
Not enough arguments entered!
./out 1 2 3 4
Too many arguments entered!
./out 1 2 -a
Invalid option!
./out 1 2 -h 4
Too many arguments entered!
./out 1 2 -h
Hello World.

希望这有帮助。

巴里斯