2

我有两个问题:

第一个问题是我不能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;
        }
4

2 回答 2

5

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

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

PS 我必须告诉你,这是我多年来见过的最奇怪的 C 代码。goto您应该将代码块移动到函数中,然后在循环中调用它们,而不是到处乱跳;IE,

while (aprno < 1)
    aprno = readaprno();
于 2013-06-07T14:10:25.803 回答
1

问题1:嗯?

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

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

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

当我看到你的问题和这个:

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

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

if (pismapr == 'A')

至:

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

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

问题 3:转到

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

问题 4:调用system()

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

于 2013-06-07T14:12:40.357 回答