IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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语言 --- 基本输入输出 -> 正文阅读

[C++知识库]c语言 --- 基本输入输出

printf 函数

  • #include <stdio.h> C语言标准输入输出头文件

  • printf做原样打印,把要打印的东西作为参数

  • 代码的行数不影响显示结果的行数

//函数
//printf("要打印的内容");
//一行的形式
printf("ILoveYou");
printf("ILoveYou""IMissYou""HaHa");
//多行的形式 每行都需要有"" 代码格式分为多行 但实际输出并没有多行
printf("ILoveYou"
"IMissYou"
"HaHa");
/*输出*/
ILoveYouILoveYouIMissYouHaHa

printf("ILoveYou\n"
"IMissYou\n"
"HaHa\n");
/*输出*/
ILoveYou
ILoveYou
IMissYouHaHa

printf("ILove\r123");    //打印123时回到当前行首,当前行前面有东西,采用覆盖的方式
/*输出*/
123 e    //123'\0'e      //有一个不可见字符'\0'字符串结束标记 打印出来没有任何效果
  • 转义字符 - - - > 达到打印的格式调整

常用的转义字符效果
\n换行
\r换行(回到当前行首),判断按键是否是回车键
\t水平制表

?制表的原理: 通过控制数据的输出宽度,不足8位填充空格,超过8位以16位制表,1个 ' \t ' 8位两个' \t '16位

?汉字:占用两个位置

?普通字符:占用一个位置

printf("姓名\t年龄\t编号\t");
printf("大白\t18\t1001\t");

printf("姓名\t\t年龄\t编号\t");
printf("12345678\t18\t1001\t");

/*输出*/
姓名    年龄    编号
大白     18     1001

姓名        年龄    编号
12345678     18     1001

打印特殊符号

  • 通过\加上特殊符号打印符号

//printf("""); 报错
printf("\"\t\'");
printf("\\");    //两个\打印一个'\' 不能是3个'\' 会和注释混在一起
printf("%%");    //特殊符号和转义字符无关 两个%打印一个%
/*输出*/
"    '\%

数据的输出

  • 格式控制字符: 占位符

  • 不同的数据类型有不同的控制字符

  • 数据的顺序必须要和占位符的顺序一致

int  %d
char %c
float %f
double %lf
字符串  %s 指针类型
unsigned int %u
printf("a=%d,b=%c",1,'A');
a=%d,b=%c
   1,  'A'
a=1,b=A
//一般情况: 占位符的个数是要和后面数据个数相同
printf("整数:%d,字符:%c,字符串:%s",1,'a',"iloveyou");
int iNum = 3;
char cNUm = 'N';
printf("iNUm = %d,cNum = %c\n",iNum,cNum);    

/*输出*/

整数:1,字符:a,字符串:iloveyou
iNUm = 3,cNum = N
  • 浮点型的格式问题

%+a.bf    
%-a.blf
a:输出数据的宽度,不足补空格
b:小数位
+: 右对齐 ,不写,默认是右对齐
-: 左对齐
printf("%3.3lf\n",1.3345);    //有效小数位数是3位 最后一位5没有打印,四舍五入往前进了一位
printf("%10.3lf\n",1.3345);   //输出数据的宽度是10位

//通过输出数据的宽度 自己制表
printf("%-10s%-10s%-10s\n","姓名","年龄","编号");    
printf("%-10s%-10s%-10s\n", "12345678","18","1001");

/*输出*/

1.335      
     1.335 
姓名      年龄      编号
12345678  18        1001

scanf函数

  • scanf 基本用法

    • &(shif+7键按出来)取地址符:取变量的地址- - ->把数据放到变量的内存中去,要知道变量在内存中的位置

    • scanf 工作原理

      • scanf("格式控制字符","变量的地址");

      • 输入的格式控制字符不需要转义字符,不需要精度控制

      • 输入的数据放在输入缓冲区stdin中,scanf 函数根据格式控制字符去输入缓冲区中拿数据

      • error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead

        • 项目属性-->SDL改为否

  • 字符输入

    • 清除缓冲区---> 在字符或者字符串输入前 做了输入,就需要清除缓冲区

  • scanf_s: vs给 scanf 做的增强版本

    • 输入数字类是没什么区别

    • 输入字符类或者字符串必须要加入长度

    • 其他编译器没有 scanf_s 只有 scanf

  • scanf一次输入多个不同类型的数据

