【问题标题】:Can't compare characters无法比较字符
【发布时间】:2013-06-07 14:03:29
【问题描述】:

我有两个问题:

第一个问题是我不能在for (apr = 0; apr < aprno; apr++) 中逐个添加字符。例如,如果我有 aprno = 4,在输入 A 后它会要求 4 日

第二个问题是 char 和 int 的比较。我知道我无法比较它们,但我没有找到解决方案如何在任何地方进行。

addnoaprons:
    system("cls");
    printf("Add number of available aprons: ");
    scanf("%d", &aprno);
    goto addtypeaprons;

addtypeaprons:
    if (aprno < 1) goto addnoaprons;
    else {
        system("cls");  
        printf("Add types for %d aprons total:", aprno);
        for (apr = 0; apr < aprno; apr++)
            {   
                system ("cls");
                printf("Aprons total: %d", aprno);
                printf("\n\nNo. %d apron type: ", apr + 1);
                scanf("%c", &pismapr[apr]);
                if (pismapr == 'A') poleapr[apr] = 1;
                if (pismapr == 'B') poleapr[apr] = 2;
                if (pismapr == 'C') poleapr[apr] = 3;
                if (pismapr == 'D') poleapr[apr] = 4;
                else goto addtypeaprons;
            }
            goto showaprons;
        }

【问题讨论】:

  • 我很好奇为什么gotos?
  • 哦,有趣...有人试图用 C 编写汇编代码...以实现可以使用 shell 脚本完成的功能。主啊,为什么?
  • 你的问题一点都不清楚。你能否提供一个完整的、可编译的示例并解释你给它的输入、你期望的输出以及你得到的输出?
  • 哦,gotos 颤抖system("cls") 在非 Windows shell 中也会很有趣。
  • 这里有什么问题?在 C 中,您可以比较 char 和 int(将 char 转换为 int 并使用 ==),但不知何故,我认为这不是您想要做的。我对您停止使用 goto 的第一个建议是您的代码就像意大利面条一样,当您获得太多 1000 行代码时,我不想看到这一点。想想那些不得不在你之后接手的可怜的开发人员。

标签: c


【解决方案1】:

pismapr 看起来是char 的数组;您无法将其直接与单个 char 进行比较。您只需要比较感兴趣的数组元素:

if (pismapr[apr] == 'A') poleapr[apr] = 1;

附:我必须告诉你,这是我多年来见过的最奇怪的 C 代码。与其在goto 之间跳来跳去,不如将代码块移动到函数中,然后循环调用它们;即,

while (aprno < 1)
    aprno = readaprno();

【讨论】:

    【解决方案2】:

    问题 1:嗯?

    我不知道您的第一个问题是什么,也无法真正理解您的要求。对不起。

    问题 2:比较整数和字符

    是的,您可以在合理范围内比较ints 和chars。不过,您可能不想将指针的地址与char 进行比较。

    当我看到你的问题时:

    scanf("%c", &pismapr[apr]);
    

    我只能假设您的意思是pismaprchars 或ints 的数组,因为我没有看到声明。所以你可能想切换这些:

    if (pismapr == 'A')
    

    到:

    if (pismapr[apr] == 'A')
    

    但这是假设 pismapr 的类型,我们不知道你的 sn-p。

    问题 3:Gotos

    失去他们。真的。或者告诉我你为什么需要它们。

    问题4:调用system()

    别这样。这是一个坏主意,您可能可以通过其他方式做到这一点。如果您真的想这样做,您确定需要使用 C 程序而不是 shell 脚本来完成所有这些操作吗?

    【讨论】:

    • 哎呀,我弄错了一些人。对不起,如果我冒犯了你:)
    猜你喜欢
    • 1970-01-01
    • 2022-01-16
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 2021-01-08
    • 2013-07-28
    • 2019-05-04
    相关资源
    最近更新 更多