/******************************************** */ /* 程序员: 刘晋勋 */ /* 日期: 2010/04/05 */ /* 目的: 编程练习 /* 程序功能:反转单词 */ /**********************************************/ #include <stdio.h> //求字符串长度 int strlen(char *s) { int i; for(i=0;s[i]!='/0';i++); return i; } //反转字符串的某一段子串 void Reverse(char *s,int ben,int end) { int len=end-ben+1; for(int i=0;i<len/2;i++) { char c=s[ben+i]; s[ben+i]=s[ben+len-i-1]; s[ben+len-i-1]=c; } } void ReverseWord(char *s) { //先将整个字符串反转 Reverse(s,0,strlen(s)-1); bool isword=false; int i=0; int j=0; int k=0; //分离单词 while (s[k] != '/0') { while(s[k] == ' ') k++; while ((s[k] != '/0') && (s[k] != ' ')) { i++,k++; } if (i == 0) return ; Reverse(s, k - i, k - 1); i = 0; } } int main() { char s[]="I love you"; printf("Before Reverse:%s/n",s); ReverseWord(s); printf("After Reverse:%s/n",s); return 0; } 注意测试程序中只能写成char s[],而不能写成char *s,否则会造成程序崩溃,且不能运行出正确结果