/*
*从字符串中提取连续的字符数字转换为整数
*/
#include<stdio.h>
#include"string.h"
void main()
{
    char c[100];
    bool find=false;
    int sum[30],num[50],i=0,l,s=0,N=1,g=0;
    printf("请输入一含有数字的字符串:\n");
    gets(c);
    l=strlen(c);
    while(true)//判断字符串中是否有字符数字,有则执行下一步,没有则重新输入
    {
        while(l)
        {
            if(c[l]>='0'&&c[l]<='9')//判断是否含有数字字符
            {
                find=true;
                break;
            }
            l--;
        }
        if(find)
            break;//有数字则退出循环
        else
            printf("没有数字!!! 请重新输入:\n");
        gets(c);//没有则重新出入
        l=strlen(c);           
    }
    l=strlen(c);
    printf("字符串长度为:%d\n",l);
    for(i=0;i<l;i++)//转换为数字
    { 
       
        if((c[i]>='0')&&(c[i]<='9'))
        {
            sum[s++]=c[i]-48;//单个字符数字转换为数字
            N*=10;
            if(c[i+1]<='0'||c[i+1]>='9'||c[i+1]=='\0')//判断下一个字符是否为字符数字,不是则执行下一步,即是否是一个连续的数
            {
                num[g]=0;
                N/=10;
                for(int j=0;j<s+1;j++)//连起来的数字转为一个整数
                {
                    sum[j]*=N;
                    N/=10;
                    num[g]+=sum[j];
                }
                g++;//记录字符串中数字串的个数
                s=0;//用于sum[30]重新存储下个字符数字
                N=1;//用于字符数字转为数字
            }
        }
    }
    printf("字符中的数字个数有%d个\n",g);
    printf("字符中的数字分别为:\n");
    for(i=0;i<g;i++)//输出结果
        printf("%d\t",num[i]);
    printf("\n");   
    getchar();getchar();
printf直接输出数字
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。