标题:打家来讨论下 希望各位可以提供个正解 谢谢 关于字符串处理的问题
只看楼主
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
结帖率:92.31%
已结贴  问题点数:10 回复次数:3 
打家来讨论下 希望各位可以提供个正解 谢谢 关于字符串处理的问题
请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得
调用C 语言提供的将字符串转换为整数的函数)。例如,若输入字符串"-1234",则
函数把它转换为整数值-1234

#include <stdio.h>
#include <string.h>
long fun ( char *p)
{
int  len, t; /* len 为串长,t 为正负标识*/
long x=0;
len=strlen(p);
if(p[0]=='-')
{ t=-1; len--; p++; }
else t=1;
/* 以下完成数字字符串转换为一个数字*/
while(*p) x = x*10-48+(*p++);//这里想当纠结 就是不知道为什么 希望各位给个正解
return x*t;
}
main() /* 主函数*/
{ char s[6];
long n;
printf("Enter a string:\n") ;
gets(s);
n = fun(s);
printf("%ld\n",n);
}
搜索更多相关主题的帖子: 标识 include return 字符串 while 
2011-09-05 08:56
stophin
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:227
专家分:618
注 册:2010-3-26
得分:5 
楼主你可以举个例子来看啊,不如那个-1234的
while里面就是
0*10+'1'-48=1
1*10+'2'-48=12
12*10+'3'-48=123
123*10+'4'-48=1234
2011-09-05 09:17
lyjak47
Rank: 1
等 级:新手上路
帖 子:9
专家分:8
注 册:2008-1-7
得分:5 
顶楼上
0的ASCII码是48
2011-09-05 09:21
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
得分:0 
哦原来如此 谢谢各位啦
2011-09-06 08:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-349183-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.266956 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved