1 char dealS[10000] = { 0 }; 2 char word[10000] = { 0 }; 3 4 char* reverseWords(char* s) 5 { 6 int temBegin; 7 int temEnd; 8 int k = -1,l = -1; 9 int len = strlen(s); 10 memset() 11 for (temBegin = 0; temBegin < strlen(s); temBegin++) //删除开头的空格 12 { 13 if (s[temBegin] != ‘ ‘) 14 break; 15 } 16 17 for (temEnd = strlen(s) - 1; temEnd >= 0; temEnd--) //删除结尾的空格 18 { 19 if (s[temEnd] != ‘ ‘) 20 break; 21 } 22 for (int i = temBegin; i < temEnd + 1; i++)//删除中途的空格 23 { 24 if (s[i] != ‘ ‘) 25 { 26 dealS[++k] = s[i]; 27 } 28 else if (s[i] == ‘ ‘) 29 { 30 if (s[i + 1] == ‘ ‘) //连续空格情况 31 continue; 32 else 33 dealS[++k] = ‘ ‘; 34 } 35 } 36 37 k = -1; 38 memset(s, 0, len); //清空s 39 for (int i = strlen(dealS)-1; i >= 0; i--) 40 { 41 while (dealS[i] != ‘ ‘ && i != -1) 42 { 43 word[++l] = dealS[i]; 44 i--; 45 } 46 47 for (int j = l; j >= 0; j--) 48 { 49 s[++k] = word[j]; 50 } 51 if (i != 0) //如果不是最后 52 { 53 s[++k] = ‘ ‘; 54 } 55 memset(word, 0, l + 1); //清空word 56 l = -1; 57 } 58 s[k] = ‘\0‘; 59 return s; 60 }
原文:https://www.cnblogs.com/ZhengLijie/p/12672521.html