我有两个问题:
第一个问题是我无法在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;
}
答案 0 :(得分:5)
pismapr
看起来是char
的数组;您无法将其直接与单个char
进行比较。您只需要比较感兴趣的数组元素:
if (pismapr[apr] == 'A') poleapr[apr] = 1;
P.S。我必须告诉你,这是我见过的最奇怪的C代码。您应该将代码块移动到函数中,然后在循环中调用它们,而不是使用goto
跳转;即,
while (aprno < 1)
aprno = readaprno();
答案 1 :(得分:1)
我不知道你的第一个问题是什么,并且无法真正理解你所要求的那个问题。遗憾。
是的,您可以在合理范围内比较int
和char
。您可能不希望这样做来比较指向char
的指针的地址。
当我看到你的问题时:
scanf("%c", &pismapr[apr]);
我只能假设你的意思是pismapr
是一个char
或int
的数组,因为我没有看到声明。所以你可能想要切换这些:
if (pismapr == 'A')
为:
if (pismapr[apr] == 'A')
但这是假设pismapr的类型,我们不知道你的代码片段。
失去他们。真。或者告诉我你为什么需要它们。
system()
请不要。这是一个坏主意,你可能会以其他方式做到这一点。如果你真的想这样做,你确定你需要用C程序完成所有这些,而不是shell脚本吗?