//将形参字符串中的所有数字字符顺序前移
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
char *fun(char *s)
{ int i, j, k, n; char *p, *t;
n=strlen(s)+1;
t=(char*)malloc(n*sizeof(char));
p=(char*)malloc(n*sizeof(char));
j=0; k=0;
for(i=0; i<n; i++)
{ if(isdigit(s[i])) {
/**********found**********/
p[j]=s[i]; j++;}//存放数字字符
else
{ t[k]=s[i]; k++; }//存放字母字符
}
/**********found**********/
for(i=0; i<k; i++) p[j+i]= t[i];//将t中的内容依次追加到p中
p[j+k]=0;
/**********found**********/
return p;//此处返回p的首地址即可,不需要加*
}
void main()
{ char s[80];
printf("Please input: "); scanf("%s",s);
printf("\nThe result is: %s\n",fun(s));
}
//法一:
void fun(char *s, char t[])
{
int k = 0;
for (int i = 0; i < strlen(s); i++)
{
if (i % 2 != 0 || s[i] % 2 != 1)
t[k++] = s[i];
}
t[k] = '\0';
}
//法二:
void fun(char *s, char t[])
{
int k = 0;
for (int i = 0; i < strlen(s); i++)
{
if (!(i % 2 )= 0 && (s[i] % 2) )
t[k++] = s[i];
}
t[k] = '\0';
}