1、字符串截取
对于字符串char *tar = "Mine_tar1_tar2",想要获取tar1和tar2,可使用strstr或strchr获取目标字符(串)的位置,再利用strcpy,第三个参数设置截取长度。
另外strncmp的第三个参数表示比较俩字符串前n位
2、初始化及内存分配
很多字符串在用strcpy拷贝时会报错或者直接赋值时会出现乱码,都是因为没有初始化。
char *str = (char *)malloc(sizeof(char));
memset(str,0,sizeof(char));即可
有时在编译时并不知道数组的长度,可以这样动态分配数组
一个自定义结构体的初始化
MYSTUCT mystr;
memset(&mystr,0,sizeof(mystr));
和下面皆可
MYSTUCT *mystr;
memset(mystr,0,sizeof(*mystr));
如果是二维的数组,在初始化时能否直接将声明的二维数组的数组名传递给一个指针呢?编译后就会发现是有问题的,一维数组的数组名即为指向该数组的指针,该指针值保存了数组存放在内存中的一块连续区域的起始地址,所以数组的下标就表示了这片内存区域的某存储区相对于起始地址的偏移量;而二维数组在概念上远比一维数组复杂,或者说二维数组以一种晦涩的方式构建在一维数组之上。
之前在C++博客里看见过一篇文章,记了一点笔记如下: