1、输出字符串的所有数字字符
#include<stdio.h>
#include<string.h>
int main()
{
char str1[50]= "ac6afef16asfew2f15wefa1385we";
char str2[50];
char *p1 = str1;
char *p2 = str2;
int n = strlen(str1);
int i;
for(i=0; i<n; i++)
{
if(*p1 >= '0' && *p1 <= '9')
{
*p2 =*p1;
p2++; //满足条件了赋值并指针移动
}
p1++; //str1不管满不满足指针都要移动
*p2 = '\0'; //字符串结尾加入'\0',防止乱码
}
printf("%s\n", str2);
return 0;
}
2、将字符串的每个字符按从小到大排序
/* 比较字符串每个字符大小并按从小到大排序 */
#include<stdio.h>
#include<string.h>
void my_sort(char *p1, char *p2, int n)
{
int i,j;
char t;
char *r = p1;
/*
*循环还是画一下图理一下逻辑,这个循环是从第一个字符和第二个字符
*开始比较,如果前面大于后面,就调换,所以等于每次找到最大的数把它
*放到最后面,需要找到n-1次最大值,所以每次找到要对比n-i-1次。
*/
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(*(p1+j) > *(p1+j+1))
{
t = *(p1+j+1);
*(p1+j+1) = *(p1+j);
*(p1+j) = t;
}
}
}
for(i=0;i<n;i++)
{
*p2 = *p1;
p1++;
p2++;
//*p2++ = *p1++; //这样写也行
}
}
int main()
{
char str1[50], str2[50];
int n;
gets(str1);
n = strlen(str1);
my_sort(str1, str2, n);
puts(str2);
}