很难的倒叙输出!!!!
输入入一句话,例如:OK? I am a student,要求去掉符号和多余空格并且字母倒放如:KO I ma a tneduts希望大虾帮帮忙。。。分不多
程序代码:#include <stdio.h>
#include <string.h>
// 函数说明:将字符串反向存储,并将内容进行整理
// 函数参数:char* szLines 要整理的字符串
// 函数参数:const bool bTrim 是否对字符串进行整理(不能修改)
// 返回值:整理后的字符串
char* OppositeStr(char* szLines, const bool bTrim)
{
int nLen = -1; // 字符串长度
char szBuffer[1024] = "";// 保存整理后的字符串
int nWordPos = 0; // 保存字符串的当前位置
int i = -1;
// 判断字符串是否合法
if (NULL == szLines)
return NULL;
// 倒置保存字符串
nLen = strlen(szLines);
for (i=nLen-1; i>=0; i--)
{
// 如果不需要整理,那直接倒序记录就可以
if (!bTrim)
{
szBuffer[nWordPos] = szLines[i];
nWordPos++;
continue;
}
// 如果需要整理,则要判断当前字符是否为字母
if (('A' <= szLines[i] && 'Z' >= szLines[i]) ||
('a' <= szLines[i] && 'z' >= szLines[i]))
{
szBuffer[nWordPos] = szLines[i];
nWordPos++;
continue;
}
// 当前为非字母字符,则判断前一个字符串是否为空格
if (0 == nWordPos || ' ' == szBuffer[nWordPos-1])
continue;
// 完成一个单词的排序,将字符串加载一个空格
szBuffer[nWordPos] = ' '; // 如果需要要求最后一个词不能为空格,那这里还需要修改一下
nWordPos++;
}
// 返回整理后的字符串
return szBuffer;
}
int main(int argc, char* argv[])
{
char szTest1[] = "OK? I am a student";
char szTest2[] = "No! Student is person also!";
char* szOpposite;
// 整理字符串
szOpposite = OppositeStr(szTest1, true);
if (NULL == szOpposite)
printf("Operator error!\n");
else
printf("The Opposite String is:\n%s\n", szOpposite);
szOpposite = OppositeStr(szTest2, true);
if (NULL == szOpposite)
printf("Operator error!\n");
else
printf("The Opposite String is:\n%s\n", szOpposite);
return 0;
}
