3333333e 发表于 2017-4-21 12:11:46

输入一个字符串,内有数字和非数字字符 如a123x4 将连续的数字作为一个元素放入数组

如果字符串连续输入两个字符的话 为什么b = 0不会被放到整形数组中?

人造人 发表于 2017-4-21 12:18:50

把代码贴上来

3333333e 发表于 2017-4-21 14:10:15

人造人 发表于 2017-4-21 12:18
把代码贴上来

#include <stdio.h>
void main()
{
void sum(char *p);
char s,*p=s;
gets(s);
sum(p);
}

void sum(char*p)
{
int a,i,j=0,b=0;
for(i=0;*(p+i)!='\0';i++)
{
if(*(p+i)>='0'&&*(p+i)<='9')
{
b=*(p+i)-48+b*10;
if(*(p+i+1)<'0'||*(p+i+1)>'9')
{
a=b;
j++;
b=0;
}
}
}
for(i=0;i<j;i++)
printf("%d ",a);
printf("\n");
}

人造人 发表于 2017-4-21 16:43:39

不明白你想问什么

人造人 发表于 2017-4-21 17:30:19

我写了一个类似的
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char **get_string(char *str)
{
        char buf;
        int index = 0;
        char **ret = NULL;
        int ret_point_count = 0;

        while(1)
        {
                while(*str <= '0' || *str >= '9')
                {
                        if(*str == '\0') goto e;
                        str++;
                }

                index = 0;
                while(*str >= '0' && *str <= '9') buf = *str++;
                buf = '\0';

                ret_point_count++;
                ret = realloc(ret, sizeof(char **) * ret_point_count);
                ret = malloc(strlen(buf) + 1);
                strcpy(ret, buf);
        }

e:
        ret_point_count++;
        ret = realloc(ret, sizeof(char **) * ret_point_count);
        ret = NULL;

        return ret;
}

int main(void)
{
        char s;
        char **str_arr;
       
        fgets(s, 50, stdin);
        str_arr = get_string(s);

        for(int i = 0; str_arr != NULL; i++)
        {
                puts(str_arr);
        }

        return 0;
}


123qwer4567sdfg567rtyufgh6789tyu5678
123
4567
567
6789
5678
请按任意键继续. . .
页: [1]
查看完整版本: 输入一个字符串,内有数字和非数字字符 如a123x4 将连续的数字作为一个元素放入数组