求解(指针与字符串的一道题)!!!!!!!!!!

chlaws 2007-11-04 09:42:09
//输入sjd48fioa4525sdf333w 输出48,4525,333
//做不下去了.... 大牛指导下..............
#include"stdio.h"
#include"stdlib.h"
#define LEN 256
void main()
{
char line[LEN],b[50],*prta,*prtb;
int i,j,a[50];
printf("input line:\n");
gets(line);
printf("line:%s\n",line);
ptra=line;
while(*ptra!='\0')
{
ptrb=b;
for(i=0; *ptra>=0 && *ptra<=9; i+=1,ptra+=1,ptrb+=1)
{
*ptrb=*ptra;
}
if(i>0)
{
*ptrb='\0'
*(a+j)=atoi(b);
j+=1;
}
if(*ptra!='\0')
ptra+=1;

}
printf("putout number:\n");
for(i=0; i<j; i+=1)
printf("%d\n",a[i]);


}
...全文
81 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mShopping 2007-11-05
  • 打赏
  • 举报
回复
re: printf( "%d ",(*ptra - 48));//%d的制式输出方式。*ptra得到ptra所指的字符的ASCII编码,0-9的ASCII是48-57

头文件是代码必须的,这个居然会没有注意到?倒汗楼主一下哈^_^,给分。
chlaws 2007-11-05
  • 打赏
  • 举报
回复

//根据1楼的.我改了下.最终的代码如下.
#include"stdio.h"
#define LEN 256
void main()
{
char line[LEN];
printf("input line:\n");
gets(line);
bool isInt = false;
char *ptra = line;
printf( "putout number:\n ");
while(*ptra != '\0')
{
if (*ptra >= 48 && *ptra <= 57)
{
printf("%d",(*ptra - 48));//问下.*ptra不是指向字符型的么.怎么不用类型转化就可以用%d...
isInt = true;
}
else
{
if (isInt)
{
printf(",");
}
isInt = false;
}
ptra++;
}
printf("\n");
}
chlaws 2007-11-05
  • 打赏
  • 举报
回复
谢1楼的。。
主要我刚开始没仔细看......
代码少了下面两行 我加上了,ok了.

#include"stdio.h"
#define LEN 256
mShopping 2007-11-05
  • 打赏
  • 举报
回复
Lz,难道我上面的代码没有实现你所要的在字符串中提取数字么?
chlaws 2007-11-05
  • 打赏
  • 举报
回复
狂汗下.没设分.....下次吧 嘎嘎 ,3KS mshopping
结贴了.
huhaihong 2007-11-04
  • 打赏
  • 举报
回复
for(i=0; *ptra> =0 && *ptra <=9; i+=1,ptra+=1,ptrb+=1)
应改为:for(i=0;*ptra>='0' && *ptra<='9';ptra++,ptrb++)
而且j好像没有赋初值吧
chlaws 2007-11-04
  • 打赏
  • 举报
回复
汗一个先.我原先话没说清楚.
是输入由数字和字符组成的字符串,
这里 //输入sjd48fioa4525sdf333w 输出48,4525,333
我只是举了个例子........
mShopping 2007-11-04
  • 打赏
  • 举报
回复
楼主来一个,你还是给点分噻...

void main()
{
char line[LEN];
for (int i = 0; i < LEN; i++)
{
line[i] = '\0';
}
printf("input line:\n");
gets(line);
bool isInt = false;
char *ptra = line;
printf( "putout number:\n ");
while(*ptra != '\0')
{
if (*ptra >= 48 && *ptra <= 57)
{
printf("%d",(*ptra - 48));
isInt = true;
}
else
{
if (isInt)
{
printf(",");
}
isInt = false;
}
ptra++;
}
printf("\n");
}

69,368

社区成员

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

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