虽然经常用到字符串的操作,但是经常在用的时候还是要搜一下许多函数的用法,总是记不住,而且点也很杂,所以觉得有必要写下来,加强一下记忆,顺便培养一下自己写博客的习惯,话不多说,写起;
#define STRING_LEN 128
字符串的初始化:char s[STRING_LEN] = “hello”; (注:只能在字符串初始化的时候这样直接赋值)
之前有这样写:char s[STRING_LEN] = {1&2}; 最后加打印看到这样的结果,s = []; 字符串s还是空,
给字符串赋值:1: 可以使用这几个函数,strcpy,memcpy,snprintf
snprintf 函数操作的对象 不限于字符串:虽然目的对象是字符串,但是源对象可以是字符串、也可以是任意基本类型的数据。这个函数主要用来实现 (字 符串 或基本数据类型)向 字符串 的转换 功能。如果源对象是字符串,并且指定 %s 格式符,也可实现字符串拷贝功能
memcpy:是内容的拷贝,将一个内存块的内容拷贝到另一个内存块,不限于字符串,要提供拷贝的长度;
strcpy:是纯字符串的拷贝2:给字符串赋值为0:
strcpy(s, "\0"); 输出结果:s = []; //结果就是为空;
strcpy(s, "0"); 输出结果:s = [0]; //给字符串赋值为0;
测量字符串的长度:sizeof 和 strlen
sizeof的值是在编译阶段就计算好的,所以这个不能用来计算动态空间的大小
数组——编译时分配的数组空间大小;
指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4);
类型——该类型所占的空间大小;
对象——对象的实际占用空间大小;
函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。
strlen的值是函数,只有在执行时才生效,参数必须是char *, 遍历字符串,遇到"\0"结束;
比如:char s[STRING_LEN] = “hello”; sizeof(s) = STRING_LEN;//当然这样写不大妥,自己理解意思就好了; strlen(s) = 5;
字符串转整形或是整型转字符串的函数:atoi,itoa;
解析字符串时可以用到的函数:strtok、strtok_r、strcat;
查找一个字符串在另一个字符串中第一次出现的位置:strstr