回 帖 发 新 帖 刷新版面

主题:指针

求一个字符串中的整数的个数,并输出有几个以及有哪些整数!
#include <stdio.h>
void main()
{ int i=0;
int j;
char a[100];
char b[100];
char *p,t;
printf("请输入一个字符串:\n");
scanf("%s",b);
p=b;
for(;(*p)!='\0';)
{ for(;
!((*p)>='0')&&((*p)<='9');)
    p++;
if(((*p)>='0')&&((*p)<='9'))
{    t=*p;
    p++;
 for(;(*p)>='0'&&(*p)<='9';)
  { t=*p+t*10;
 p++;}
  a[i]=t;
  i++;
}
}
printf("一共有%d个整数\n",i);
for(j=0;j<i;j++)
printf("%2c",a[j]);
printf("\n");
}我做的好像很乱,没什么思路。。。。

回复列表 (共11个回复)

沙发

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <stdbool.h>

int main(void)
{
    char str[100];
    int total; //总数 
    char *p;
    bool isNum; //数字标记 

    
    scanf("%s", &str);
    
    total = 0;
    isNum = false;  
   
    
    for (char *p = str; *p != '\0'; ++p) {
              if (isdigit(*p)) {
                 printf("%c", *p);
                 total += (isNum == false); //读入一个新的数字,总数加一 
                 isNum = true;
              }
              else if (isNum == true) {
                      printf("\n");
                      isNum = false;
              }
    }
    
    printf("\n%d nums in string\n", total);
   getch();
    return 0;
}

板凳


这个程序并不能运行啊。。。。而且对于我这样一个初学者来,看起来有些吃力。。。还是谢谢了

3 楼

二楼的代码应该没有问题,lz的编译器中可能没有stdbool的头文件,ctype头文件中有判断为整数的字符的函数……
还有就是lz应该注意下格式,这样看起来too吃力、、

4 楼

额。。。。

5 楼

干嘛非用指针呢

#include <stdio.h>
void main()
{ int i=0,j=0;
char a[100],t;
printf("请输入一个字符串:\n");
while((t=getchar())!='\n')
{if(t>='0'&&t<='9')
{a[i]=t;
i++;
}
j++;
}
printf("一共有%d个整数\n",i);
for(i=0;i<j;i++)
{   printf("%2c",a[i]);
    printf("\n");
}
}

6 楼


额,题目的意思是把连续的整数输出,
如:hjkh34jkj234234sada
输出的整数有34,234234

7 楼

好久没写C了,现在在公司呆着没事干,拿出来写写,也不知道对不对,这是我想得到的最简单的了

#include <stdio.h>

void main(void)
{
    char str[100] ;
    char str1[100] ;
    char *p ;

    int i = 0 ;
    
    printf("请输入一个字符串:") ;
    scanf("%s", str) ;

    for(p = str; *p != '\0'; p++)
    {
        if(*p >= '0' && *p <= '9')
        {
            str1[i] = *p ;
            i ++ ;
        }
    }

    str1[i] = '\0' ;

    printf("\n输出的整数有:%s", str1) ;

    return ;
}

8 楼

那不加最后一个printf(“\n”)不就好了

9 楼


我最近也在学指针 ,不过我郁闷你这咋写的  为什么好混乱啊 
{ for(;
!((*p)>='0')&&((*p)<='9');)
    p++;
if(((*p)>='0')&&((*p)<='9'))
{    t=*p;
    p++;
 for(;(*p)>='0'&&(*p)<='9';)
  { t=*p+t*10;
 p++;}
  a[i]=t;
  i++;

10 楼

谢谢这么多人都来帮我哈,不过可能是我说的不够清楚,输出的结果跟题目都不怎么符合;
题目是这样的:输入一串字符串,例如
123dsf56 17960?302fdggd654
将其中连续的数字作为一个整数,依次存放到一个数组a中,例如:123放在a[0]中,56放在a[1]中,。。。。。统计有多少个数字并输出!

我来回复

您尚未登录,请登录后再回复。点此登录或注册