在这个程序convert.c中,我试图将给定数量的任何基数转换为基数10.该命令以转换为基础.todecimal应该这样做。下面的代码当然有错误,但我不知道如何使其工作。例如,argv [3]中的数字在基数9中为123.该等式应该如下工作:(1 x 9 ^ 2)+(2 x 9 ^ 1)+(3 x 9 ^ 0)=( 102)10.其中变量是(nx argv [3] ^ i)+(n + 1 * argv [3] ^ i-1)....当123本身成为char时,我如何获得123的char?任何帮助表示赞赏。
#include<stdio.h>
#include<math.h>
int todecimal();
main(int argc, char *argv[])
{
int s = 0;
int i = 0;
int n = 1;
if (argc < 4) {
printf("Usage: convert <basefrom> <baseto> <number>\n");
}
printf("to decimal prints %d" todecimal());
}
int todecimal() {
if (argv[3] > 0) {
if ((getchar(argv[3]) != NULL)) {
i = i + 1;
}
while (i >= 0) {
s = s + (n * (pow(argv[3],i)));
n = n + 1;
i = i - 1;
}
return s;
}
}
答案 0 :(得分:0)
char
和char*
之间存在差异。后者是一个指向char的指针,也用作字符串(一系列字符)。因此,只要您拥有多个char
,就可以使用指针(指向第一个) - 这是您的argv[3]
。
因此,要从char
s序列中获取一个char
,请应用方括号:
argv[3] - is the whole string, let's pretend it's "192" to reduce confusion
argv[3][0] - is the first char, '1'
argv[3][1] - is the second char, '9'
argv[3][2] - is the third char, '2'
在您的情况下,您需要argv[3][i]
。但你必须修复你的其他错误(有很多,正如其他人所指出的那样)。