Сканирование разных типов переменных - PullRequest
3 голосов
/ 11 апреля 2020

Мое задание - создать игру в жанре "охотник за словами". Пользователь вводит координаты и связанное слово. Координаты имеют ту же форму, что и на шахматной доске (например: D7 combative). Я сканирую это как:

scanf(" %c%d %s", &ypos, &xpos, word);

Проблема в том, что когда пользователь вводит exit, программа должна прекратить, но я сканирую не только строку, но и символ, целое число, а затем строку. Как я могу заставить программу завершиться, когда ввод exit?

1 Ответ

1 голос
/ 11 апреля 2020

Вы можете сначала scanf ввести как строку, а затем проверить, является ли она строкой "exit" , и выйти, если она есть. Если нет, то с помощью sscanf вы можете получить нужные переменные.

Пример

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

int main()
{
    char str[20];
    char x;
    int y;
    char word[20];

    if (1 != scanf("%19[^\n]", str))
      return printf("Invalid input\n"), 0;

    if (strcmp(str, "exit") == 0)
      return printf("Exiting\n"), 0;

    if (3 != sscanf(str, "%c%d%s", &x, &y, word))
      return printf("Invalid input\n"), 0;

    printf("%c%d %s", x, y, word);

    return 0;
}
...