ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:17.60KB ,
资源ID:3655018      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3655018.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(字符串操作.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

字符串操作.docx

1、字符串操作#include string.h/初始化void init(mystring*string)string-p = NULL;string-realLength = 0;void initWithLength(mystring*string, int length)/开辟长度 内存清0string-p = (char*)calloc(length,sizeof(char);/分配内存并清0string-realLength = length;void initWithString(mystring*string, char*copystring)/初始化字符串 并拷贝if (NULL

2、=string)printf(字符串为空,无法拷贝n);return 0;int length = strlen(copystring);/获取字符串长度string-p = (char*)calloc(length + 1, sizeof(char);/由于此处的calloc已经全部初始化为0 所以下面的操作不需要考虑字符串结束标志/strcpy(string-p, copystring);/拷贝字符串mystrcpy(string-p, copystring);string-realLength = length + 1;/设置长度/显示字符串void showString(mystrin

3、g*string)printf(showString = %sn, string-p);/获取字符串长度int mystrlen(char*p)int length = 0;if (NULL=p)printf(字符串为空n);return 0;while (*p != 0)length+;p+;return length;/字符串拷贝char *mystrcpy(char*dest, const char*source)if (NULL=dest&NULL=source)printf(字符串为空n);return NULL;char *destbak = dest;while (*source

4、!=0)*dest = *source;/字符赋值source+;dest+;/指针前移*dest = 0;return destbak;/返回地址char*mystrcat(char*dest, const char*source)if (!dest|!source)printf(字符串为空,插入失败n);return NULL; elsechar*destbak = dest;/保留地址while (*destbak+) != 0);/指针前移while (*dest+) != 0)/循环并拷贝字符串*dest= *source;dest+;source+;*dest = 0;return

5、 destbak;/内部字符串当做指令来处理void run(mystring*string)system(string-p);/执行指令/查找字符串中第一个找到的字符 strchrchar*findFirstChar(mystring*string, char ch)char*p = mystrchr(string-p, ch);/使用自定义函数return p;char*mystrchr(const char*dest, const char ch)if (NULL=dest)return NULL;while (*dest+!=0)if (*dest=ch)return dest;/找到

6、 就返回地址return NULL;/没找到返回NULL/查找字符串 strstrchar*findFirstString(mystring*string, char*str)/返回第一个找到的字符串地址char*pres = mystrstr(string-p, str);return pres;/返回找到字符串的地址char*mystrstr(const char*const dest, const char*const findstr)/避免传递过来的字符串以及地址被随便修改/判断为空 很重要if (NULL=dest|NULL=findstr)return NULL;char*dest

7、bak = dest;char*p = NULL;/保存找到的字符串地址while (*destbak!=0 )int flag = 1;char*findstrbak = findstr;char*nowdestbak = destbak;while (*findstrbak!=0)if (*nowdestbak != 0)if (*findstrbak+ != *nowdestbak+)flag = 0;/不等elseflag = 0;break;if (1=flag)p = destbak;return p;destbak+;return NULL;/删除字符、字符串int delete

8、FirstChar(mystring*string, const char ch)/查找char*pstr = mystrchr(string-p, ch);if (NULL=pstr)return 0;char*pnext = pstr + 1;/双指针循环while (*pnext!=0)*pstr+ = *pnext+;/ok*pstr = 0;return 1;int deleteFirstString(mystring*string, char*const str)char*pres = mystrstr(string-p, str);if (NULL=pres)return 0;

9、elseint length = mystrlen(str);/字符串长度char*pnext = pres + length;while (*pnext!=0)*pres+ = *pnext+;*pres = 0;/字符串结尾结束标志return 1;/尾部增加 字符、字符串void backAddChar(mystring*string, char ch)if (strlen(string-p) + 1 = string-realLength)/重新分配内存string-p = realloc(string-p, string-realLength + 1);string-realLeng

10、th += 1;string-pstring-realLength - 2 = ch;string-pstring-realLength - 1 = 0;elseint nowlength = mystrlen(string-p);/求出当前长度string-pnowlength = ch;string-pnowlength + 1 = 0;void backAddString(mystring*string, char*str)int nowmyStringLength = mystrlen(string-p);/获取当前字符串长度int addStringLength = mystrlen

