无法比较字符

时间:2013-06-07 14:03:30

标签: 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;
        }

2 个答案:

答案 0 :(得分:5)

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

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

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

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

答案 1 :(得分:1)

问题1:嗯?

我不知道你的第一个问题是什么,并且无法真正理解你所要求的那个问题。遗憾。

问题2:将字符与字符进行比较

是的,您可以在合理范围内比较intchar。您可能不希望这样做来比较指向char的指针的地址。

当我看到你的问题时:

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

我只能假设你的意思是pismapr是一个charint的数组,因为我没有看到声明。所以你可能想要切换这些:

if (pismapr == 'A')

为:

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

但这是假设pismapr的类型,我们不知道你的代码片段。

问题3:Gotos

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

问题4:调用system()

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