轻松入门 实战应用 技术交流群387220290
} 修改字符常量结果会如何 Char *p = “abcdefg”; Modify p[1] = ‘1’; 04字符串操作易错 //你往哪里输入数据 int main() { char buf[2000]; char *p = NULL; p = buf; printf(\请输入一个字符串:\ scanf(\ printf(\ getchar(); getchar(); return 0; } 3.3库函数api
快速的上手api是一种能力! 建立正确的程序运行示意图,(内存四区及函数调用堆栈图)是根本保障!! int main31() { char buf1[100]; char buf2[200]; strcpy(buf1, \ printf(\ getchar(); return 0; } int main32() { char *string1 = \ char *string2 = \ int length; //在字符str1中查找,与str2中任意字符有公共交集的位置 length = strcspn(string1, string2); printf(\ 轻松入门 实战应用 技术交流群387220290
getchar(); return 0; } //strnset函数有错误 //测试程序修改如下 int main33() { char string[] = \ char letter = 'x'; printf(\ strnset(string, letter, 13); printf(\ strnset: %s\\n\ getchar(); return 0; } int main44() { char *string1 = \ char *string2 = \ char *ptr; ptr = strpbrk(string1, string2); if (ptr) printf(\ else printf(\ getchar(); return 0; } int main55() { char input[16] = \ char *p; /* strtok places a NULL terminator in front of the token, if found */ p = strtok(input, \ if (p) printf(\ /* A second call to strtok using a NULL as the first parameter returns a pointer to the character following the token */ p = strtok(NULL, \ 轻松入门 实战应用 技术交流群387220290
if (p) printf(\ getchar(); return 0; } //典型的状态函数 int main() { char str[] = \ //char delims[] = \ char *delims = \ char *result = NULL; result = strtok( str, delims ); while( result != NULL ) { printf( \ result = strtok( NULL, delims ); } printf(\----------==========----------\\n\ printf(\ getchar(); return 0; } 3.4字符串相关一级指针内存模型
void main() {
char buf[20]= \; char buf2[] = \; char *p1 = \;
char *p2 = malloc(100); strcpy(p2, \);
system(\); return ; }
轻松入门 实战应用 技术交流群387220290
3.5项目开发字符串模型
strstr-whiledowhile模型
轻松入门 实战应用 技术交流群387220290
两头堵模型
字符串反转模型
3.6一级指针(char *)易错模型分析
01char *(字符串)做函数参数出错模型分析
建立一个思想:是主调函数分配内存,还是被调用函数分配内存; //不要相信,主调函数给你传的内存空间,你可以写。。。。。。一级指针你懂了。 但是二级指针,你就不一定懂。。。抛出。。。。。。。。。 void copy_str21(char *from, char *to) { if (*NULL = '\\0' || *to!=’\\0’) { Printf(“func copy_str21() err\\n”); return;