| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 指针练习、字符串、字符串函数 -> 正文阅读 |
|
[C++知识库]指针练习、字符串、字符串函数 |
练习:
?输出结果: ?int *p_num = NULL;这条声明语句里*号是用来表示p_num的类型是指针类型 *p_num = num;这条语句里*号表示p_num指针捆绑的存储区。这句语句表示我们把num变量里面的数字赋值给p_num指针里捆绑的存储区里。 ?1.C语言规定所有文字信息必须记录在一组连续的字符类型存储区里。 ?所有文字信息必须用'\0'字符做结尾,这个字符的ASCII码就是0 符合以上两个特征的内容叫做字符串。 字符串里'\0'字符前面的部分是有效文字信息。 所有的字符串都可以采用字符类型指针表示。 ?字符串字面值是一种字符串,例如"abc"、"^&*^" 编译器在边缘的时候自动在字符串字面值的末尾加上'\0'字符 编译器在编译的时候会把字符串字面值替换成第一个字符所在存储区的地址。? ?例子: 输出结果: ? ?字符串字面值的内容在程序执行过程中不可以改变。 ?例子: ?运行结果:运行出错 程序里内容一样的字符串字面值在内存里其实是同一个。 例子: ?运行结果:abc两个字符串的地址一样? 多个并列的字符串字面值会被自动合并成一个。 例子: 运行结果:"abc"与"ab""c"的地址一样? 2.字符数组也可以作为字符串使用。? 只有包含'\0'字符的字符数组才可以作为字符串使用。? ?可以使用字符串字面值对字符数组进行初始化(计算机会把字符串字面值里的'\0'字符也初始化到字符数组里) ?例子: 运行结果:char str[]="xyz"; str数组的sizeof是4 ? ?字符数组里字符串的内容可以修改。 ?在printf函数调用语句里使用%s做占位符,可以把字符串里所有的文字显示在屏幕上 ?例子: ?运行结果:语句 printf("%s\n","abcdef");? ?输出结果为 abcdef ?不可以使用操作符操作字符串 ?C语言里提供一组标准函数用来操作字符串。 ?为了使用这些标准函数需要包含string.h头文件
?例子:strlen ?运行结果: ?例子:strcat? 运行结果: ?例子:strncat ?运行结果:strncat(str,"sdagsdgsd",2);里面的2表示插入字符的数量为2即sd ?例子:strcmp 运行结果: ?例子:strncmp 运行结果: ? ?例子:strcpy ?运行结果: ? 例子:strncpy 输出结果:strncpy(str,"abcdefiopsadg",2);将字符串"abcdefiopsadg"的前面2个字符复制到str字符里。所以输出abz ?例子:memset 输出结果:memset(str,'h',9);这条语句就是把复制9个h字符到str字符数组里 ?例子:strstr ?运行结果:strstr("abcdefghijklmn","def");以字符串%s显示就是从def字符开始显示 ?以下两个字符串相关的函数使用的时候不需要包含string.h头文件
?例子:sprintf 输出结果:? 例子:sscanf ? ?运行结果: ?以下两个字符串相关的函数可以把字符串里的数字转换成数字类型 为了使用这个两个函数需要包含stdlib.h头文件
例子:atoi? 运行结果:?例子:atof 运行结果: ?2.在scanf函数调用语句里使用%s做占位符可以从键盘得到一个字符串并记录到字符数组里。这种方法有可能造成严重的错误。 ?例子: ?运行结果: 如果在输入字符串中间加上空格 ,就会丢失空格后面的字符串: ?当输入字符串超过数组长度,程序运行就会崩溃:? ?3.fgets函数也可以从键盘得到一个字符串,并记录到字符数组里,这个函数可以避免scanf函数的问题。 ?这个函数有三个参数:fgets(第一个参数;第二个参数;第三个参数); 1.数组名称 2.数组里存储区个数 3.用stdin表示键盘 如果输入的内容不能把数组充满就会把用户最后输入的换行字符当作'\n'字符也读到数组里。 如果输入的内容过多就无法处理的字符都留在输入缓冲区里等下次读取。 ?例子: 运行结果: fgets函数的问题当 我们输完字符串后会按回车字符,回车字符也会保存到字符串中,其实输入了4个字符 ? 例子:?如果输入的内容过多就无法处理的字符都留在输入缓冲区里等下次读取。 ? 运行结果: ?在每次使用fgets函数从键盘得到字符串以后,都应该删除输入缓冲区里可能存在的多余数据。 只有确定输入缓冲区里包含多余数据的时候才应该去删除这些多余数据。 可以使用以下两句语句进行删除: scanf("%*[z^\n]"); scanf("%*c); 例子: 改造上面的语句:当输入字符数组到第九个字符和当输入'\n'字符时才删除 练习:
?运行结果: ?练习:
运行结果: |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/11 12:38:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |