即使输入正确,if 语句也始终为真?

SlimShadys

我正在对我的项目中的月份输入进行一些检查。我扫描了 2 个字符。假设我成功地将“10”作为输入。然后通过 if 语句我询问编译器所采用的输入是大于 12 还是小于 01 ,但在任何情况下,if 语句始终为真。

#define MAX_DAY 2
#define MAX_MONTH 2
#define MAX_YEAR 4

#include <stdio.h>
#include <stdlib.h>

typedef struct {
    char day[MAX_DAY];
    char month[MAX_MONTH];
    char year[MAX_YEAR];
} date; //struct data

typedef struct {
    date date_of_flight;
} flight; //struct volo

int CheckMonth (flight list1);

int main() {

    flight list;

    int correct = 0;

    while (correct != 1) {
    printf("Month of departure: ");
    scanf("%2s", list.date_of_flight.month);
    correct = CheckMonth(list);
    }

    return 0;
}

int CheckMonth (flight list1) {

    int correct = 0;

    if ((list1.date_of_flight.month > 12) || (list1.date_of_flight.month < 01))  {
        printf("Wrong input. The right input should be between 01 (January) and 12 (December).\n");
    }
    else
    {
        correct = 1;
    }
    return correct;
}

如果您问自己为什么我使用char month[]而不是简单的 int,那是因为如果我通过 int 扫描“05”,则 scanf 将只读取 5。

假设阿格拉瓦尔

您需要比较函数中的字符串。

if ((list1.date_of_flight.month > 12) || (list1.date_of_flight.month < 01))  {
    printf("Wrong input. The right input should be between 01 (January) and 12 (December).\n");

实际上应该是:

if ((strcmp(list1.date_of_flight.month, "12") > 0 ) || (strcmp(list1.date_of_flight.month, "01") < 0))  {
    printf("Wrong input. The right input should be between 01 (January) and 12 (December).\n");
}

strcmp()是 中的一个函数<string.h>如果两个字符串相等,则返回 0。

如果第一个字符串中的第一个不同字符在第二个字符串中之后,则基于 ASCII 值,它返回一个负数。

否则,它返回一个正数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

即使输入正确的内容,程序始终会引发异常

来自分类Dev

如果语句始终为真

来自分类Dev

即使语句为真,其他语句仍在运行?

来自分类Dev

如果语句被跳过,即使该语句为真

来自分类Dev

即使 if 语句为真,Else 语句也会运行 (Swift)

来自分类Dev

如果语句与枚举相比始终为真

来自分类Dev

模型状态即使未发送必填字段也始终为真

来自分类Dev

为什么我的JavaScript if语句始终为真?

来自分类Dev

Bash:“ if”语句始终将第一个条件评估为“ true”,即使为“ false”也是如此

来自分类Dev

如果语句运行,即使不正确

来自分类Dev

输入为无效,即使错误为空

来自分类Dev

如何对数组进行排序,以便即使输入数组为空,输出也始终是数组?

来自分类Dev

解析查询始终为真

来自分类Dev

如果返回始终为真

来自分类Dev

Java 数组 - 始终为真

来自分类Dev

RouterLinkActive "isActive" 始终为真

来自分类Dev

即使条件为真,也跳过if {}吗?

来自分类Dev

如果条件被跳过,即使条件为真

来自分类Dev

尽管输入正确,但输入字段始终告诉我该字段是否为必填项

来自分类Dev

空条件运算符在 if 语句中始终为真 when 应该为假

来自分类Dev

循环直到语句为真

来自分类Dev

即使SavedInstanceState有ID,也始终为null

来自分类Dev

即使条件为假,也始终包括孩子

来自分类Dev

通过ssh执行的远程命令不会返回正确的返回码。返回错误代码始终为“ 0”,即使条件失败

来自分类Dev

Roblox Lua if语句即使值不正确仍在执行

来自分类Dev

即使语句已正确关闭,循环也不会执行错误

来自分类Dev

即使输入正确答案,程序也不会返回“正确”

来自分类Dev

代码没有输入正确的if语句

来自分类Dev

代码不断输入 if 语句,即使它不是真的

Related 相关文章

  1. 1

    即使输入正确的内容,程序始终会引发异常

  2. 2

    如果语句始终为真

  3. 3

    即使语句为真,其他语句仍在运行?

  4. 4

    如果语句被跳过,即使该语句为真

  5. 5

    即使 if 语句为真,Else 语句也会运行 (Swift)

  6. 6

    如果语句与枚举相比始终为真

  7. 7

    模型状态即使未发送必填字段也始终为真

  8. 8

    为什么我的JavaScript if语句始终为真?

  9. 9

    Bash:“ if”语句始终将第一个条件评估为“ true”,即使为“ false”也是如此

  10. 10

    如果语句运行,即使不正确

  11. 11

    输入为无效,即使错误为空

  12. 12

    如何对数组进行排序,以便即使输入数组为空,输出也始终是数组?

  13. 13

    解析查询始终为真

  14. 14

    如果返回始终为真

  15. 15

    Java 数组 - 始终为真

  16. 16

    RouterLinkActive "isActive" 始终为真

  17. 17

    即使条件为真,也跳过if {}吗?

  18. 18

    如果条件被跳过,即使条件为真

  19. 19

    尽管输入正确,但输入字段始终告诉我该字段是否为必填项

  20. 20

    空条件运算符在 if 语句中始终为真 when 应该为假

  21. 21

    循环直到语句为真

  22. 22

    即使SavedInstanceState有ID,也始终为null

  23. 23

    即使条件为假,也始终包括孩子

  24. 24

    通过ssh执行的远程命令不会返回正确的返回码。返回错误代码始终为“ 0”,即使条件失败

  25. 25

    Roblox Lua if语句即使值不正确仍在执行

  26. 26

    即使语句已正确关闭,循环也不会执行错误

  27. 27

    即使输入正确答案,程序也不会返回“正确”

  28. 28

    代码没有输入正确的if语句

  29. 29

    代码不断输入 if 语句,即使它不是真的

热门标签

归档