验证用户输入"string"长度(C 语言)



我正在尝试制作一个小程序,以读取用户的输入,并且仅接受一个长度为1的字符串'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/Busn");
printf("(Enter O) Train/Omnibusn");
printf("(Enter R) Train rapiden");
printf("(Enter I) Transport integren");
printf("(Enter C) Carte orangen");
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'。

现在,正如我所说的,如果它的长度为1(和其他条件),但我试图使用字符串仅接受"用户输入",但我无法实现它。预先感谢。

您想要:

while ((*userInput!= CODE_METRO_BUS &&
        *userInput!= CODE_OMNIBUS &&
        *userInput!= CODE_RAPIDE &&
        *userInput!= CODE_INTEGRE &&
        *userInput!= CODE_CARTE_ORANGE) ||
        (strlen(userInput) > 1)) ) {

因为 userInput 是字符串,而CODE_METRO_BUS和其他是字符,并且当您检查长度时,将错误放置在

时。

我鼓励您将scanf("%s",userInput);替换为scanf("%49s",userInput);,不要用 userInput 写出,如果用户输入超过49个字符,即使只读取一个字符串的字符串最多49个字符也很奇怪,而期望只有1个字符...

检查 scanf is 1

返回的值也很有趣

编写Enter M并测试 m 而不是 m etc et

也很奇怪

相关内容

  • 没有找到相关文章

最新更新