CString理解——字符串替换函数
1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>
字符串replace函数4int Replace(char *sSrc, char *sMatchStr, char *sReplaceStr)
5 {
6int StringLen;
7char caNewString[100];
8char *FindPos = strstr(sSrc, sMatchStr);//strstr(str1,str2) 函数⽤于判断字符串str2是否是str1的⼦串,如果是,则该函数返回str2在str1中⾸次出现的地址;否则,返回NULL。
9if( (!FindPos) || (!sMatchStr) )
10return -1;
11while(FindPos)
12 {
13 memset(caNewString, 0, sizeof(caNewString));
14 StringLen = FindPos - sSrc;
15
16 strncpy(caNewString, sSrc, StringLen);//char *strncpy(char *dest, const char *src, int n),把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回dest
17 strcat(caNewString, sReplaceStr);//将两个char类型连接。结果存在第⼀个参数中,返回指向第⼀个参数的指针。
18 strcat(caNewString, FindPos + strlen(sMatchStr));
19 strcpy(sSrc, caNewString);
20 FindPos = strstr(sSrc, sMatchStr);//保证替换掉所有sMatchStr
21 }
22return0;
23 }
24int main(void){
25char* s,*s1,*s2;
26
27//为每个字符串分配 1K空间
28 s=(char*)malloc(1024);
29 s1=(char*)malloc(1024);
30 s2=(char*)malloc(1024);
31if(!s || !s1 || !s2){
32 printf("内存分配失败!\n"); exit(1); }
33
34//字符串赋值
35 strcpy(s,"Turn Left!Left!");
36 strcpy(s1,"Left");
37 strcpy(s2,"Right");
38
39// 替换字符串中特征字符串为指定字符串
40 Replace(s,s1,s2);
41//打印
42 printf("%s\n",s);
43//释放分配的堆空间
44free(s);
45free(s1);
46free(s2);
47return0;
48 }
C⼩作业,通过这个深刻了解到字符串指针只是指向字符串中的第⼀个字符。同时学习了strstr,strcpy,strncpy,strcat等函数的使⽤。
1int main(void){
2char *a="bcd";
3 printf("输出字符:%c /n", *a);
4 printf("输出字符:%c /n", *(a+1) );
5 printf("输出字符串:%s /n", a); /*输出字符串,使⽤"%s";⽽且a之前不能有星号"*" */
6 }
7/*运⾏结果如下:
8输出字符:b
9输出字符:c
10输出字符串:bcd*/
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论