输入三个字符串。
我的思路是先进行识别,然后再进行交换。
现在能实现的是识别,但是交换却只能交换短字符串指针,而长字符串却并没有参与交换,
无法输出结果。
求大神帮忙!
如You and I. 最终输出 I and You.
输入三个字符串。
我的思路是先进行识别,然后再进行交换。
现在能实现的是识别,但是交换却只能交换短字符串指针,而长字符串却并没有参与交换,
无法输出结果。
求大神帮忙!
如You and I. 最终输出 I and You.
解题思路:
1. 翻转整个字符串 "I dna uoY"
2. 依次按照空格,翻转每个单独的单词 "I and You"
代码如下:
#include <stdio.h>
//将一个字符串进行逆置
void Reverse(char* Begin,char* End)
{
if(NULL == Begin || NULL == End)
return;
while(Begin < End){
char tmp = *Begin;
*Begin = *End;
*End = tmp;
Begin++;
End--;
}
}
char* ReverseSentence(char* Data)
{
if(NULL == Data)
return NULL;
char* Begin = Data;
char* End = Data;
while(*End != '\0')
End++;
End--;
//反转整个句子
Reverse(Begin,End);
//反转句子中的每个单词
Begin = End = Data;
while(*Begin != '\0'){
if(*Begin == ' '){
Begin++;
End++;
}else if(*End == ' ' || *End == '\0'){
Reverse(Begin,End-1);
Begin = ++End;
}else
End++;
}
return Data;
}
int main(){
char str[20] = "You And I";
ReverseSentence(str);
printf("%s\n",str);
return 0;
}