| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 826 人关注过本帖
标题:在字符串中取连续整数存储到另一数组中并输出。
只看楼主 加入收藏
doing8
Rank: 1
等 级:新手上路
帖 子:20
专家分:3
注 册:2012-6-15
结帖率:50%
收藏
 问题点数:0 回复次数:2 
在字符串中取连续整数存储到另一数组中并输出。
题目要求是在一个字符串中,将连续的数字作为一个整数,存放到一个数组中 然后输出,并且统计个数。
以下程序问题在第3个数字的时候出错  了 求大牛 指点。。。
#include<stdio.h>
void main()
{
    char str[]="234a231b2ac234";
    char *pstr;
    int a[10],i,j,k,ndigit,digit,e10;
    int *pa;
    pstr=str;
    pa=a;
    i=j=0;
    ndigit=0;
    while(*(pstr+i)!='\0')
    {
        if(*(pstr+i)>'0'&&*(pstr+i)<'9')
            j++;
        else
              {
            if(j>1)         
            {
                digit=*(pstr+i-1)-48;   
                e10=1;
                for(k=1;k<j;k++)
                {
                    e10*=10;
                    digit+=(*(pstr+i-1-k)-48)*e10;
                }
                *pa=digit;           
                ndigit++;           
                pa++;           
                j=0;         
            }         
        }      
        i++;     
    }
    if(j>1)         
    {
        digit=*(pstr+i-1)-48;         
        k=1;           
        while(k<j)            
        {
            e10=1;              
            for(k=1;k<j;k++)
            {
                e10*=10;
                digit+=(*(pstr+i-1-k)-48)*e10;
            }
        }            
        *pa=digit;           
        ndigit++;           
        pa++;           
            
    }  
    printf("ndigit=%d\n",ndigit);
    pa=a;
    for(j=0;j<ndigit;j++)   
        printf("%-5d",*(pa+j));
}
求高手指点错误在哪里......
搜索更多相关主题的帖子: 字符串 include 数字 
2012-06-16 22:27
doing8
Rank: 1
等 级:新手上路
帖 子:20
专家分:3
注 册:2012-6-15
收藏
得分:0 
发现问题了,少了个判断条件, 自问自答了 。。。
           if(j==1) // 少了此条判断
            {
               j=0;
            }
            if(j>1)         
            {
                digit=*(pstr+i-1)-48;   
                e10=1;
                for(k=1;k<j;k++)
                {
                    e10*=10;
                    digit+=(*(pstr+i-1-k)-48)*e10;
                }
                *pa=digit;           
                ndigit++;           
                pa++;           
                j=0;         
            }         
2012-06-16 22:54
张朝成
Rank: 4
等 级:业余侠客
帖 子:149
专家分:265
注 册:2012-3-22
收藏
得分:0 
嗯,就是嘛。
   if(j==1)
      j=0;
      if(j>1)         
     {
       digit=*(pstr+i-1)-48;  
          e10=1;
            for(k=1;k<j;k++)
            {
                e10*=10;
               digit+=(*(pstr+i-1-k)-48)*e10;
                 }
                 *pa=digit;           
                 ndigit++;           
                 pa++;           
                 j=0;         
            }         
2012-07-04 13:48
快速回复:在字符串中取连续整数存储到另一数组中并输出。
数据加载中...
 
   



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

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