很难的倒叙输出!!!!
输入入一句话,例如: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; }