C:字符串、字符串指针、字符串函数 目录 一、C字符串(字符数组)二、字符串常量指针(指向字符串的指针)!!!三、C字符串函数strlen(str)strcat(s1, s2);strtok()strcpy(s1, s2)strcmp(s1, s2)strchr(s1, ch);strstr(s1, s2);strlwr(str); // lowerstrupr(str); // upper 一、C字符串(字符数组) 在 C 语言中,字符串实际上是使用 空字符 0 结尾的 一维字符数组。因此,0 是用于标记字符串的结束。 空字符()又称结束符,缩写 NUL,是一个数值为 0 的控制字符,0 是转义字符,意思是告诉编译器,这不是字符 0,而是 空字符。 C 编译器会在初始化数组时,自动把 0 放在字符串的末尾。 每个字符用一个地址来存储。
———— 字符数组 只有在定义时才可一次性赋值,一旦定义完就只能一个个赋值,如: 二、字符串常量指针(指向字符串的指针)!!! 常量指针:指向常量的指针 那这两种写法有什么区别么? 在内存中存储区域不同,字符数组 存储在 全局数据区或栈区,字符串指针 形式字符串存储在 常量区。【全局数据区和栈区 的字符串有 读取和写入 的权限,而 常量区 字符串 只有读取权限,没有写入权限。这就导致了 字符数组 在定义后可读取和修改每个字符;而 字符串指针 一旦定义后便不可修改,可整体赋值(更改指针、而非通过指针更改值)】 (pstr+i)、pstr[i]、(str+i) 、str[i] 均可正常使用; ———— 2.1 字符数组、字符串指针,在for循环中重复创建的地址不同; 三、C字符串函数 strlen(str) strlen 的工作原理:只要给我个地址,那么strlen就可以 向后数 字符,至到遇到 ‘0’ 就会停止。 这个地址就是字符串中,其中一个字符的地址;strlen() 接收地址后,开始 向后数 字符,至到遇到 ‘0’ 停止。 测试用例: 注意:C语言中,一般在用包围字符串下自动末尾添加, 如:;逐个赋值不会自动添加 ———— strcat(s1, s2); 连接字符串 s2 到字符串 s1 的末尾。 将把 s2 连接到 s1 后面,并删除原来 s1 最后的结束标志 。这意味着,s1 必须足够长,要能够同时容纳 s1和 s2,否则会越界(超出范围)。 函数的声明: 提问: ———— strtok() C/C++字符串函数strtok()详解 参数:str:待分割的字符串(c-string);delimiters:分割符字符串 当在参数 s 的字符串中发现参数 delimiters 中包涵的分割字符时,则会将该字符改为 字符。在第一次调用时, 必需给予参数字符串,往后的调用则将参数 设置成 。 需要注意的是,使用该函数进行字符串分割时,会破坏被分解字符串的完整,调用前和调用后的 已经不一样了。第一次分割之后,原字符串 是分割完成之后的第一个字符串,剩余的字符串存储在一个静态变量中,因此多线程同时访问该静态变量时,则会出现错误。
———— strcpy(s1, s2) 复制字符串 s2 到字符串 s1。 会把 s2 中的字符串拷贝到 s1 中,字符串结束标志 也一同拷贝。 ———— strcmp(s1, s2) 如果 s1 和 s2 是相同的,则返回 0; 如果 s1<s2 则返回小于 0; 如果 s1>s2 则返回大于 0。 ———— strchr(s1, ch); 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。 ———— strstr(s1, s2); 返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置; 查找失败返回NULL ———— strlwr(str); // lower 将字符串中的大写字母转换成小写字母。 ———— strupr(str); // upper 将字符串中的小写字母转换成大写字母。 参考链接: 字符串函数讲解 【C语言】字符串函数「超详细」 C语言——字符串指针篇
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/52606.html