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;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-05-29

代码如下:

#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;
}

运行结果:

本回答被网友采纳
第2个回答  2018-05-29
#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;
}

//运行示例:

本回答被提问者采纳
相似回答