有函数atoi可以实现10进制表示的字符串转化为10进制的数。
例如字符串str=“123”,那么atoi(str)结果为123。
现在我有这样两个字符串:
str1=“0xFF”(十六进制表示),str2=“0123”(八进制表示)
我想吧这两个字符串转化为10进制的整数,atoi好像不行,有没有其他的函数可以?

解决方案 »

  1.   

    #include <stdio.h>
    #include <stdlib.h>#include <stdio.h>int convert_string(char *str)
    {
           int index = 0;
           int sum = 0;       if(str == NULL)
               return 0;       while(str[index] != '\0')
           {               //if the string has invalid characters like "abc123"
                   if(isalpha(str[index]))
                   {
                           //bringing upper case and lower case to lowercase
                       tolower(str[index]);
                       sum = sum + str[index] - 'a' + 1;
                   }
                   else
                           return 0;               index++;
           }
           return sum;}int main()
    {       printf("%d", convert_string("abc")); // output will be 6
           printf("%d", convert_string("ab34"));//output will be 0}这样的代码修改一下就行了。
      

  2.   

    #include<stdio.h>
    #include<stdlib.h>int convert_string(char str[])
    {
    int sum,i;if (str==NULL)
     return 0;
    else
    {
    for(i=0,sum=0;str[i]!='\0';i++)
     sum+=1+str[i]-'a';
    }
    return sum;
    }
    void main()
    {
    char str[30];
    printf("Enter string of alphabets only\n");
    scanf("%s",&str);
    printf("\nThe sum is %d",convert_string(str));

    这个也行。
      

  3.   

    sscanf(),strtoul好象都不能将 A,B……F 等字符串转换为对应的10进制数,只能自己写了:(