【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

相关文章

从基础到高级详解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、

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

Go语言使用sync.Mutex实现资源加锁

《Go语言使用sync.Mutex实现资源加锁》数据共享是一把双刃剑,Go语言为我们提供了sync.Mutex,一种最基础也是最常用的加锁方式,用于保证在任意时刻只有一个goroutine能访问共享... 目录一、什么是 Mutex二、为什么需要加锁三、实战案例:并发安全的计数器1. 未加锁示例(存在竞态)

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1