首页 > 编程语言 >c++.12

c++.12

时间:2023-04-23 11:47:54浏览次数:34  
标签:__ 12 函数 scanf c++ 缓冲区 预处理 输入

复习:     1、输出缓冲区         满足哪些条件会刷新输出缓冲区:         1、遇到'\n'         2、遇到输入语句         3、缓冲区满4k         4、程序正常结束         5、fflush(stdout)     2、输入缓冲区         1、当想要输入的是整型、浮点型,但是缓冲区中有字符型,此时读取会失败,并且继续残留在缓冲区中影响后面的输入             解决:根据scanf返回值判断是否成功,失败的话清空输入缓冲区并重新输入             stdin->_IO_read_ptr = stdin->_IO_read_end;         2、使用fgets时,如果输入的字符超过size-1个时,超出部分会残留在输入缓冲区中,影响接下来的输入             解决:判断字符串的最后一个字符是否是'\n',如果不是说明缓冲区中有残留                 scanf("%*[^\n]");                 scanf("%*c");                 或者直接             stdin->_IO_read_ptr = stdin->_IO_read_end;         3、先输入整型或浮点型,然后再输入字符或字符串时,前一次可能会残留一个'\n',会影响后面字符或字符串的输入             字符:             scanf(" %c",&ch);             字符串:             //scanf("%d ",&num);             scanf("%*c");             gets(str);     3、常考的字符串处理函数         strlen\strcpy\strcat\strcmp         memcpy\memmove\memset\memcmp(按字节比较)     4、sprintf\sscanf         sprintf:把各种类型数据转换成字符串         sscanf:从字符串中解析各种类型的数据到变量中
-------------------- 通讯录项目:     姓名、性别、电话,最多存储50个联系人     功能:         1、添加新联系人         2、按名字删除联系人         3、按名字修改联系人         4、查找联系人,名字或电话,支持模糊查询         5、显示所有联系人信息         6、退出系统         预处理指令:     程序员所编写的代码不能被真正的编译器所编译,需要先经过一段程序翻译一下     翻译的过程称为预处理,负责翻译的程序称为预处理器,被翻译的语句叫做预处理指令,以#开头的都是预处理指令
    查看预处理的结果:         gcc -E code.c   把预处理的结果显示到终端         gcc -E code.c -o code.i 把预处理的结果存储到.i预处理文件     预处理指令的分类:     #include    头文件导入(拷贝)         #include <> 从系统指定路径查找头文件         #include "" 从当前工作路径查找,找不到再从系统指定路径查找         -I path 可以指定要查找的路径path         还可以通过设置环境变量来指定路径         #define 定义宏         宏常量:             #define MAX 50             优点:提高代码可扩展性、提高可读性、提高了安全性、还可以与case配合             注意:定义宏常量不要加分号,一般宏名全部大写             预定义好的宏常量:                 printf("%s\n",__func__);    获取函数名                 printf("%s\n",__FILE__);    获取文件名                 printf("%d\n",__LINE__);    获取行号                 printf("%s\n",__DATE__);    获取日期                 printf("%s\n",__TIME__);    获取时间         宏函数:             是带参数的宏             不是真正意义的函数,没有发生传参,也没有返回值,也不会去检查参数的类型             #define SUM(a,b) a+b             1、先把在代码中出现了宏函数的位置,替换成宏函数后面的语句             2、再把代码中使用的参数替换成调用者的参数             注意:宏的内容必须保证在同一行,如果要换行,要在每一行的末尾添加续行符 \                 宏函数的二义性:             由于宏函数代码位置、附近的值、参数各种原因的影响,会导致宏函数有不同的解释,这叫做宏的二义性             如何避免宏的二义性:                 每个参数都加小括号,整体也叫小括号,不要在宏函数的参数中使用自变运算符         作业:实现一个交换两个变量值的宏函数,尽可能通用,能写几个,分析每一种的优劣



