请编写一个 C 函数,该函数将给定的一个字符串转换成整数。求指导

zhadhzi 2012-03-22 05:44:25
intInvert(char* str)
{
intnum=0;
while(* str!='\0')
{
intdigital=* str-48; //为什么-48
num=num* 10+digital;
str=str+1;
}
return num;
}
...全文
2046 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2013-04-17
  • 打赏
  • 举报
回复
'0' 48 '1' 49 '2' 50
常如意 2013-04-17
  • 打赏
  • 举报
回复
intdigital=* str-48; //为什么-48 字符和其对应的ASCII码相差48 比如说数字0和字符'0'相差48 查看下谭浩强ASCII码对照表就知道了
xiayiguo 2013-04-17
  • 打赏
  • 举报
回复
直接-‘0’不就行了
jdwq33 2013-04-17
  • 打赏
  • 举报
回复
那如果是字符'z'怎么办呢?(122 - 48) = 'L';这个函数好像有问题,但是我也不知道怎么改????????
int_i_j_k 2012-03-23
  • 打赏
  • 举报
回复
其实最简单的做法是stringstream提供的转换和格式化

#include <iostream>
#include <sstream>
using namespace std;

int main()
{
char * str = "1234";
istringstream input_istring(str);
int num;
input_istring >> num;
cout << num<< endl;
return 0;
}
qixing1115 2012-03-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhadhzi 的回复:]
intInvert(char* str)
{
intnum=0;
while(* str!='\0')
{
intdigital=* str-48; //为什么-48
num=num* 10+digital;
str=str+1;
}
return num;
}
[/Quote]
0的ACSII码是48,‘0’-48=0;‘1’-48=1;就是这样
用atoi其实就可以了吧
赵4老师 2012-03-23
  • 打赏
  • 举报
回复
因为'0'是48
shyb01 2012-03-22
  • 打赏
  • 举报
回复
atoi也行吧?
猪头小哥 2012-03-22
  • 打赏
  • 举报
回复
有现成的为何不用?必须自己写么?
wangchuan3533 2012-03-22
  • 打赏
  • 举报
回复
atoi
lisial 2012-03-22
  • 打赏
  • 举报
回复
atoi即可
字符‘0’的ASCII码是48,字符与其对应ascii码相差48
老鼠期待爱 2012-03-22
  • 打赏
  • 举报
回复
字符和对应的数字之间相差48,你懂的
flowingfirefly 2012-03-22
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <math.h>

int
c2n(char c)
{
assert(c >= '0' & c <= '9');
return c - '0';
}

int
s2n(char *s)
{
int r = 0;
int i = strlen(s) - 1;

while (*s) {
r += c2n(*s) * pow(10, i);
i--;
s++;
}
return r;
}

int
main(int argc, char *argv[])
{
printf("%d\n", s2n("1"));
return 0;
}

shyrgst 2012-03-22
  • 打赏
  • 举报
回复
最后一行改一下:
所以所有的数字字符-48的ASCII等于它对应的数字
shyrgst 2012-03-22
  • 打赏
  • 举报
回复
因为如果直接赋值的话
传递过去的是字符的ASCII码
如果对应的字符数值要转化成相应的ASCII
而‘0’的ASCII码=48;
所以所有的数字-48的ASCII等于它对应的数字
flowingfirefly 2012-03-22
  • 打赏
  • 举报
回复
转换规则?

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