鱼C论坛

 找回密码
 立即注册
查看: 2891|回复: 4

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

[复制链接]
发表于 2017-4-21 12:11:46 | 显示全部楼层 |阅读模式
10鱼币
如果字符串连续输入两个字符的话 为什么b = 0不会被放到整形数组中?

QQ截图20170421120943.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-21 12:18:50 | 显示全部楼层
把代码贴上来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-4-21 14:10:15 | 显示全部楼层

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

void sum(char*p)
{
int a[10],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[j]=b;
j++;
b=0;
}
}
}
for(i=0;i<j;i++)
printf("%d ",a[i]);
printf("\n");
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-21 16:43:39 | 显示全部楼层
不明白你想问什么
无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-21 17:30:19 | 显示全部楼层
我写了一个类似的
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char **get_string(char *str)
{
        char buf[20];
        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[index++] = *str++;
                buf[index++] = '\0';

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

e:
        ret_point_count++;
        ret = realloc(ret, sizeof(char **) * ret_point_count);
        ret[ret_point_count - 1] = NULL;

        return ret;
}

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

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

        return 0;
}
123qwer4567sdfg567rtyufgh6789tyu5678
123
4567
567
6789
5678
请按任意键继续. . .
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 03:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表