标签:__,12,函数,scanf,c++,缓冲区,预处理,输入
From: https://www.cnblogs.com/mrlinan/p/17346025.html

相关文章

  • c++ .11
    复习:  堆内存管理:    C语言没有管理堆内存的语句,只能使用标准库的函数    #include<stdlib.h>    void*malloc(size_tsize);    注意:void*在C++编译器中是不能自动转换成其它类型的指针,如果想让代码也在C++编译器中兼容,需要强制类......
  • c++.13
    预处理指令:  #define  常见笔试面试题:  1、简述#define与typedef的区别:    如果是普通类型,它们在功能上无任何区别,但本质不同,一个是代码替换,一个是类型重定义    #defineINTPint*      INTPp1,p2,p3; //p1是指针p2p3是int......
  • C与C++的区别(程序上)
    一.头文件上  1.为什么c++语言的头文件上可以使用"stdio.h"?  答:因为c++的标准库已经帮我们包含了c语言的标准库,因此c++也可以实现c语言能实现大多功能。例如"iostream"是c++的输入输出流头文件,"stdio.h"是c语言的输入输出流头文件,当在c++语言中调用"stdio.h"后便可以在c++......
  • C++.14
    结构:  结构是由程序员自己设计的一种数据类型,用于描述一种事物的各项数据,由若干个不同的基础类型组成  设计:  struct结构体类型名  {    类型名成员名;    ...  };  定义:    struct结构体类型名结构体变量名; ......
  • c++第十天
    指针复习:  什么是指针:    数据类型定义指针变量整型内存编号访问对应内存  为什么使用指针:    1、函数之间共享变量      输入、输出    2、提高传参效率      指针变量4\8字节    3、使用堆内存时......
  • C++ - 多线程之初识多线程
    1.认识多线程传统的C++(C++11之前)中并没有引入线程这个概念,在C++11出来之前,如果我们想要在C++中实现多线程,需要借助操作系统平台提供的API,比如Linux的<pthread.h>,或者windows下的<windows.h>。C++11提供了语言层面上的多线程,包含在头文件<thread>中。它解决了跨平台的问题,提供......
  • Effective Modern C++ 学习笔记
    闲话今天是2023年4月23日,俺开始正式学习面试相关内容了。打算先从EffectiveModernC++这本书开始学起,作为日后代码风格、习惯的指导。不过俺没有一起学习的小伙伴,qwq。与ICPC切割之后,内心都轻松了许多。小醉一宿之后还是十分愉悦的。欢迎加入C++学习群:https://j......
  • 【HMS Core】视频编辑服务报错method not allowed 20124、Parameter error. Error: ap
    【关键字】视频编辑服务、报错 【问题背景】问题1:集成视频剪辑服务,在原子能力SDK的素材管理时,提示Parametererror.Error:appIdisinvalid.问题2:视频编辑sdkdemo的所有功能提示methodnotallowed20124,后台已申请动态照片、一键微笑、AI着色、一键动效、一键染发的功能......
  • 基于C++控制台的吃豆人小游戏
    访问【WRITE-BUG数字空间】_[内附完整源码和文档]玩家目标是吃掉所有豆豆,途中,若玩家撞到怪兽则游戏结束。游戏中存在超级豆子,吃到后,所有怪兽静止,且玩家进入无敌状态(可撞怪兽使之回到初始位置)。玩家可使用键盘方向键进行选择、控制移动,回车键确定,Esc键返回,空格键暂停。控制台小游戏......
  • C++创建对象时,有哪些内容?
    数据成员在类的作用域中,数据成员类似全局变量,而成员函数是操作数据成员的函数成员函数内联函数介绍目的:为了提高运行时的效率注意:在内联函数体中不要有复杂结构(如循环语句和switch语句)在类中声明内敛函数的方式:将函数体放在类的声明中使用inline关键词举例classPoin......