编写一个函数func,通过略去非数字字符将字符串 s转换为一个整数(不得调用C语言提供的将字符串转整函数)

longfunc(char*s)/*s是一个数字字符串的地址,函数返回值为由s含有的数字字符转换得到的数(包含正负数情况)*/{char*a;inti,k;for(i=0... long func(char *s)
/* s是一个数字字符串的地址,
函数返回值为由s含有的数字字符转换得到的数(包含正负数情况)
*/
{ char *a;
int i,k;

for(i=0,k=0;s[i]!='\0';i++)
{if(s[i]>='0'&&s[i]<='9')
{a[k]=s[i];
k=k++; }
else
a[k]=s[i+1];
}
*s=*a; }
帮忙看下哪里错了
展开
 我来答
常乐常知足
2012-03-31 · TA获得超过1152个赞
知道小有建树答主
回答量:702
采纳率:66%
帮助的人:190万
展开全部
第一,循环语句中的逗号要改成分号,第二,功能也不对,题目要求返回字符串转换的数。
按题意,实现如下:
func(char *s)
{
int i,k;
long num;

num=0;
k=1;
for(i=0;s[i]!='\0';i++)
{
if(num==0 && s[i]=='-') k=-1;
if(s[i]>='0'&&s[i]<='9') num=num*10+s[i]-'0' ;
}
return num*k;
}
百度网友3076ef7
2012-03-23 · TA获得超过377个赞
知道小有建树答主
回答量:191
采纳率:0%
帮助的人:159万
展开全部
函数的 功能应该是 字符串转换为数字 你是字符串提取数字字符串 而且你的return也没写
#include<stdio.h>
long func(char *s) {
int flag=1,num=0;
if('-'==s[0])
flag=-1;
if('-'==s[0] || '+'==s[0])
++s;
while(*s)
num=num*10+*s++-'0';
return flag*num;
}
int main(){
printf("%d",func("-12345"));
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tqw23468
2012-03-26
知道答主
回答量:11
采纳率:0%
帮助的人:9.6万
展开全部
else a[k]=s[i+1]; 删去即可。
不太懂这句什么意思。
追问
还是不行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式