传智播客_C提高讲义 下载本文

内容发布更新时间 : 2024/12/23 23:59:22星期一 下面是文章的全部内容请认真阅读。

欢迎阅读 char *z=str3; /*指针z指向数组str3*/ while(*z++=*x++); z--; /*去掉串尾结束标志*/ while(*z++=*y++); z=str3; /*将str3地址赋给指针变量z*/ note: return(z); } Main () { Char *p = str_cnct(“abcd”, “ddeee”); If (p != NULL) {Free(p) ;p = NULL}//yezhizhen } int getKeyByValude(char *keyvaluebuf, char *keybuf, char *valuebuf, int * valuebuflen) { int result = 0; char *getbuf = new char[100]; memset(getbuf, 0, sizeof(getbuf)); char *trimbuf = new char[100]; memset(trimbuf, 0, sizeof(trimbuf)); int destlen = strlen(keyvaluebuf); if (keybuf == NULL || keyvaluebuf == NULL || valuebuf == NULL/* || valuebuflen == NULL*/) { result = -1; return result; } if (strstr(keyvaluebuf, keybuf) == NULL) { result = -1; return result; } else { for (int i = 0; i < destlen; i++) { if (*keyvaluebuf == '=') { *keyvaluebuf++; break; } keyvaluebuf++; } while(*keyvaluebuf != '\\0') { 欢迎阅读

欢迎阅读 } *valuebuf = *keyvaluebuf; valuebuf++; keyvaluebuf++; } *valuebuf = '\\0'; } int len = strlen(valuebuf); return result; //char *p = \字符串中\出现的次数。 //要求你 自己写一个函数接口,并且写出测试用例。 //完成功能为:求出“abcd”字串出现的次数 //输入: int getSubCount(char *str, char *substr, int * mycount) { int ret = 0; char *p = str; char *sub = substr; int count = 0; if (str==NULL || substr==NULL || mycount == NULL) { ret = -1; return ret; } //char *p = \ //char *p2 = NULL; //p2 = p; do { p = strstr(p, sub); if (p!= NULL) { count++; //++后缀操作符优先级高,所以先执行*p操作 然后地址++ *mycount++; p = p + strlen(sub); } else { break; } } while (*p != '\\0'); //printf(\ //mycount是实参的地址 *(实参的地址) 欢迎阅读

欢迎阅读 *mycount = count; return ret; } 05 看图 06重复的错误何时休 #include \#include \#include \void copy_str21_modify(char *from, char *to) { int i = 0; if (*from != '\\0') { printf(\ } for (; *from!='\\0'; from++, to++) { *to = *from; } *to = '\\0'; printf(\ printf(\} void copy_str_err(char *from, char *to) { for (; *from!='\\0'; from++, to++) { *to = *from; } *to = '\\0'; printf(\ printf(\} //字符串逆序 int mainaaaa() { char buf1[100] = \ char to[100]; copy_str_err(buf1, to); } //越界场景 int main00000000000() { char from[5] = \欢迎阅读

欢迎阅读 printf(\ getchar(); return 0; } 3.7const专题 1、const基础知识(用法、含义、好处、扩展) int main() { const int a; // int const b; const char *c; char * const d; char buf[100] const char * const e ; return 0; } Int func1(const ) 初级理解:const是定义常量==》const意味着只读 含义: //第一个第二个意思一样 代表一个常整形数 //第三个 c是一个指向常整形数的指针(所指向的内存数据不能被修改,但是本身可以修改) //第四个 d 常指针(指针变量不能被修改,但是它所指向内存空间可以被修改) //第五个 e一个指向常整形的常指针(指针和它所指向的内存空间,均不能被修改) Const好处 //合理的利用const, //1指针做函数参数,可以有效的提高代码可读性,减少bug; //2清楚的分清参数的输入和输出特性 结论: //指针变量和它所指向的内存空间变量,是两个不同的概念。。。。。。 //看const 是放在*的左边还是右边 看const是修饰指针变量,还是修饰所指向的内存空变量 3.8考试强化训练 1、有一个字符串开头或结尾含有n个空格(” abcdefgdddd ”),欲去掉前后空格,返回一个新字符串。 要求1:请自己定义一个接口(函数),并实现功能;70分 要求2:编写测试用例。30分 int trimSpace(char *inbuf, char *outbuf); 2、有一个字符串”1a2b3d4z”,; 要求写一个函数实现如下功能,

功能1:把偶数位字符挑选出来,组成一个字符串1。valude;20分 功能2:把奇数位字符挑选出来,组成一个字符串2,valude 20

功能3:把字符串1和字符串2,通过函数参数,传送给main,并打印。 功能4:主函数能测试通过。

int getStr1Str2(char *souce, char *buf1, char *buf2); 欢迎阅读

欢迎阅读

3、键值对(”key = valude”)字符串,在开发中经常使用;

要求1:请自己定义一个接口,实现根据key获取valude;40分 要求2:编写测试用例。30分

要求3:键值对中间可能有n多空格,请去除空格30分

注意:键值对字符串格式可能如下: “key1 = valude1”

“key2 = valude2 “key3 = valude3”

“key4 = valude4” “key5 = “ “key6 =“ “key7 = “ int getKeyByValude(char *keyvaluebuf, char *keybuf, char *valuebuf, int * valuebuflen); int main() { getKeyByValude(“key1 = valude1”, ” key1”, buf, &len); } 4二级指针和多级指针专题 4.1二级指针的三种内存模型 4.1.1二级指针输入和输出模型 4.1.2二级指针三种内存模型 思路:先把二级指针的所用内存模型练一遍,然后我们再探究它的内存模型及本质。 工程开发中二级指针的典型用法 二级指针的第一种内存模型 二级指针的第二种内存模型 二级指针的第三种内存模型 4.1.3强化两个辅助指针变量挖字符串 思想分享:强化训练到极致 眼高手低 练习到极致 高屋建瓴 一看都会 一练习都错 眼高手低 练习到极致 高屋建瓴 4.1.4二级指针内存模型建立 void main2() { int i = 0; //指针数组 char * p1[] = {\ //二维数组 char p2[3][4] = {\ //手工二维内存 char **p3 = (char **)malloc(3 * sizeof(char *)); //int array[3]; for (i=0; i<3; i++) { p3[i] = (char *)malloc(10*sizeof(char)); //char buf[10] sprintf(p3[i], \ } 欢迎阅读