11、(str);/要增加字符串的长度if (nowmyStringLength + addStringLength + 1 string-realLength)int needAddLength = nowmyStringLength + addStringLength + 1 - string-realLength;/分配内存string-p = (char*)realloc(string-p, string-realLength + needAddLength);/增加字符串长度mystrcat(string-p, str);/字符串拼接string-realLength += needAdd

12、Length;/增加长度elsemystrcat(string-p, str);/拼接字符串/任意位置增加(字符、字符串) 根据地址void addChar(mystring *string, char ch, char *pos)if (NULL = pos|NULL=string)return NULL;if (mystrlen(string-p)+1=string-realLength)/重新分配内存string-p = realloc(string-p, string-realLength + 1);string-realLength += 1;int nowlength = myst

13、rlen(string-p);int movelength = mystrlen(pos);for (int i= nowlength; inowlength-movelength; i-)string-pi = string-pi - 1;string-pnowlength - movelength = ch;/插入elseint nowlength = mystrlen(string-p);/求出当前长度int movelength = mystrlen(pos);/求出现在要移动的长度for (int i = nowlength; i nowlength - movelength; i-

14、)string-pi = string-pi - 1;string-pnowlength - movelength = ch;string-pnowlength+1 = 0;void addString(mystring*string, char *str, char*pos)if (NULL=pos|NULL=string)return;int nowmystringlength = mystrlen(string-p);/获取当前长度int addstringlength = mystrlen(str);/要增加的字符串长度if (nowmystringlength+addstringle

15、ngth+1string-realLength)/判断是否string-p = (char*)realloc(string-p, string-realLength + needaddlength);string-realLength += needaddlength;/增加长度int nowlength = mystrlen(string-p);/求出当前的长度int movelength = mystrlen(pos);/求出现在要移动的长度int insertlength = mystrlen(str);/要求出插入的长度for (int i = nowlength; i =nowlen

16、gth-movelength ;i+)string-pi + insertlength = string-pi;/字符移动for (int j = 0; j pnowlength - movelength+j = strj;/赋值拷贝elseint nowlength = mystrlen(string-p);/求出当前的长度int movelength = mystrlen(pos);/求出现在要移动的长度int insertlength = mystrlen(str);/要求出插入的长度for (int i = nowlength; i = nowlength - movelength;

17、i+)string-pi + insertlength = string-pi;/字符移动for (int j = 0; j pnowlength - movelength + j = strj;/赋值拷贝/任意位置修改(字符、字符串) 根据地址void changeFirstChar(mystring*string, const char oldchar, const char newchar)char *pstr = string-p;while (*pstr!=0)if (*pstr=oldchar)*pstr = newchar;return;/如果套替换所有的字符 去掉return即

18、可pstr+;void changeFirstString(mystring*string, char*const poldstr, char*const pnewstr)char*pfind = findFirstString(string,poldstr);if (NULL!=pfind)deleteFirstString(string, poldstr);addString(string, pnewstr, pfind);3.文件main.c2KB下载(5)?12345678910111213141516171819202122232425262728293031323334353637

19、3839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128#include string.hvoid main1()mystring string1;/函数内部改变外部变量 需要地址initWithString(&string1,myn

20、ameisrocket);showString(&string1);printf(字符串长度:%dn, mystrlen(&string1);getchar();void main2()mystring string1;/ initWithString(&string1, cal);/ showString(&string1);/ /增加字符/ backAddChar(&string1, c);/ run(&string1);/增加字符串initWithString(&string1, note);showString(&string1);backAddString(&string1, pad

21、);showString(&string1);run(&string1);getchar();/测试字符查找函数 strchrvoid main3()mystring string1;initWithString(&string1, calaaaa);showString(&string1);/修改 将找到的一个字符a改为Achar*pstr = findFirstChar(&string1, a);*pstr = A;showString(&string1);getchar();/测试strstr mystrstrvoid main4()mystring string1;initWithString(&string1, calaaaa);showString(&string1);char *pstr = findFirstString(&string1, laz);/ printf(查找:%sn, *pstr);/errorprintf(查找:%sn, pstr);if (pstr!=NULL)*pstr = Z;showString(&string1);getchar();/删除(字符、字符串)依赖于查找void main5()mystring string1;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1