首页 > 其他分享 >C语言 | printf、scanf及库函数

C语言 | printf、scanf及库函数

时间:2024-08-09 12:53:17浏览次数:8  
标签:int scanf long printf 2.2 库函数

目录

一、关于printf和scanf

1、输入输出的概念

2、语句

2.1 printf()函数

2.2.1 print输出格式

2.2.2 占位符 

 2.2.3 限定宽度

2.2.3.1 对于小数以外的

2.2.3.2 对于小数

2.2.4 显示符号

2.2 scanf()函数

2.2.1 基本用法

2.2.2 基本格式

2.2.3 限定宽度

2.2.4 scanf的返回值

二、关于库函数

1、 库函数的使用

2、 库函数的学习和查看工具


一、关于printf和scanf

1、输入输出的概念

输入:从输入设备(如键盘、光盘、扫描仪等)向计算机输入数据

输出:从计算机向输出设备(如显示器、打印机等)输出数据

标准输入一般指键盘,标准输出一般指屏幕

2、语句

在C程序中用来实现输入和输出的主要是scanf函数和printf函数。而scanf函数和printf函数不是C语言提供的“输入输出语句”,scanf和printf只是库函数的名字。所以如果程序调用标准输入输出函数,就必须在本程序的开头用#include指令把stdio.h头文件包含到程序中,以调用库函数。形式可在我第二篇文章中找到

2.1 printf()函数

printf()的作用是将参数文本输出到屏幕。f代表format(格式化),表示可以定制输出文本的格式。

2.2.1 print输出格式

printf函数的一般格式:printf (格式控制,输出表列)

(1) 格式控制:是用双引号括起来的一个字符串,称为格式(控制)字符串。包括:

1)格式声明:将输出的数据转换为指定的格式后输出。由占位符如 %d、%f等组成

2)普通字符:如逗号、空格和换行符等

(2) 输出表列:是程序需要输出的一些数据,如常量、变量或表达式

2.2.2 占位符 

所谓“占位符”,就是这个位置可以用其他值代入

#include<stdio.h>
int main()
{
    printf("I have %d egges",2) //用2替换%d
    return 0;
}

占位符列举:

%a:十六进制浮点数,字母输出为小写
%A:十六进制浮点数,字母输出为大写
%c:字符
%d:十进制整数。//int
%e:使用科学计数法的浮点数,指数部分的e为小写
%E:使用科学计数法的浮点数,指数部分的E为大写
%i:整数,基本等同于 %d 
%f:小数(包含 float类型和 double类型)。//float %f double %lf
%g:6个有效数字的浮点数。整数部分一旦超过6位,就会自动转为科学计数法,指数部分的 e
为小写
%G:等同于%g,唯一的区别是指数部分的E为大写
%hd :十进制 short int类型
%ho:八进制 short int 类型
%hx:十六进制short int类型
%hu :unsigned short int 类型
%ld:十进制 long int类型
%lo:八进制 long int类型
%lx:十六进制 long int类型
%lu :unsigned long int 类型
%lld:十进制 long long int类型
%llo:八进制long long int类型
%llx:十六进制 long long int类型
%llu:unsigned long long int 类型
%Le :科学计数法表示的 long double 类型浮点数
%Lf:long double类型浮点数

%n:已输出的字符串数量。该占位将本身不输出,只将值存储在指定变量之中
%o:八进制整数
%p:指针(用来打印地址)
%s:字符串
%u :无符号整数 (unsigned int)
%x:十六进制整数
%zd: size_t 类型
%%:输出一个百分号

2.2.3 限定宽度
2.2.3.1 对于小数以外的
#include<stdio.h>
int main()
{
    printf("%6d\n",1234);
    return 0;
}

%6d表示这个占位符的宽度至少为6位。 

输出结果为: 

可见,输出的值默认是右对齐,如果输入的值不满6位,对应的值的前面会添加空格

如果希望改成左对齐可以在占位符的%的后面插入一个-号,即

#include<stdio.h>
int main()
{
    printf("%-6d\n",1234);
    return 0;
}

 

