从123中的char.Eg 1中提取char

时间:2015-02-15 20:27:00

标签: c

在这个程序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;
        }
                }

1 个答案:

答案 0 :(得分:0)

charchar*之间存在差异。后者是一个指向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]。但你必须修复你的其他错误(有很多,正如其他人所指出的那样)。