| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 758 人关注过本帖
标题:[求助]字符串操作
取消只看楼主 加入收藏
meteor57
Rank: 1
来 自:银河系
等 级:新手上路
帖 子:267
专家分:0
注 册:2007-9-29
结帖率:100%
收藏
 问题点数:0 回复次数:3 
[求助]字符串操作
/*
题目是这样的:
输入一串字符,如
dgt125 ?458 .20
要把连续的字符组成一个整数,依次放到数组a中,如把125放到a[0],458放到a[1],20放到a[2]
输出数组元素:125 458 20
整数的个数:3
*/

#include"stdio.h"
#define N 64
int main(void)
{
    int i,j,k,flag=0,m=0,count=0;
    int a[N];
    char str[N],temp[N];
    printf("请输入一个字符串:");
    gets(str);
   
    for(i=0,j=0;str[i]!='\0';i++)
    {
       temp[0]='\0';                   //把temp置为空串
       while(str[i]<='9'&&str[i]>='0') //如果是数字字符进入
       {                                                            
            temp[j]=str[i];
            flag=1;                  
            if(str[i+1]>'9'||str[i+1]<'0')
            {
               temp[j+1]='\0';
               break;
            }
            i++;
            j++;
       }
       if(flag==1)//如果 flag==1表示已经temp[]中有整数,开始转换
       {  a[m]=0;
          for(k=0;j>=0;j--,k++)
          a[m]+=(temp[j]-48)*pow(10,k);
          m++;
          count++;   
          flag=0;
       }
    }                 
    printf("连续的整数为:");        
    for(i=0;i<=count-1;i++)
    printf("%d ",a[i]);
    printf("\n其中连续整数的个数是:%d\n",count);
    system("pause");
    return 0;
}

/*1.a[0]有时可以正确显示,有时会比输入少1(如123),以后的就不行了,都是只有后两位,如果是一位的,就是0
怎么回事啊,啊里出了问题?觉得应该是
for(k=0;j>=0;j--,k++)
a[m]+=(temp[j]-48)*pow(10,k);
中没有加最后一位.
但是第一个又是对了,真是郁闷......
谢谢了. */
搜索更多相关主题的帖子: 字符 
2008-03-05 22:27
meteor57
Rank: 1
来 自:银河系
等 级:新手上路
帖 子:267
专家分:0
注 册:2007-9-29
收藏
得分:0 
谢谢两位.真是
for(k=0;j>=0;j--,k++)
a[m]+=(temp[j]-48)*pow(10,k);
出了问题,当完成循环的时候,j==-1了.所以.后面的数会少一位.
在第一次循环下再把j=0;
还有点奇怪的时,怎么有的数会少1呢.是有的.并不是全部.
下面是测试数据:

新建 bmp 图像.jpg (28.61 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2008-03-06 14:59
meteor57
Rank: 1
来 自:银河系
等 级:新手上路
帖 子:267
专家分:0
注 册:2007-9-29
收藏
得分:0 
顺着3#的思路.好像也不行哦.
主要是停不下来.就是a中要有MAX个元素才会停会有结果.
不知道该怎么控制.
while (i<MAX)
    {
        if (scanf("%d",&a[i])==1)i++;
        else if (getchar()=='\n')break;
    }
这样也不行.运行后,输入一串字符.比如123asd加回车
123可以到a[0];asd也可到三个getchar();但回车却到了scanf();了.这当然无法结束.
如果是数字结尾的,比如asd123加回车.asd可以到三个getchar();123可以到a[0];回车还是在scanf();......
还有,自己的那段也不行.就像楼上说的那样.
想了几天也不明白.真笨...
请求高人指点.谢谢了!

[[it] 本帖最后由 meteor57 于 2008-3-16 17:14 编辑 [/it]]
2008-03-16 17:11
meteor57
Rank: 1
来 自:银河系
等 级:新手上路
帖 子:267
专家分:0
注 册:2007-9-29
收藏
得分:0 
想抓狂......
原来是编译器搞的.
DEV C++4.9.9.2就会出上面的问题(有些数少1)
WIN TC1.9.1和VC++ 6.0就不会.
谁可以帮解释一下这种现象...
谢谢~~~
2008-03-16 21:19
快速回复:[求助]字符串操作
数据加载中...
 
   



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

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