Text Reverse(文本倒置)

Posted on 2020-11-05 16:54  黑炽  阅读(331)  评论(0编辑  收藏  举报
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 
 5 void print_reverse(char a[], int k);
 6 void swap(char& a, char& b);
 7 
 8 int main(void) {
 9     int T;
10     char words[1005];
11 
12     scanf("%d ", &T);
13     while (T--) {
14         gets_s(words);
15         int len = strlen(words);
16         int left = 0, right = 0;//left和right是一个单词的左右端
17         int next_start;//下一次开始的位置
18 
19         while (right < len) {
20             while (words[right] != ' ' && right < len) right++;
21             next_start = right;//此时的a[right]是空格,或者结尾
22             next_start++;//从空格的下一位开始
23             right--;//此时right是单词末尾
24             while (left < right) swap(words[left++], words[right--]);
25             left = right = next_start;
26         }
27 
28         for (int i = 0; i < len; i++) printf("%c", words[i]);
29         printf("\n");
30     }
31 
32     return 0;
33 }
34 
35 void swap(char& a, char& b) {
36     char t = a;
37     a = b;
38     b = t;
39 }

gets()函数读取到

‘\n’(我们输入的回车)于是停止读取,但是它不会把\n包含到字符串里面去。。。这个注意了! 在输入字符串或字符前,scanf()之后需要读入回车,但是gets()函数不需要,就是这个原因