无法比较字符

标签 c

我有两个问题:

第一个问题是我无法输入 for (apr = 0; apr < aprno; apr++)一个一个地添加字符。例如,如果我有 aprno = 4,在输入 A 后它会询问 4th apr.,但是当我输入 AAAA 时它会工作......,它也只适用于整数

第二个问题是 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;
        }

最佳答案

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

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

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

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

关于无法比较字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16986042/

相关文章:

我可以在 C 结构中声明结构引用的动态数组吗?

c++ - 二维数组中的按行和按列总计

c - 设计shell时如何处理Control-C信号?

当数据复制/扫描/读取到未初始化的指针时崩溃或 "segmentation fault"

c++ - NMEA 库 - nmeaINFO 为空

c - 骰子实验,增加最大 throw 次数

c++ - 为什么切换/Case 而不是 If/Else If?

c - 信号终止处理程序和清理操作

c - 如何修复C中的'从0x4000000000000000读取内存失败(读取4个字节中的0个)'错误

c - 指针更改值而不作为参数传递