无法比较字符

use*_*808 2 c

我有两个问题:

第一个问题是我不能for (apr = 0; apr < aprno; apr++)逐个添加字符.例如,如果我有aprno = 4,则在输入A之后它会要求第4个apr.但是当我输入AAAA时它会起作用...,它也仅适用于整数

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

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;
        }
Run Code Online (Sandbox Code Playgroud)

Ern*_*ill 5

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

if (pismapr[apr] == 'A') poleapr[apr] = 1;
Run Code Online (Sandbox Code Playgroud)

PS我必须告诉你,这是我见过的最奇怪的C代码.goto你应该将代码块移动到函数中,然后在循环中调用它们,而不是随意跳转; 即

while (aprno < 1)
    aprno = readaprno();
Run Code Online (Sandbox Code Playgroud)