C语言字符转数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言字符转数字相关的知识,希望对你有一定的参考价值。

编写一个函数,将数字字符串转换为十进制整数,用主函数调用这个函数,并输出结果。

功能:数字字符串转整型int,去除高位0。

注意:不要输入超出int范围。

#include <stdio.h>
#include <string.h>
int pw10(int m);//计算10次方
int str2int(char *nums);
int main()

    char nums[]="0103456";
    int num;
    printf("原字符串:%s\\n",nums);
    num=str2int(nums);
    printf("转成整型后的数字为:%d\\n",num);
    return 0;

int pw10(int m)//计算10次方

    int i,mu=1;
    if(m==0)
        return 1;
    for(i=0;i<m;i++)
       mu= mu*10;
    return mu;

int str2int(char *nums)

    char *p=nums;
    int len=strlen(nums),i,m=0,sum=0;
    while(1)//去高位0
    
        if(*p=='0')
            p++;
        else
            break;
    
    for(i=len-1;&nums[i]>=p;i--)
        sum=sum+(nums[i]-'0')*pw10(m++);
    return sum;

参考技术A

代码如下:

#include <stdio.h>
#include <stdlib.h>

int atoi(const char *str)

int val = 0, sign = 1;

const char *p = str;

// 判断正负号
if (*p < '0' || *p > '9') 
if (*p == '+') 
sign = 1;

else if (*p == '-') 
sign = -1;

else 
return val;


p++;



while (*p != '\\0') 

if (*p < '0' || *p > '9') 
break;


val = val * 10 + (*p - '0');

p++;


return val * sign;


int main()

int n;

n = atoi("1234");
printf("%d\\n", n);

n = atoi("-1234");
printf("%d\\n", n);

system("pause");
return 0;

运行结果:

参考技术B #include <stdio.h>
int fun(char s[])
int i=0,n=0;
while(s[i]!='\\0')
n=n*10+s[i]-'0';i++;
return n;

int main()
char s[80]='\\0';
scanf("%s",&s);
printf("%d",fun(s));
return 0;

//运行示例:

本回答被提问者采纳

C语言 字符串转数字 急急急

比如输入 十六进制数的字符串 "3a1" 转换成对应的十进制数929
不用库函数,多谢
1052 进制转换
Description
对输入的两十六进制数(两个字符串),将其转换成十进制后再求和。要求十六进制到十进制的转换功能由函数完成。例如:输入3a1、80,由于3a1转换为十进制后为929,80转换为十进制后为128,所以和为1057。
Input
输入包括两行,每行为一个十六进制数。
Output
输出包括一行为两数之和的十进制表示。
Sample Input
3a1
80
Sample Output
1057

这是原题,数值转换部分应该在main函数之外,新定义一个函数,怎么弄请问

#include<stdio.h>
#include<string.h>
#include<math.h>
int tran16to10(char *s)

int i,z=0,j;
j=strlen(s);
for(i=0;i<j;i++)

if(s[i]>='A'&&s[i]<='F')
z=z+(s[i]-'A'+10)*(pow(16,j-1-i));
if(s[i]>='a'&&s[i]<='f')
z=z+(s[i]-'a'+10)*(pow(16,j-1-i));
if(s[i]>='0'&&s[i]<='9')
z=z+(s[i]-'0')*(pow(16,j-1-i));


return z;


void main()

char s1[10],s2[10];
printf("请输入两个十六进制数\n");
gets(s1);
gets(s2);
printf("%d\n",tran16to10(s1)+tran16to10(s2));
参考技术A #include <stdio.h>

unsigned long htoi(const char* szHex)

unsigned long temp;
sscanf(szHex, "%x", &temp);

return temp;


int main()

char szHex[16];
printf("Enter a hexadecimal string: \n");

scanf("%s", szHex);
printf("Convert this hex string to decimal number:\n%u\n", htoi(szHex));
追问

sscanf还没有学,没有别的办法吗

追答

那就用个笨方法吧:

#include

unsigned long htoi(const char* szHex)

int i;
unsigned long n=0;
for(i=0;szHex[i];i++)

if (szHex[i]== ' ') break;
if( szHex[i]>= '0'&&szHex[i]= 'a' &&szHex[i]= 'A'&&szHex[i]<= 'F') n=n*16+szHex[i]-'A'+10;

return n;


int main()

char szHex[16];
printf("Enter a hexadecimal string: \n");

scanf("%s", szHex);
printf("Convert this hex string to decimal number:\n%u\n", htoi(szHex));

参考技术B 直接用他们的acsii码呀!
再加上用指针就可以了!你试试
参考技术C scanf和printf算库函数么

以上是关于C语言字符转数字的主要内容,如果未能解决你的问题,请参考以下文章

C语言 字符串转数字 急急急

C 数字转 字符串

C语言中如何把一个字符串转成数字

C语言中怎么将字符123转化成数字123

C里面怎么把字符串转成数字

C语言编程 计算一串字符中的数字个数