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*/