Я пытаюсь создать небольшую программу, которая читает входные данные от пользователя и принимает только строку длиной 1. Кроме того, это должны быть либо 'm', 'o', 'r','i' или 'c'.
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#define CODE_METRO_BUS 'm'
#define CODE_OMNIBUS 'o'
#define CODE_RAPIDE 'r'
#define CODE_INTEGRE 'i'
#define CODE_CARTE_ORANGE 'c'
char userInput[50];
printf("Enter the desired service:\n");
printf("\n");
printf("(Enter M) Metro/Bus\n");
printf("(Enter O) Train/Omnibus\n");
printf("(Enter R) Train rapide\n");
printf("(Enter I) Transport integre\n");
printf("(Enter C) Carte orange\n");
printf("\n");
printf("Choice: ");
fflush(stdin);
scanf("%s",userInput);
while ((userInput!= CODE_METRO_BUS &&
userInput!= CODE_OMNIBUS &&
userInput!= CODE_RAPIDE &&
userInput!= CODE_INTEGRE &&
userInput!= CODE_CARTE_ORANGE) ||
(strlen(userInput> 1)) ) {
printf("Error! Retry: ");
fflush(stdin);
scanf("%s",userInput);
}
Я просто не уверен, как я мог это сделать.Когда я попытался с помощью char, он наполовину работал, потому что, скажем, я ввел на вводе «mfybsn», программа только что обнаружила первую букву (это «m»), и она была подтверждена как правильная.Но очевидно, что «mfybsn» не = «m», хотя моя старая программа думает, что это было по некоторым причинам.
Теперь, как я уже сказал, я пытаюсь использовать строки, чтобы принимать «userInput» только в том случае, еслион имеет длину 1 (и другие условия), но мне не удается его достичь.Заранее спасибо.