标签:s函数 nbsp eve 换行 art scan turn include strlen
有一个字符数组的内容为:"student a am i",
请你将数组的内容改为"i am a student".
要求:
不能使用库函数。
只能开辟有限个空间(空间个数和字符串的长度无关)。
student a am i
i ma a tneduts
i am a student
1 #include<stdio.h>
2
3 void reverse_string(char* start, char* end)
4 {
5 while (start < end)
6 {
7 char temp = *start;
8 *start = *end;
9 *end = temp;
10 ++start;
11 --end;
12 }
13 }
14
15 int mystrlen(char* str)
16 {
17 int count = 0;
18 while (*str)
19 {
20 count++;
21 ++str;
22 }
23 return count;
24 }
25
26 void reverse(char* str)
27 {
28 //整体逆转
29 char* start = str;
30 char* end = str + mystrlen(str) - 1;
31 char* cur = str;
32 reverse_string(start, end);
33 //局部逆转,子串逆转
34 while (*cur)
35 {
36 //子串的起点和终点
37 char* sub_start = cur;
38 while ((*cur != ‘ ‘) && (*cur != ‘\0‘))
39 {
40 ++cur;
41 }
42 //逆转子串
43 reverse_string(sub_start, cur - 1);
44 //走到下一个子串的起点
45 while (*cur == ‘ ‘)
46 {
47 ++cur;
48 }
49 }
50 }
51
52 int main()
53 {
54 char str[100];
55 //scanf("%s", str);
56 //scanf函数遇到空格和换行自己结束了,这里应该使用gets函数
57 gets(str);
58 reverse(str);
59 printf("%s\n",str);
60
61 return 0;
62 }
标签:s函数 nbsp eve 换行 art scan turn include strlen
原文地址:https://www.cnblogs.com/cuckoo-/p/10372430.html