ginobili_86 发表于 2021-8-19 13:25:55

求助求助

#include<stdio.h>
#define N 100

int main()
{
        char b,*p;
        int a,i,j,e10,count,m,sum;
        printf("input string:");
        gets(b);
        i=0;
        m=0;
        p=&b;
        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=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=sum;
                count++;
        }
        for(i=0;i<count;i++)
        {
                printf("%d ",a);
        }
        printf("\n");
        return 0;
}

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

Max472 发表于 2021-8-19 13:25:56

应该也可以直接在输入的时候就直接挑选出来,有兴趣可以写写看
我没写注释,有问题可以回复

/*
* 在 str 里接受输入,然后把里边的数字提出来存到 result 数组里
* 例如:A123x456 17960
* 123 存到 result,456 存到 result...
*/

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

#define N 100

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

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

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

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

            result = atoi(temp);
            temp = '\0';
            j = 0;
      }
    }

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

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

    return 0;
}

Max472 发表于 2021-8-19 16:38:10

输入的东西超了数组最大下标了

jhq999 发表于 2021-8-19 16:45:10


      char b,*p;
      int a,i,j,e10,count,m,sum;
      printf("input string:");
      gets_s(b);
                i=0;
      m=0;
      p=&b;
      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=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=sum;
                count++;
      }
      for(i=0;i<count;i++)
      {
                printf("%d ",a);
      }
      printf("\n");

ginobili_86 发表于 2021-8-27 11:31:34

Max472 发表于 2021-8-19 18:34
应该也可以直接在输入的时候就直接挑选出来,有兴趣可以写写看
我没写注释,有问题可以回复

好的 谢谢
页: [1]
查看完整版本: 求助求助