鱼C论坛

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

[已解决]求助求助

[复制链接]
发表于 2021-8-19 13:25:55 | 显示全部楼层 |阅读模式
2鱼币
#include<stdio.h>
#define N 100

int main()
{
        char b[N],*p;
        int a[N],i,j,e10,count,m,sum;
        printf("input string:");
        gets(b);
        i=0;
        m=0;
        p=&b[0];
        count=0;
        while(*p!='\0')
        {
                if((*p>='0') && (*p<='9'))
                {
                        m++;
                }
                else
                {
                        if(m>0)
                        {
                                sum=*(p+i-1)-'0';
                                e10=1;
                                for(j=1;j<m;j++)
                                {
                                        e10=e10*10;
                                        sum=sum+(*(p+i-1-j)-'0')*e10;
                                }
                                a[count]=sum;
                                count++;
                                m=0;
                        }
                }
                i++;
                p+=i;
        }
        if(m>0)
        {
                sum=*(p+i-1)-'0';
                e10=1;
                for(j=1;j<m;j++)
                {
                        e10=e10*10;
                        sum=sum+(*(p+i-1-j)-'0')*e10;
                }
                a[count]=sum;
                count++;
        }
        for(i=0;i<count;i++)
        {
                printf("%d ",a[i]);
        }
        printf("\n");
        return 0;
}

输出结果是乱码,请各位大神帮忙看看是哪有问题!!!

最佳答案
2021-8-19 13:25:56
应该也可以直接在输入的时候就直接挑选出来,有兴趣可以写写看
我没写注释,有问题可以回复
/*
* 在 str[N] 里接受输入,然后把里边的数字提出来存到 result[N] 数组里
* 例如:A123x456 17960
* 123 存到 result[0],456 存到 result[1]...
*/

#include <stdio.h>
#include <stdlib.h>

#define N 100

int main(void)
{
    char str[N], ch;
    int i, j, idx, result[N];
    char temp[N];
    
    temp[0] = '\0';

    printf("请输入字符串:\n");
    ch = getchar();

    i = 0;
    while ('\n' != ch && i < N)
    {
        str[i++] = ch;
        ch = getchar();
    }

    i = j = idx = 0;
    while (i < N)
    {
        if ( str[i] > '9' || str[i] < '0')
        {
            i++;
        }
        else
        {
            while ( str[i] <= '9' && str[i] >= '0')
            {
                temp[j++] = str[i++];
                temp[j] = '\0';
            }

            result[idx++] = atoi(temp);
            temp[0] = '\0';
            j = 0;
        }
    }

    if (idx <= N - 1)
    {
        result[idx] = '\0';
    }

    idx = 0;
    while ('\0' != result[idx])
    {
        printf("%d ", result[idx++]);
    }

    return 0;
}

ss.jpg
asasb.jpg

最佳答案

查看完整内容

应该也可以直接在输入的时候就直接挑选出来,有兴趣可以写写看 我没写注释,有问题可以回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-19 13:25:56 | 显示全部楼层    本楼为最佳答案   
应该也可以直接在输入的时候就直接挑选出来,有兴趣可以写写看
我没写注释,有问题可以回复
/*
* 在 str[N] 里接受输入,然后把里边的数字提出来存到 result[N] 数组里
* 例如:A123x456 17960
* 123 存到 result[0],456 存到 result[1]...
*/

#include <stdio.h>
#include <stdlib.h>

#define N 100

int main(void)
{
    char str[N], ch;
    int i, j, idx, result[N];
    char temp[N];
    
    temp[0] = '\0';

    printf("请输入字符串:\n");
    ch = getchar();

    i = 0;
    while ('\n' != ch && i < N)
    {
        str[i++] = ch;
        ch = getchar();
    }

    i = j = idx = 0;
    while (i < N)
    {
        if ( str[i] > '9' || str[i] < '0')
        {
            i++;
        }
        else
        {
            while ( str[i] <= '9' && str[i] >= '0')
            {
                temp[j++] = str[i++];
                temp[j] = '\0';
            }

            result[idx++] = atoi(temp);
            temp[0] = '\0';
            j = 0;
        }
    }

    if (idx <= N - 1)
    {
        result[idx] = '\0';
    }

    idx = 0;
    while ('\0' != result[idx])
    {
        printf("%d ", result[idx++]);
    }

    return 0;
}

BX4SE%LO_T[P07270RUW36I.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-19 16:38:10 | 显示全部楼层
输入的东西超了数组最大下标了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-19 16:45:10 | 显示全部楼层
        char b[N],*p;
        int a[N],i,j,e10,count,m,sum;
        printf("input string:");
        gets_s(b);
                i=0;
        m=0;
        p=&b[0];
        count=0;
        while(*p!='\0')
        {
                if((*p>='0') && (*p<='9'))
                {
                        m++;
                }
                else
                {
                        if(m>0)
                        {
                                sum=*(p-1)-'0';///////////////////////////////////
                                e10=1;
                                for(j=1;j<m;j++)
                                {
                                        e10=e10*10;
                                        sum=sum+(*(p-1-j)-'0')*e10;
                                }
                                a[count]=sum;
                                count++;
                                m=0;
                        }
                }
                p++;////////////////////////////////////////////
        }
        if(m>0)
        {
                        sum=*(p-1)-'0';
                        e10=1;
                        for(j=1;j<m;j++)
                        {
                                e10=e10*10;
                                sum=sum+(*(p-1-j)-'0')*e10;
                        }
                        a[count]=sum;
                count++;
        }
        for(i=0;i<count;i++)
        {
                printf("%d ",a[i]);
        }
        printf("\n");
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-27 11:31:34 | 显示全部楼层
Max472 发表于 2021-8-19 18:34
应该也可以直接在输入的时候就直接挑选出来,有兴趣可以写写看
我没写注释,有问题可以回复

好的 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 16:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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