好的,所以基本上我试图得到一个程序,将我输入的十六进制转换为它的等效基数10值,我很确定算法是正确的,我只是不能让它正确读取我输入的内容,非常感谢任何帮助:)我很抱歉任何认为这是一个非常愚蠢的问题的人。
int main()
{
char hexalpha[] = "aAbBcCdDeEfF";
int i, c;
int answer = 0;
c = getchar();
for (i= 0; answer == 0 && hexalpha[i] != "\0"; ++i)
{
if(hexalpha[i]== c)
answer = (10 + (i/2));
}
return answer;
}
答案 0 :(得分:2)
您无法将字符串与!=
进行比较,hexalpha[i]
是char
。因此,您需要hexalpha[i] != '\0'
而不是hexalpha[i] != "\0"
从main()返回答案有点笨拙,打印答案会更容易,所以
printf("Answer: %d\n", answer);
return 0;
答案 1 :(得分:0)
您正在返回answer
,而不是打印它。你的问题不是输入,而是输出。返回将值传递给任何称为它的函数(或者在main
的情况下给出退出状态)
在代码的开头添加以下内容:
#include <stdio.h>
在main
结束时,将return answer;
替换为:
printf("%i\n", answer);
return 0;
此外,我建议在for循环中将"0"
替换为'0'
。您的编译器会向您发出警告,因为它应该是char
,而不是*char
。
答案 2 :(得分:0)
使用getchar
似乎没有任何问题。但是,循环条件的后半部分存在问题:您将int
(c
)与字符串("\0"
)进行比较。您可能意味着使用hexalpha[i] != '\0'
(请注意单引号)。
除此之外,你没有看到答案,因为它从未打印过。在大多数shell中,您可以使用$?
(在Windows上%errorlevel%
)打印上一个程序的返回值,如下所示:
echo $?
例如,如果我运行这样的程序:
> a.out
b
> echo $?
11
您看到getchar
正常工作,但您没有看到输出,因为shell通常不会打印程序的返回值。或者,您可以在程序结束时添加printf
- 语句。无论如何都建议这样做,因为main的返回值更常用于确定程序是否成功完成。
printf("%i\n", answer);
return 0;
}