第2个问题,有多个子串,返回第几个子串的位置??=
以下代码VC6.0测试通过:
#include
#include
#include
#define MAXLINE 81
int getNumber(const char* str, int *&pi)
{
if( str==NULL || strlen(str)==0 ) return 0;
int i = 0;
int n = 0; // 包含整数子串的个数
char *tmp = (char*)calloc( strlen(str) + 1, sizeof(char) );
char *p = tmp;
while(*str++ != '\0' )
{
if( *str>='0' && *str<='9' )
{
if( *p=='|' )
{
p++;
n++;
}
*p++ = *str;
}
else
*p = '|';
}
*p = '\0';
n++;
pi = (int*)calloc(n, sizeof(int));
p = strtok(tmp, "|");
while( p != NULL )
{
*(pi + i++) = atoi( p );
p = strtok( NULL, "|" );
}
return n; // 返回的是包含整数数值的个数
}
int main(int argc, char* argv[], char* env[])
{
int *pi = NULL;
char str[MAXLINE] = {0};
int n = 0, i = 0;
printf("请输入一个包含整数的字符串:\n");
gets(str);
n = getNumber( str, pi );
printf( "共包含 %d 个整数数值: \n", n );
for( i = 0; i < n; i++ )
printf(" %d\n", *(pi + i) );
free(pi);
return 0;
}
输入:
132,568a79555+11151%125548&987113#11 46213
输出:
共包含 8 个整数数值:
32
568
79555
11151
125548
987113
11
46213
#include
#include
main()
{
char s[100]={"123a345bcd567"};
int i,l,j=0;
int a[100]={0};
//gets(s);
l=strlen(s);
printf("字符长%d\n",l);
for(i=0;i
{
a[j]=a[j]*10+s[i]-'0';
}
else if(s[i]<'0'||s[i]>'9')
{
if(i ==0);
else if(s[i+1]>='0'&&s[i+1]<='9')
j++;
}
printf("整数个数%d",j+1);
printf("\n数组\n");
for(i=0;i<=j;i++)
printf("%d\n",a[i]);
}
#include
#include
char a[100];
int l;
void chongpai(char *p);
int main()
{
int i;
gets(a);
l=strlen(a);
for(i=0;i
puts(a);
return 0;
}
void chongpai(char *p)
{
int i;
int a1[25],a2[25],a3[25],a4[25];
int q1=0,q2=0,q3=0,q4=0;
if(*p>=48&&*p<=57)
{a1[q1]=*p;q1++;}
else if(*p>=97&&*p<=122)
{a2[q2]=*p;q2++;}
else if(*p>=65&&*p<=90)
{a3[q3]=*p;q3++;}
else {a4[q4]=*p;q4++;}
for(i=0;i
for(i=q1;i
for(i=q1+q2;i
for(i=q1+q2+q3;i
}