写一个简单的函数

来源:百度知道 编辑:UC知道 时间:2024/05/22 18:14:35
写一个函数,实现对给定的字符串(字符串里面包括:英文字母,数字,符号)的处理。经过处理后的字符串其内容按字母,数字,符号的顺序存放。函数声明如下:
void ParseString(char* pstr);

要求:

a. 不能改函数声明;

b. 不改变字母数字等在字符串中原有的出现顺序;

c. 直接使用pstr所值指缓冲区,不允许另开缓冲区。

例如:给定的字符串为:A,2.d?3!e4r87we79...

输出结果为:Aderwe2348779,.?!...

@a1b#2c
采用交换位置
a@1b#2c
a1@b#2c
ab1@#2c
ab12@#c
abc12@#

#include <ctype.h>
#include <stdio.h>
void ParseString(char* pstr)
{
char* pCir = pstr;
char* pSpec = pstr;
char temp;
while (*pCir)//把所有字母放到前面
{
if (isalpha(*pCir))
{
temp = *pCir;
char* pTemp = pCir;
while (pTemp!=pSpec)
{
*pTemp = *(pTemp-1);
--pTemp;
}
*pSpec = temp;
++pCir;
++pSpec;
}
else
{
++pCir;
}
}
pCir = pSpec;//最后一个字母的下一位,即指向第一个非字母
while (*pCir)//数字放字母后面
{
if (isdigit(*pCir))
{
temp = *pCir;
char* pTemp = pCir;
while (pTemp!=pSpec)
{
*pTemp = *(pTemp-1);
--pTemp;
}
*pSpec = temp;
++pCir;
++pSpec;
}
else
{
++pCir;
}
}

//字母和数字都