字符串操作Word文档下载推荐.docx
- 文档编号:16559877
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:17
- 大小:17.60KB
字符串操作Word文档下载推荐.docx
《字符串操作Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《字符串操作Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
while(*p!
='
\0'
)
length++;
p++;
returnlength;
//字符串拷贝
char*mystrcpy(char*dest,constchar*source)
if(NULL==dest&
&
NULL==source)
returnNULL;
char*destbak=dest;
while(*source!
='
*dest=*source;
//字符赋值
source++;
dest++;
//指针前移
*dest='
;
returndestbak;
//返回地址
char*mystrcat(char*dest,constchar*source)
if(!
dest||!
source)
字符串为空,插入失败\n"
}
else
char*destbak=dest;
//保留地址
while((*destbak++)!
while((*dest++)!
)//循环并拷贝字符串
*dest=*source;
//内部字符串当做指令来处理
voidrun(mystring*string)
system(string->
//执行指令
//查找字符串中第一个找到的字符
strchr
char*findFirstChar(mystring*string,charch)
char*p=mystrchr(string->
p,ch);
//使用自定义函数
returnp;
char*mystrchr(constchar*dest,const
charch)
if(NULL==dest)
while(*dest++!
if(*dest==ch)
returndest;
//找到就返回地址
//没找到返回NULL
//查找字符串
strstr
char*findFirstString(mystring*string,char*str)//返回第一个找到的字符串地址
char*pres=mystrstr(string->
p,str);
returnpres;
//返回找到字符串的地址
char*mystrstr(constchar*constdest,constchar*constfindstr)//避免传递过来的字符串以及地址被随便修改
//判断为空
很重要
if(NULL==dest||NULL==findstr)
char*p=NULL;
//保存找到的字符串地址
while(*destbak!
)
intflag=1;
char*findstrbak=findstr;
char*nowdestbak=destbak;
while(*findstrbak!
if(*nowdestbak!
if(*findstrbak++!
=*nowdestbak++)
flag=0;
//不等
break;
if(1==flag)
p=destbak;
destbak++;
//删除字符、字符串
intdeleteFirstChar(mystring*string,constcharch)
//查找
char*pstr=mystrchr(string->
if(NULL==pstr)
char*pnext=pstr+1;
//双指针循环
while(*pnext!
*pstr++=*pnext++;
//ok
*pstr='
return1;
intdeleteFirstString(mystring*string,char*conststr)
if(NULL==pres)
intlength=mystrlen(str);
//字符串长度
char*pnext=pres+length;
*pres++=*pnext++;
*pres='
//字符串结尾结束标志
//尾部增加
字符、字符串
voidbackAddChar(mystring*string,charch)
if(strlen(string->
p)+1==string->
realLength)
//重新分配内存
p=realloc(string->
p,string->
realLength+1);
realLength+=1;
p[string->
realLength-2]=ch;
realLength-1]='
intnowlength=mystrlen(string->
//求出当前长度
p[nowlength]=ch;
p[nowlength+1]='
voidbackAddString(mystring*string,char*str)
intnowmyStringLength=mystrlen(string->
//获取当前字符串长度
intaddStringLength=mystrlen(str);
//要增加字符串的长度
if(nowmyStringLength+addStringLength+1>
string->
intneedAddLength=nowmyStringLength+addStringLength+1-string->
realLength;
//分配内存
p=(char*)realloc(string->
realLength+needAddLength);
//增加字符串长度
mystrcat(string->
//字符串拼接
realLength+=needAddLength;
//增加长度
//拼接字符串
//任意位置增加(字符、字符串)
根据地址
voidaddChar(mystring*string,charch,char*pos)
if(NULL==pos||NULL==string)
if(mystrlen(string->
p)+1==string->
intmovelength=mystrlen(pos);
for(int
i=nowlength;
i>
nowlength-movelength;
i--)
p[i]=string->
p[i-1];
p[nowlength-movelength]=ch;
//插入
//求出现在要移动的长度
for(inti=nowlength;
i>
nowlength-movelength;
p[nowlength+1]='
voidaddString(mystring*string,char*str,char*pos)
if(NULL==pos||NULL==string)
return;
intnowmystringlength=mystrlen(string->
//获取当前长度
intaddstringlength=mystrlen(str);
//要增加的字符串长度
if(nowmystringlength+addstringlength+1>
realLength)//判断是否
realLength+needaddlength);
realLength+=needaddlength;
//求出当前的长度
intinsertlength=mystrlen(str);
//要求出插入的长度
=nowlength-movelength;
i++)
p[i+insertlength]=string->
p[i];
//字符移动
for(intj=0;
j<
insertlength;
j++)
p[nowlength-movelength+j]=str[j];
//赋值拷贝
=nowlength-movelength;
i++)
j++)
p[nowlength-movelength+j]=str[j];
//任意位置修改(字符、字符串)
voidchangeFirstChar(mystring*string,constcharoldchar,constcharnewchar)
char*pstr=string->
p;
while(*pstr!
if(*pstr==oldchar)
*pstr=newchar;
//如果套替换所有的字符
去掉return即可
pstr++;
voidchangeFirstString(mystring*string,char*constpoldstr,char*constpnewstr)
char*pfind=findFirstString(string,poldstr);
if(NULL!
=pfind)
deleteFirstString(string,poldstr);
addString(string,pnewstr,pfind);
3.
[文件]
main.c
~
2KB
下载(5)
?
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include"
voidmain1()
mystringstring1;
//函数内部改变外部变量需要地址
initWithString(&
string1,"
mynameisrocket"
showString(&
string1);
字符串长度:
%d\n"
mystrlen(&
string1));
getchar();
voidmain2()
//
initWithString(&
string1,"
cal"
showString(&
//增加字符
backAddChar(&
string1,'
c'
run(&
//增加字符串
note"
backAddString(&
pad"
run(&
//测试字符查找函数strchr
voidmain3()
calaaaa"
//修改
将找到的一个字符a改为A
char*pstr=findFirstChar(&
a'
A'
//测试strstr
mystrstr
main4()
char*pstr=findFirstString(&
laz"
printf("
查找:
%s\n"
*pstr);
//error
pstr);
if(pstr!
=NULL)
Z'
//删除(字符、字符串)依赖于查找
voidmain5()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 字符串 操作