| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 42415 人关注过本帖
标题:如何用c语言输入一个字符串,把里面连续的数字依次存放到一个数组中
只看楼主 加入收藏
墨落成白
Rank: 1
等 级:新手上路
帖 子:46
专家分:4
注 册:2014-3-16
结帖率:70%
收藏
已结贴  问题点数:7 回复次数:19 
如何用c语言输入一个字符串,把里面连续的数字依次存放到一个数组中
如何用c语言输入一个字符串,把里面连续的数字依次存放到一个数组中
如输入一个字符串:sd348ghi 35qeaio843ud843
则将348放在a[0],35放在a[1],843放在a[2],843放在a[3],统计有多少个整数,并输出这些整数。

void main()
{
char a[80],*p=a;
int b[80]={0},i=0,j=0,x=0; //!!!!
printf("请输入一串字符\n");
gets(a);
for(p=a;(*p)!='\0';p++)
{
if(((*p)>='0')&&((*p)<='9')) //!!!!
{
if(x==0) //这是什么意思,看不懂,求帮解答
{
b[i]=(*p)-48;
i++;
}
else
b[i-1]=b[i-1]*10+(*p)-48; //这个也看不懂
x=1;
}
else
x=0;
}
for(j=0;b[j]!=0;j++) //!!!!
printf("%d ",b[j]);
printf("共有%d个",j);
printf("\n");

}
搜索更多相关主题的帖子: 字符串 c语言 如何 统计 
2014-09-17 08:45
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
如果源代码能够正确运行并得到预期的结果  可以研究每一句的代码含义  否则没有研究价值

DO IT YOURSELF !
2014-09-17 08:48
墨落成白
Rank: 1
等 级:新手上路
帖 子:46
专家分:4
注 册:2014-3-16
收藏
得分:0 
回复 2 楼 wp231957
其实我想做的是,输入一串字符串,如AB123C4D748,求输出123+4+748,并求出和,就是总做不出来,希望你能帮我一下,谢谢
2014-09-17 08:55
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
自己一点思路也没有嘛   这个问题不是很难 也不麻烦

DO IT YOURSELF !
2014-09-17 09:08
墨落成白
Rank: 1
等 级:新手上路
帖 子:46
专家分:4
注 册:2014-3-16
收藏
得分:0 
回复 4 楼 wp231957
就是在把字符型‘123’转换成整型123后就不知道怎么办了,还有怎样分开123,4,748,这个没想到算法
2014-09-17 09:13
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
给你一段伪代码  (这是最大限度了 否则大牛们又该批评我了 嘿嘿)

        while(字符串指针非结束)
    {
        if(字符位于0和9之外) 指针下移
        else
        {
            while(字符位于0和9之间含0和9)
            {
                整型数组元素=整型数组元素*10+(字符-'0');
                指针下移
            }
            预存整型数组指针下移
        }
    }

DO IT YOURSELF !
2014-09-17 09:15
墨落成白
Rank: 1
等 级:新手上路
帖 子:46
专家分:4
注 册:2014-3-16
收藏
得分:0 
回复 6 楼 wp231957
那好吧,我再想想,谢谢了
2014-09-17 09:22
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:1 
例如:12345=((((0*10+1)*10+2)*10+3)*10+4)*10+5

DO IT YOURSELF !
2014-09-17 09:23
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:2 
以下是引用墨落成白在2014-9-17 08:55:50的发言:

其实我想做的是,输入一串字符串,如AB123C4D748,求输出123+4+748,并求出和,就是总做不出来,希望你能帮我一下,谢谢

只用 sscanf 也可以搞定,以下是演示代码,在gcc4.8.1(-std=c11)中编译测试通过。如果你用不支持当今C标准的编译器(例如VC)的话,自己简单修改一下代码就行。

程序代码:
#include <stdio.h>

void foo( const char* str )
{
    int pos = 0;
    sscanf( str, "%*[^0-9]%n", &pos );
    const char* p = str+pos;

    for( ; ; )
    {
        unsigned val;
        pos = 0;
        int n = sscanf( p, "%u%*[^0-9]%n", &val, &pos );
        if( n != 1 )
            break;

        printf( "%u\n", val );

        if( pos == 0 )
            break;
        p += pos;
    }
}

int main()
{
    foo( "AB123C4D748" );
    //foo( "123ABC456DEF789" );
    //foo( "ABC123DEF456GHI" );

    return 0;
}

2014-09-17 09:34
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
这个题目没有思路,表明不会把以前做过的简单题目综合起来运用解决相对复杂问题。

如下子问题你一定做过的:
1.循环扫描字符串
2.判断字符的类型(是否数字或字母等)
3.把一串"123"字符转换为数值
4.累加

把上面那些综合起来,就能解决你的问题。这用不着什么最新语法,是非常非常非常原始的基础训练。

授人以渔,不授人以鱼。
2014-09-17 12:53
快速回复:如何用c语言输入一个字符串,把里面连续的数字依次存放到一个数组中
数据加载中...
 
   



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

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