请使用指针编程实现:编写函数int fun(char *str),其功能是将一个含有数字符串str转换成一个整数返回。

/*请使用指针编程实现:编写函数intfun(char*str),其功能是将一个含有数字符串str转换成一个整数返回。比如字符串"a1b2C3d4"变成一个整数1234。... /*请使用指针编程实现:编写函数int fun(char *str),其功能是将一个含有数字符串str转换成一个整数返回。
比如字符串"a1b2C3d4"变成一个整数1234。(注:被处理的字符串在主调函数输入。)*/
#include<stdio.h>
#include<conio.h>
void input(char ch[]);
void fun(char *p,char ch[]);
main()
{
char ch[100],*p=NULL;
input(ch);
puts(ch);
fun(p,ch);
}
void input(char ch[])
{
gets(ch);
}
void fun(char *p,char ch[])
{
int result=0;
for(p=ch;*p!='\0';p++)
{
if(*p>='0'&&*p<='9')
result=result*10+(*p-48);
}
printf("result=%d\n",result);
}
虽然运行没问题,但是写得很不爽啊!感觉指针没用多少不符合题意啊!请问怎么修改较好?
顺便问一下malloc-free这个怎么用?可以加到上面那个程序里吗?
str暂时打成p
展开
 我来答
White_MouseYBZ
推荐于2018-03-14 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:7070万
展开全部
如下就行了……
#include <stdio.h>
#include <stdlib.h>
int main(){
char *p=NULL;
if((p=(char *)malloc(sizeof(char)*100))==NULL){
printf("Application memory failure...\n");
exit(0);
}
gets(p);
printf("result=%d\n",fun(p));
free(p);
return 0;
}
int fun(char *p){
int result=0;
for(;*p!='\0';p++){
if(*p>='0'&&*p<='9')
result=result*10+(*p-48);
}
return result;
}
百度网友b4b520e
2014-06-05
知道答主
回答量:37
采纳率:0%
帮助的人:25.7万
展开全部
int fun(char *str){
//可以自己申明个数组把取到的值存起来,最后出去转为int 输出,这里只写思路
while(*str != "\0")
( *str > '0' && *str<'9') ? printf("%c",*str) : null;
str++;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式