如何处理错误的输入 C?

Med*_*nic 5 c input scanf

初学者问题:想象一下这个场景:我要求用户输入一个整数(通过使用 scanf 获取它)但用户输入一个字符,因为程序到达了它的结尾......但我想克服它,并使程序告诉他他提供了无效的输入并给用户另一个输入输入的机会,我该怎么做?

chu*_*ica 5

使用fgets(),然后sscanf()strtol()

int number;
char ch;
char *Prompt2 = "":
do {
  printf("%sEnter number :", Prompt2);
  Prompt2 = "Invalid input\n";  // Change Prompt2 
  buffer char[50];
  if (fgets(buffer, sizeof buffer, stdin) == NULL) {
    Handle_EOF();
  }  
} while (sscanf(buffer, "%d %c", &number, &ch) != 1);
Run Code Online (Sandbox Code Playgroud)

使用strtol()而不是sscanf()添加 +/- 溢出保护作为设置errno

  char *endptr; 
  errno = 0;
  long number = strtol(buffer, &endptr, 10);
  if (errno || buffer == endptr || *endptr != '\n') Handle_Error(();
Run Code Online (Sandbox Code Playgroud)

请参阅Read_long()作为如何使用该函数的示例。