#include <stdio.h>
int main() 
{
	//No.4 不同数据类型输入
	//数字和字符组合在一起
	int iNum;
	char xNum;
	double dNum;
	printf("input int,char,double:");
	//scanf自动区分数据,不需要人为区分:字符和浮点数之间不需要加空格
	scanf("%d %c%lf", &iNum, &xNum, &dNum);    //1 A 3.13为了避免数据出错强制加一个空格
	printf("iNum=%d,xNum=%c,dNum=%lf\n", iNum, xNum, dNum);
	printf("input int,char,double:");          //输入数据的格式必须是这个格式
	//%d,%c,%lf 
	//scanf("%d,%c,%lf", &iNum, &xNum, &dNum);
	//printf("iNum=%d,xNum=%c,dNum=%lf\n", iNum, xNum, dNum);
	scanf_s("%d %c%lf", &iNum, &xNum,1, &dNum);//多个字符输入用scanf_s
	printf("iNum=%d,xNum=%c,dNum=%lf\n", iNum, xNum, dNum);

	//No.1 输入单个数据
	printf("input a num:");
	//习惯:定义变量的时候给变量初始化(赋初始值)
	int num = 0;              //定义变量赋值为0
	int result = 0;           //返回值被忽略 scanf的返回值:输入数据的成功个数
	result=scanf("%d", &num); //等待键盘输入
	printf("num=%d\n", num);
	//No.2 输入多个数据
	int a, b;
	printf("input a,b:");
	result=scanf("%d%d", &a, &b); //格式控制字符中没有空格但是可以输入空格|或者用回车当作数据的间隔|在字符输入时会有影响
	printf("a=%d,b=%d\n",a,b);
	//scanf("%d\n", &a);    没有这种写法
	float fNum;
	//scanf("%.3f", &fNum); 没有这种写法
	//No.3 字符输入
	char cNum;
	char x;
	printf("input a char:");
	//getchar();			    //常用
	scanf("%c", &x);			//接收字符再做输入 清除缓冲区的\n x等于'\n'
	//fflush(stdin);			//被淘汰
	//setbuf(stdin);			//会影响文件操作
	//这个两个等效上面scanf的作用
	scanf("%c", &cNum);
	printf("cNum=%c\n", cNum);
	printf("input a char:");
	scanf("%c", &x);            //没有停在字符输入的位置--->'\n'直接给了字符
	scanf_s("%c", &cNum, 1);	//长度一般用变量能够存储的数据长度--->能够存储的数据长度
	printf("cNum=%c\n", cNum);
	//字符串--字符数组;
	return 0;
}
/*输出*/
     
input int,char,double:1    //多个输入中间有字符导致出错的原因:把空格当做字符去处理
A
1.23
iNum=1,xNum=A,dNum=1.230000
input int,char,double:1
e
1.34
iNum=1,xNum=e,dNum=1.340000
input a num:3
num=3
input a,b:2
4
a=2,b=4
input a char:A
cNum=A
input a char:C
cNum=C

字符处理函数

getchar函数

  • 输入一个字符 ,getchar() 表示输入的字符

  • #include <stdio.h>

putchar函数

  • 输出一个字符 ,putchar('A') 要输出的字符放在括号中

  • 一旦字符输入前做了输入,就一定要做清空缓冲区处理,否则会存在跳过现象

  • #include <stdio.h>

getch函数

  • 输入一个字符,getch() 表示输入的字符,不需要回车确认输入

  • #include <conio.h>

  • 在vs中,getch()要改为 _getch()

#include <stdio.h>
#include <conio.h>
int main() 
{
	//NO.2 getch
	int userKey = 0;
	userKey = _getch();	//不需要回车确认,输入完就可以做交互
	//想象玩游戏上下左右键的处理
	putchar(userKey);
	//scanf_s scanf,getchar 都需要回车确认输入

	//No.1  getchar() putchar()
	int number;
	printf("input a number:");
	scanf_s("%d", &number);
	printf("number=%d\n", number);
	int iNum;
	printf("input a char:");
	//int x;
	//scanf("%c", &x);   //定义一个x接收换行
	getchar();		     //输入一个字符,不做处理用来清空缓冲区(清除\n) C6031:返回值被忽略"getchar"
	iNum=getchar();      //getchar():输入一个字符,getchar() 表示输入的字符 然后把输入的字符赋值给iNum
	//上面这句话等效: scanf("%c",&iNum);
	printf("iNum=");
	putchar(iNum);       //打印iNum
	putchar('\n');       //等效printf("\n");
	return 0;
}
/*输出*/

2input a number:3
number=3
input a char:e
iNum=e

ASCLL码的知识

用于做整数和字符的转换

字符存储在计算机中是一个数字,不同的字符对应不同的编码:ASCLL码,ASCLL码表代表了字符在计算机中的数据是多少

字符 A:65,字符 a:97,大写和小写之间相差 32,字符 0~9:48~57

int main()
{
    //No.1 基本转换
    printf("%c\n",65);  //用%c的方式打印整数--->格式控制字符和数据不一致|默认通过ASCLL码表把65转换为字符
    printf("%d\n",'A'); 

    //No.2 常用形态
    int a = 'A';
    printf("%d\n",a);    //自动把'A'转换为65--->用%d的方式打印a就是65
    //2.1大小写转换--->任何大写字母和小写字母的间距是一样的 相差32--->相应的大写字母65+32==小写字母97
    char number = 'A';   //把大写'A'转换为'a'
    putchar(number + 32);//打印小写'a'--->打印字符|把97转换为小写a打印出来
    putchar('\n');
    //任何两个大、小写字母之间的间距是相同的
    //'A'-'a'=number-x;
    //x=number+'a'-'A';
    number = 'A';
    putchar(number + 'a' - 'A');
    putchar('\n');
    //2.2字符1转数字1
    char first = '1';
    int one = first -'0';//因为字符0-9是连续的
    printf("%d\n",one);

    printf("打印:\101\n");//特殊的格式控制字符: 65的八进制--->\ddd:1到3位八进制所代表的任意字符
}
/*输出*/

A
65
65
a
a
1
打印:A
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章           查看所有文章
加:2022-03-13 21:33:09  更:2022-03-13 21:36:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:54:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码