按单词翻转字符串(C实现)

2016-12-02 12:51:46来源:网络收集作者:Max人点击

第七城市
#include
#include
#define MAX 80
void revers_str(char* strInput,int nStart,int nEnd);
void revers_words(char* strInput);//完成单词倒转,比如"i am who"转换成"who am i"
void revers_words(char* strInput)
{
int nStart = 0;
int nEnd = 0;
char* strStart;
//转换成ohm ma i
//ohw ma i 每个单词反转
strStart = strInput;
while( *strInput != '/0')
{
if ( *strInput == ' ')
{
revers_str(strStart,nStart,nEnd-1);
nStart = nEnd +1;
}
nEnd++;
strInput ++;
}
revers_str(strStart,nStart,nEnd-1); //翻转最后一个单词(即最后一个空格至'/0'之间的字符串)
}
void revers_str(char* strInput,int nStart,int nEnd)
{
if ( nStart >= nEnd || nStart <0 || nEnd >= strlen(strInput))
{
return;
}
while(nStart < nEnd)
{
char cTemp = strInput[nStart];
strInput[nStart] = strInput[nEnd];
strInput[nEnd] = cTemp;
nStart++;
nEnd--;
}
}int main(void)
{
char s[MAX];

printf("请输入要翻转的句子:/n");
gets(s);
revers_str(s,0,strlen(s)-1); //整体翻转
revers_words(s); //各单词翻转
puts(s);
}

首先是将输入的句子进行整体翻转,例如i am who,通过revers_str(s,0,strlen(s)-1)翻转后为ohw ma i;然后再对其进行每个单词翻转,单词需要空格的判别。定义nStart和nEnd,分别指向进行翻转的单词第一个字母和最后一个字母后的空格。从而通过revers_str(s,nStart,nEnd-1)可以实现对该单词的翻转。直至整个句子的空格判别完并将最后一个空格前的所有单词翻转结束,即*s == '/0'。但是,此时最后一个单词仍未翻转,所以需要再进行revers_str(s,nStart,
nEnd-1),完成整个句子的翻转。

第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台