问题:不借助任何库函数,将字符串反转,并不改变单词次序。如:I am a Student. 操作后输出:Student a am I.
#include <stdio.h>
#include <string.h>
void FlipSentence( char *start,char *end ) //把字符串翻转
{
char* pstart = start;
char* pend = end;
char temp;
while( pstart < pend )
{
temp = *pstart;
*pstart = *pend;
*pend = temp;
pstart++;
pend--;
}
}
void FlipWord( char *p ) //在字符串中找出单词 ,并将各个单词用方法一将其翻转
{
while( *p != '\0')
{
char *pst = p;
while( *p != '\0' && *p != ' ' )
{
p++;
}
FlipSentence( pst,p-1 ); //把每一个单词看作句子对待
p++;
}
}
int main()
{
char p[30] = "i am a student";
int len = strlen(p);
printf("原字符串为 : %s\n",p);
printf("翻转后的字符串为 :");
FlipSentence(p,p+len-1);
FlipWord(p);
cout<<p<<endl;
return 0;
}
输出:
原字符串:I am a Student
翻转后的字符串为:Student a am I
总结,指针的使用,字符串的处理。