2.2.3.2 对于小数
#include<stdio.h>
int main()
{
    printf("%10f\n",1234);
    return 0;
}

%10f表示输出的浮点数最少要占据10位。注:小数默认显示精度是小数点后6位

 

小数点也占据1位,前面需要补两个空格

那么可以限定小数点后的小数位数嘛,答案是肯定的

#include<stdio.h>
int main()
{
    printf("%6.3f\n", 1.2);
    return 0;
}

 

%.3f表示限定小数点位数为3位 

 补充:%.3s表示可以指定输出字符串的长度

#include<stdio.h>
int main()
{
    printf("%6.3s\n", "hello");
    return 0;
}

2.2.4 显示符号

printf 不对正数显示+号,只对负数显示-号,如:

#include<stdio.h>
int main()
{
    printf("%d\n", 1);
    printf("%d\n", -1);
    return 0;
}

 

如果想要显示正号,在%后加+即可:

#include<stdio.h>
int main()
{
    printf("%+d\n", 1);
    printf("%+d\n", -1);
    return 0;
}

 

2.2 scanf()函数

2.2.1 基本用法

scanf()函数用于读取用户的键盘输入,即程序运行到这个语句时,会停下来,等待用户从键盘输入—>用户输入数据、scanf()就会处理用户的输入,将其存入变量—>按下回车键后,按照占位符对缓存进行解读

注:解读时,会从上一次解读遗留的第一个字符开始,直到读完缓存,或者遇到第一个不符合条件的字符为止。

2.2.2 基本格式

和print一样

scanf(“格式字符串”,&变量1,&变量2,...):占位符与变量一一对应

变量前需加上取地址符&,因为scanf需要变量的地址来存储输入的数据

#include<stdio.h>
int main()
{
	int x; 
	scanf("%d",&x);
    printf("%d\n",x);
    return 0;
}

注:scanf()处理数值占位符时,会自动过滤空白字符,包括空格、制表符、换行符等

用户使用回车键,将输入分成几行,也不影响解读,分成四行输入,得到的结果与一行输入一样

#include<stdio.h>
int main()
{
	int x,y; 
	float i,j;
	scanf("%d%d%f%f",&x,&y,&i,&j);
    printf("%d %d %f %f\n",x,y,i,j);
    return 0;
}

 

注:占位符除了%c,都会自动忽略起首的空白字符,而%c不忽略空白字符,总是返回当前第一个字符。如果要强制跳过字符前的空白字符,要写成scanf(“ %c”,&ch),即在%c前加上一个空格,表示跳过或多个空白字符

%s:从当前第一个非空白字符开始读起,直到遇到空白字符(空格、换行符、制表符等)为止所以scanf()遇到%s会在字符串变量末尾存储一个空字符\0以表示结束。所以%s不会包含空白字符,无法读取多个单词。

2.2.3 限定宽度

使用%s占位符时,应该指定字符串的最长长度。

因为scanf()将字符串读入字符数组时,不会检测字符串是否超过了数组长度,储存字符串时很可能会超过数组的边界。

scanf("%10s",&x); //表示读取字符串的最大长度为10个字符
2.2.4 scanf的返回值

scanf的返回值是一个整数,表示成功读取的变量个数

如果没有读取任何项,或者匹配失败,则返回0

如果在成功读取任何数据之前,发生了读取错误或者遇到读取到文件结尾,则返回常量EOF(-1) 

#include<stdio.h>
int main()
{
	int x,y; 
	int r = scanf("%d %d",&x,&y);
    printf("x=%d y=%d \n",x,y);
    printf("r=%d",r);
    return 0;
}

 

二、关于库函数

库函数(Library Functions)是编程语言中预定义好的、可供程序员直接调用的函数集合

1、 库函数的使用

在使用库函数之前,首先需要在源代码中引入相应的头文件。头文件通常包含了库函数的声明,告诉编译器这些函数的存在以及如何使用它们。头文件通常以.h为后缀。

调用库函数:

double sqrt (double x)
//double 是返回值类型,表示函数的计算结果是double类型的值
//sqrt 是函数名
//x 是函数的参数,表示调用sqrt需要传递一个double类型的值

