#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
char str[81];
char *p ,temp;
int i,n,length;
gets(str);
for (p = str, i = 0, n = strlen(str); i<n/2; i++)
{
temp = *(p+n-1-i);
*(p+n-1-i) = *(p+i);
*(p+i) = temp;
}
puts(str);
p = str;
printf("p = %s",p);
//字符串倒序
length=0;
do
//执行到这里时,p仍指向str首地址
{
if( isalpha(*p) )
{//先做这个判断 *p不是空格,length自增1后,注意while里p++
length++;
printf("*p=%c " ,*p);
}
else
//以fed cba为例,此时p指向的是d c间的空格
{
if(length > 1)
{
for(i =0; i<length/2; i++)
{
temp = *(p-1-i);
//printf("temp = %c\n" ,temp);
*(p-1-i) = *(p-length+i);
//printf("*(p-1-i) = %c\n" ,*(p-1-i));
*(p-length+i) = temp;
//printf("p-length+i = %c\n" ,*(p-length+i));
}
length = 0;
}
}
}while(*p++ != '\0');
puts(str);
while(1);
return 0;
}
[
本帖最后由 mj0011 于 2015-7-15 00:05 编辑 ]