| |
|
开发:
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语言(11) -> 正文阅读 |
|
[C++知识库]从零开始学C语言(11) |
复习: 字符串: ????由字符组成的串型结构,'\0'是它的结束标志 ????存在形式: ????????字符数组:栈内存?可以修改?要为'\0'预留位置 ????????字符串字面值:代码段?只读?修改就会产生段错误?末尾隐藏一个'\0'?地址 ????????????const?char*?str?=?"hehe"; ????????????sizeof("hehe")??结果是5?末尾有'\0' ????????????sizeof(str)?????结果是4?str是指针 ???????? ????????一般使用字符串字面值给字符数组初始化 ????????????char?str[]?=?"hehe"; ????????????建议不设置数组长度 ????输入: ????????char?str[256]?=?{}; ????????scanf("%s",str);????不能输入带空格的字符串 ????????gets(str);???可接空格,但不限制长度,有隐患 ????????fgets(str,size,stdin);?可设置最多接收size-1个字符(为\0预留位置),如果输入的字符不足size-1会把'\n'一起接收,如果超出就丢弃超出部分 ????输出: ????????printf("%s",str); ????????puts(str);??会自动添加换行符 ???? 输出缓冲区: ????程序并不会立即把输出的数据显示到屏幕上,而是先存储在输出缓冲区中,当满足一定条件时才显示出来。 ????????1、遇到\n ????????2、程序结束 ????????3、遇到输入语句 ????????4、当缓冲区满4k时 ????????5、fflush(stdout)?手动刷新 ????缓冲区机制可以提高数据的读写速度,并且可以让低速的输入输出设备与高速的CPU之间协调工作 输入缓冲区: ????程序并不会立即获取屏幕上输入的数据,而是按下回车键后程序才从输入缓冲区读取数据 ???? ????1、当需要读取的是整型或者浮点型时,而输入缓冲区中的数据是字符或符号时,此时读取会失败,数据会残留在输入缓冲区中,就会影响接下来的所有数据的读取 ????2、fgets可以指定读取size-1个字符,如果有多余的会残留在输入缓冲区中,影响下一次输入 ????3、当先输入整型、浮点型数据,再紧接着输入字符、字符串时,前一次残留的'\n'或空格,会影响字符、字符串的输入 ???????? ????解决3:?%c前面加空格 ????????????scanf("?%c",&ch)? ????解决2: ????????方法一: ????????必须确认输入缓冲区中有垃圾数据时,才能去读取丢弃输入缓冲区的垃圾数据,否则程序会停下来等待缓冲区中有一个\n ????????????scanf("%*[^\n]"); ????????????????表示从缓冲区中接收任意字符并丢弃,只要不是\n就一直进行,遇到\n才停下 ????????????scanf("%*c"); ????????????????丢弃任意字符,把\n丢掉 ????????方法二: ????????????借助缓冲区的位置指针移动到缓冲区末尾,实现清理缓冲区的效果 ????????????只能在Linux系统下使用 ????????????stdin->_IO_read_ptr?=?stdin->_IO_read_end; ????解决1: ????????借助scanf返回值判断是否接收成功,如果接收过程有失败情况,可以先清理输入缓冲区,再重新循环接收数据,直到完全接收成功为止 字符串相关的常用操作: ????#include?<string.h> ????size_t?strlen(const?char?*s); ????功能:计算字符串长度,不包括'\0' ????注意:sizeof?和?strlen?的区别 ????char?*strcpy(char?*dest,?const?char?*src); ????功能:把src拷贝到dest,相当于给dest赋值?= ????返回值:返回dest,链式调用 ????char?*strcat(char?*dest,?const?char?*src); ????功能:把字符串src追加到dest的后面?相当于?+= ????返回值:返回dest,链式调用 ????int?strcmp(const?char?*s1,?const?char?*s2); ????功能:比较两个字符串的大小,按照字典序比较,谁在前面谁小,只要比较出结果,立即返回,后面的不再比较 ????返回值: ????????s1?>?s2?正数 ????????s1?<?s2?负数 ????????s1?==?s2?0 ???char?*strncpy(char?*dest,const?char?*src,size_t?n); ????功能:把src前n个字符拷贝给dest ???char?*strncat(char?*dest,const?char?*src,size_t?n); ????功能:把src前n个字符追加到dest后面 ??int?strncmp(const?char?*s1,const?char?*s2,size_t?n); ????功能:比较前n个字符的大小 ????练习: ????自己重写实现strlen\strcpy\strcat\strcmp四个函数 ????int?atoi(const?char?*nptr); ????功能:字符串转int类型 ????long?atol(const?char?*nptr); ????功能:字符串转long类型 ????long?long?atoll(const?char?*nptr); ????功能:字符串转long?long类型 ????double?atof(const?char?*nptr); ????功能:字符串转double类型 ????char?*strstr(const?char?*haystack,const?char?*needle); ????功能:查找haystack,是否存在needle ????返回值:needle首次在haystack中出现的位置,如果找不到返回NULL ????char?*strchr(const?char?*s,?int?c); ????功能:查找s中是否有字符c ????返回值:c在s中首次出现的位置,不存在返回NULL ????int?sprintf(char?*str,?const?char?*format,...); ????字符串拼接 ????功能:把各种类型数据输出到str中 ????返回值:拼接后str的长度 ???int?sscanf(const?char?*str,const?char?*format,...); ????功能:从str中读取解析各种类型的数据 ????返回值:成功读取到的变量的个数 ????void?*memcpy(void?*dest,?const?void?*src,?size_t?n); ????功能:从src位置拷贝n个字节到dest中 ???? ????int?memcmp(const?void?*s1,?const?void?*s2,?size_t?n); 通讯录: ????姓名、性别、电话,最多存储50个联系人 ????功能: ????????1、添加联系人 ????????2、按名字删除联系人 ????????3、按名字修改联系人信息 ????????4、查找联系人,姓名、电话,支持模糊查找 ????????5、显示所有联系人信息
|
|
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年2日历 | -2025/2/5 20:14:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |