我是靠谱客的博主 野性星星,这篇文章主要介绍字符串倒置函数,现在分享给大家,希望可以做个参考。

有一个字符数组的内容为:“student a am i”,
请你将数组的内容改为"i am a student."
要求: 不能使用库函数。
只能开辟有限个空间(空间个数和字符串的长度无关)。
我的方法是这样的:
原字符串:student a am i
倒置一遍:tneduts a ma i
整体倒置:i am a student

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include<stdio.h> #include<stdlib.h> void strs(char str[], int i){ char* pc = str; char* pcc = str, *pccc = str;//三个指针,其中两个是用来倒置用的一个是用来作为船锚用; int j = i - 2;//后期会用到 while (i){//先将整个字符串扫了一遍将每个需要置换的字母置换好 if (*pcc != ' '&&*pcc != '/0'){ *pcc++;//把指针指向空格或者/0这时候pcc和p之间的字符需要倒置 } else {//倒置就行 pccc = &(*pcc);//借用第三个指针来改变字符串这样pcc就不会重复遍历数组 pccc -= 1;//开始pcc在‘ ’或者‘/0’向后走一位就到了单词上 while (pc < pccc){ *pc ^= *pccc; *pccc ^= *pc; *pc ^= *pccc; pc++; pccc--;//一个向前走,一个向后走 } pcc += 1;//这时候最开始的船锚指针可以指向下一个字符了 pc = &(*pcc);//两指针再次指向同一字符 } i--; } //下面将整个字符串倒置就行 pc = str; pcc = pc + j; while (pc < pcc){ *pc ^= *pcc; *pcc ^= *pc; *pc ^= *pcc; pc++; pcc--; } } int main(){ char str[] = { "student a am i" }; char *p = str; int i = sizeof(str) / sizeof(str[0]); //计算字符串大小 strs(p, i); printf("%s", p);//因为是指针所以经过倒置直接变换了原字符串的内容 system("pause"); return 0; }

最后

以上就是野性星星最近收集整理的关于字符串倒置函数的全部内容,更多相关字符串倒置函数内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部