2、 库函数的学习和查看工具

C 标准库头文件 - cppreference.com

 assert - C++ Reference (cplusplus.com)

标签:int,scanf,long,printf,2.2,库函数
From: https://blog.csdn.net/2301_80967461/article/details/141032632

相关文章

  • sprintf_s
            sprintf_s 函数是一个用于将数据格式化输出到字符串的安全版本函数,它在一定程度上避免了传统 sprintf 函数可能导致的缓冲区溢出问题。以下是对 sprintf_s 函数的详细解释:1函数原型intsprintf_s(char*buffer,size_tsizeOfBuffer,constchar*form......
  • mfc用printf输出调试信息到终端cmd
    前言全局说明mfc用printf输出调试信息到终端cmd一、说明环境:Windows11家庭版23H222631.3737VS2013二、printf打印调试信息2.1设置启用控制台打印2.1.1打开解决方案(项目)--属性2.1.2配置属性->生成事件->后期生成事件->命令行->编辑在框里填入......
  • 在 Go 中,`fmt.Printf` 常用的 `%` 占位符类型
    在Go中,fmt.Printf常用的%占位符类型如下:%v:值的默认格式表示。%+v:结构体字段名和值的格式表示。%#v:Go语法表示的值。%T:值的类型。%%:百分号字面量。对于特定类型:%d:整数(十进制)。%b:整数(二进制)。%o:整数(八进制)。%x,%X:整数(十六进制)。%f:浮点数。%e,%E:科学......
  • ysyx: 完善库函数
    nemu把库函数分为了与架构有关的isa部分和与架构无关的klib部分。这部分的任务,就是完善stdio.cstdlib.c和string.c,让各种测试集、跑分和demo可以正常运行。值得一提的是,我也是看到这一部分,回看测试集时,才注意到测试集用的其实都是C语言自带的关键字和基本功能,没有使用到特定......
  • 【C语言】输入、输出函数知识、getchar()、putchar()、 scanf()、printf()
    函数的声明和定义1.1 函数声明1.告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数声明决定不了。2.函数的声明一般出现在函数的使用之前。要满足先声明后使用。3.函数的声明一般要放在头文件中的。1.2C本身是不提供输入输出功能的,需要......
  • C语言输出函数printf详解
    printf1.1基本类型printf()的作用是将参数文本输出到屏幕。f代表format(格式化),表示可以定制输出文本的格式。printf()的头文件是stdio.h例如:#include<stdio.h>intmain(){ printf("HelloWorld"); return0;}1.2占位符printf()可以在输出文本中指定占位符......
  • Temperatures()函数中用const创建温度转换中使用的变量.在main()函数中使用一个循环让
    /编写一个程序,要求用户输入一个华氏温度。程序应读取double类型的值作为温度值,并把该值作为参数传递该一个用户自定义的函数Temperatures()。该函数计算摄氏温度和开氏温度,并以小数点后面两位数字的精度显示3种温度。要求使用不同的温度标签来表示这3个温度值。下面是华氏温度转......
  • printf函数 与 scanf函数
    printf函数基本用法1.此函数为库函数,在使用前需要引入头文件#include <stdio.h>2.printf()在括号中输入文字,用 " " 框住,可以在屏幕中打印出来,当需要换行时只需在末尾打上\n,光标会自动移到下一行 占位符所谓占位符就是这个位置可以由其他值代入,如下图 图中的%d......
  • c语言学习之输入输出--getchar、scanf、printf
    1.输入输出功能  (1).C语言本身并不提供输入输出功能。  使用的是c语言函数库中的"标准输入输出"函数 (2).c语言函数库提供的输入输出函数   getchar、putchar:操作一个字符 'a'  gets、puts:操作一个字符串 如"abcd"   scanf、printf:格式化......
  • 字符串的相关案例和string库函数的使用
    字符串的存储特性:在存储过程中字符串都会在末尾自动添加一个结尾标志符\0                 来表示字符串结束字符串的定义方式有两种:方式一:利用字符数组+双引号的方式定义字符串例如:charstr[4]=“abc”;注意:这里的数组长度要么......