C语言-输入/输出函数

  c语言本身没有提供专门的输入输出语句,所有的输入输出都是由调用标准库函数中的输入输出函数来实现的。

输入函数:scanf() 、 getchar()、gets():

  • scanf(),是格式输入函数,可接收任意类型的数据。
  • getchar(),是字符输入函数, 只能接收单个字符
  • gets(),是字符串输入函数。

输出函数:printf() 、 putchar()、puts():

  • printf(),是格式输出函数,可按指定的格式显示任意类型的数据。
  • putchar(),字符显示函数,只能显示单个字符
  • puts(),是字符串输出函数。

一、scanf()和printf()函数

1.scanf()

Ⅰ.功能和格式

功能:把从键盘上输入的数据根据找到的地址存入内存中,即给变量赋值。
格式: scanf("格式控制字符串",参数地址列表);

  • “格式控制字符串”:约定输入数据的类型和格式,参数的个数必须与变量地址的个数一致。
  • “参数地址列表”:以逗号 “, ”分隔的、输入数据变量地址序列。

Ⅱ.连续输入多个数据

scanf("%d%d%d",&a,&b,&c); 
  1. &是寻址操作符,&a表示对象a在内存中的地址
  2. 如果scanf中%d是连着写的,如“%d%d%d”,在输入数据时,数据之间不可以用逗号分隔,只能用空白字符(空格或tab键或者回车键)分隔。如:“2 3 4
  3. 如果是“%d,%d,%d”,则在输入数据时需要加“,”,如“2,3,4

Ⅲ.连续输入两个字符

  这里会有一个问题:如果你的代码是这样的

char c1, c2;
scanf("%c%c", &c1, &c2); // 输入为”a b“或者“a回车b”
printf("%c,%c", c1, c2); // 那么你的输出为“a, ”

  这是因为scanf()函数是从标准缓冲区读取字符的,由于每次输入之后都按了一次空格或回车,标准缓冲区记录了这次空格或回车,而char类型会记录这个回车,并赋值给了变量c2

  解决方法

  在%c前面加个空格,空格可抵消前面输入的回车符

char c1, c2;
scanf("%c %c", &c1, &c2); // 输入为”a b“或者“a回车b”
printf("%c,%c", c1, c2); // 那么你的输出为“a,b”

Ⅳ.阻塞式函数

拓展:scanf()函数是阻塞式函数,后面的putchar()和puts()也是。
因为:

  1. 等待输入:当程序执行到 scanf() 时,它会停止并等待用户输入数据。直到用户输入数据并按下 Enter 键,scanf() 才会继续执行
  2. 不立即返回:与其他函数不同,scanf() 不会立即返回。它需要用户输入完整的数据行,然后按下 Enter 键,才会处理该输入并返回。
  3. 输入缓冲区:在大多数情况下,scanf() 从 stdin(标准输入)读取数据。如果用户输入的数据与 scanf() 的格式字符串匹配,函数会继续执行。如果不匹配,用户可能需要重新输入或进行其他操作。
  4. 非阻塞式 I/O:与之相对的是非阻塞式 I/O,其中读取操作会立即返回,无论是否已接收到完整的数据。对于 scanf() 来说,它需要等待用户完成输入,这使其具有阻塞的性质。
    因此,基于上述原因,scanf() 通常被称为阻塞式函数。

2.printf()

参考:C语言-输出函数printf()

二、getchar()和putchar()函数

1.功能和格式

getchar():输入字符数据
格式:getchar()
功能:从键盘缓冲区读入一个字符


putchar():输出字符
格式: putchar(ch),其中ch是一个字符变量
功能:从标准输出设备输出一个字符

切记:这两个都是针对一个字符

2.示例

#include <stdio.h>

int main() {
    char ch;
    ch = getchar(); // 输入单个字符
    putchar(ch); // 输出单个字符
    putchar('\n'); // 执行换行效果,屏幕不显示
    return 0;
}

三、gets()和puts()函数

1.功能和格式

  在C语言中,gets()、puts() 是用于输入字符串、输出字符串的标准库函数,其原型定义在 <stdio.h> 头文件中。


puts()
格式:puts(字符串)
功能:将一个以 null 字符(\0)结尾的字符串打印到标准输出(通常是控制台)上,并自动添加一个换行符


get()
格式:gets(字符串变量) // 输入到这个字符串变量里
功能:读取标准输入设备输入的字符串,直到遇到【Enter】键才结束。

切记:这两个函数只针对字符串

2.示例

#include <stdio.h>

int main() {
    char str[15];
    printf("enter your name:");
    gets(str);        // 输入字符串至数组变量str
    printf("your name is ");
    puts(str);        // 输出字符串,独占一行,自动添加换行
    return 0;
}
  • 22
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值