回 帖 发 新 帖 刷新版面

主题:指针

求一个字符串中的整数的个数,并输出有几个以及有哪些整数!
#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个回复)

11 楼

[code=c]
#include <stdio.h>
#include <ctype.h>
 
#define MAX_NUM   20
#define TURN_FLAG(m) ((m == 1)?(m = 0):(m = 1))

int main(int argc, char *argv[])
{
    int  num[MAX_NUM] = {0};         /*-----这里暂定义为int型,可根据需要改变-----*/
    int  ch, count, index ,flag;
    count = 0;
    flag  = 1;                       /*----标志量-----*/
    
    puts("Please input the string to check:");
    
    while((ch = getchar()) != '\n' && ch != EOF)
    {
       if(isdigit(ch) != 0)
       {
          flag = 0;
          num[count] = 10*num[count] + (ch - '0');    
          continue;      
       }
       if(!flag)
       {
          /*if(count >= MAX_NUM){break;}....还是根据需要*/
          count++;
          TURN_FLAG(flag);
       }       
    }
    for(index = 0; index < count; index++)
    {
        printf("%d\n",num[index]);
    }
    return 0;
}
[/code]
大致写了下,不明具体需求,希望对lz有帮助、、

我来回复

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