【C语言】标准输入/输出(printf, scanf, gets, puts, getchar, putchar)

2024-04-03 05:28

本文主要是介绍【C语言】标准输入/输出(printf, scanf, gets, puts, getchar, putchar),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

标准文件文件指针设备
标准输入stdin键盘
标准输出stdout屏幕
标准错误stderr您的屏幕

标准输入/输出的函数在标准库stdio.h。

#include <stdio.h>

1、printf   输出

printf :格式化输出,输出到标准输出stdout中。

printf:   int  printf(const  char  *format, ...)

参数:format是字符串(包含输出的内容,也可以包含占位符(格式化说明符))。

返回:输出的字符总数。若失败,返回负数。

注意:printf 输出不包括换行符'\n',需手动添加。

format 说明符(占位符):

类型合格的输入参数的类型
%a、%A读入一个浮点值(仅 C99 有效)。float 
%f、%F浮点数。以小数形式输出单、双精度实数。例如:-732.103float 
%e、%E浮点数。以指数形式输出单、双精度实数。例如:7.12e4float 
%g、%G浮点数。以%f或%e中较短的输出宽度输出单、双精度实数float 
%i读入十进制,八进制,十六进制整数 。int 
%d十进制整数。正数不输出符号int 
%o八进制整数。int 
%x、%X十六进制整数。int 
%u无符号的十进制整数。unsigned int 
%c单个字符char 
%s字符串。将读取连续字符,直到遇到一个空格字符(空格字符可以是空白、换行和制表符)。char 
%p读入一个指针 。(指针存储内存地址。获取内存地址:&变量名)
%[]扫描字符集合 。
%%读 % 符号。
#include <stdio.h>int main(void)
{int i = 10;float f = 3.1415926;char c = 'a';char s[6] = "hello";printf("int m: %6d \n", i);        // 宽度为6的整数printf("float k: %.2f \n", f);     // 2位小数的浮点数printf("char c: %c \n", c);        // 单个字符printf("string s: %s \n", s);      // 字符串printf("string s = %s, the first char is %c \n", s, s[0]);      // 字符串中第一个字符printf("int m memory address is %p \n", &i);                    // 整数m的内存地址return 0;
}// 结果:
int m:     10 
float k: 3.14 
char c: a
string s: hello
string s = hello, the first char is h
int m memory address is 000000000061FE14

2、scanf   输入

scanf :从标准输入stdin,读取格式化输入。

scanf:   int  scanf(const  char  *format, ...)

参数:format是字符串(包括占位符)。

返回:成功匹配或赋值的个数。若到达文件末尾或发生错误,返回NULL。

注意:scanf 碰到空格就停止读取。 

// scanf 不能显示输入的提示信息,用printf 提前输出提示信息。
#include <stdio.h>int main(void)
{char s[16];printf("Input: ");scanf("%s", s);      // 读取输入的字符串printf("Output: %s", s);return 0;
}// 结果:
Input: good luck    【输入:good luck】
Output: good
// 若scanf中有提示信息,则输入内容时要手动把提示信息一并输入。
#include <stdio.h>int main(void)
{char s[16];// printf("Input: ");scanf("Input: %s", s);      // 读取输入的字符串(提示信息也需输入)printf("Output: %s", s);return 0;
}// 结果:
Input: good luck       【输入:Input: good luck】
Output: good

字符串是指针,指向字符数组。字符串名本身就表示了内存地址(第一个字符的内存地址)。

而整数,则需要通过 "&变量名" 获取内存地址。

#include <stdio.h>int main(void)
{int m, n;printf("Input two number: ");scanf("%d %d", &m, &n);            // 读取输入的整数printf("Output two number: %d %d", m, n);return 0;
}// 结果:
Input two number: 1 2          【输入:1 2】
Output two number: 1 2

3、gets, puts   输入/输出整行字符

gets(s):读取输入的一行字符串,从标准输入stdin读取一行 并存储到字符串s指向的内存空间。

gets:   char  *gets(char  *str)

参数:str是指向字符数组的指针,该数组存储读取的字符串。

返回:指针,指向读取到的字符串。若没有读取到内容或发生错误,返回NULL。

注意:读取到换行符 或到达文件末尾 就停止。

可能导致缓冲区溢出,若避免,可使用fgets函数,例如:fgets(str20stdin)从标准输入stdin读取最多20个字符(包括结束符'\0')存储到str指向的内存。

puts(s):输出字符串,将字符串s写入到标准输出stdout中。

puts:   int  puts(const  char  *str)

参数:str是要输出的字符串。

返回:字符串长度(包括结束符'\0')。若发生错误,返回NULL。

注意:碰到空字符就停止,且输出中不包括空字符。换行符会被追加到输出中(即输出中包括换行符'\n')。

#include <stdio.h>int main(void)
{   char s[16];printf("Input: ");gets(s);               // 读取输入的内容printf("Output: ");puts(s);               // 输出读取的内容return 0;
}// 结果:
Input: good luck       【输入:good luck】
Output: good luck

4、getchar, putchar   输入/输出一个字符

getchar():读取输入的一个字符,从标准输入stdin获取一个字符(包括回车)。

getchar:  int  getchar(void)

参数:无。

返回:读取的字符(无符号char强制转为int形式) 。如果到达文件末尾或发生读错误,则返回 EOF。

注意:正常输入以按回车(换行符'\n') 结束。

putchar(c):输出一个字符,即将指定字符写入到标准输出stdout。

putchar:    int putchar(int char)

参数:char是要输出的字符。

返回:输出的字符(无符号char强制转为int形式) 。如果发生错误,则返回 EOF。

#include <stdio.h>int main(void)
{char c;printf("Enter a value: ");c = getchar();         // 读取输入的内容printf("The value is: ");putchar(c);            // 输出一个字符return 0;
}// 结果:
Enter a value: abc  【输入abc】
The value is: a

 同一时间只能输入/输出一个字符,可用循环输入/输出多个字符。

#include <stdio.h>int main(void)
{   printf("Enter a value: ");char c;// 通过循环输入/输出多个字符while((c = getchar()) != '\n' && c != EOF){putchar(c);} return 0;
}// 结果:
Enter a value: abc    【输入abc】
abc

这篇关于【C语言】标准输入/输出(printf, scanf, gets, puts, getchar, putchar)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/872013

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、