过滤字符串只保留串中的数字字符

#include

int Count_Digit ( char *ptr,int *num );

int main()
{
    char str[80];
    int cnt,num;
    gets(str);
    cnt=Count_Digit(str,&num);
    printf("There are %d digits in the string,they are %s\n",cnt,str);
    printf("The  number of inversions is %d\n",num);
    return 0;
 }

int Count_Digit ( char *ptr,int *num )
{
    int i = 0;
    int z = 1;
    int a = 0;
    char str[100] = { '\0' };
    int sum = 0;
    int k = 0;
    for( i = 0 ; *(ptr+i) != '\0' ; i++)
    {
        if(*(ptr+i) <= '9' && *(ptr+i) >= '0' )
        {
            sum++;
            a = (*(ptr+i) - '0' )*z + a;  难点:有关于字符串中的运算都是ascll值的运算
            z = z * 10;
            str[k] = *(ptr+i);
            k++;
        }
    }
    for( i = 0 ; i < k ; i++)
    {
        *(ptr+i) = str[i];
    }
    for(  ; *(ptr+i) != '\0' ; i++)
    {
        *(ptr+i) = '\0';
    }
    *num = a;
    return sum;
}
    

你可能感兴趣的:(java,算法,前端)