程式設計思想:利用指針先把整個字元串反轉,之後再将得到的字元串中每個單詞反轉,代碼如下:
#include <stdio.h>
#include <string.h>
//反轉函數,将p指向字元串的頭,q指向字元串的尾的字元串中的每個字元進行反轉
int reversal(char *p, char *q)
{
char tmp;
if(p == NULL || q == NULL)
return -1;
while((p != q) && (p < q))
{
tmp = *p;
*p = *q;
*q = tmp;
p++;
q--;
}
return 0;
}
int main(void)
{
char str[] = "This is hello world";
char *p = str,*q = str;
char *pstr_end;
pstr_end = str + strlen(str) - 1;
//1,全部反轉一次
reversal(p, pstr_end);
//2,每個單詞部分反轉
for(;q != pstr_end; q++)
{
if(*q != ' ')
{
continue;
}
else
{
q = q-1;
reversal(p, q);
q = q + 2;
p = q ;
}
}
//結尾單詞反轉
if(q == pstr_end)
{
reversal(p, q);
}
printf("%s",str);
return 0;
}