C语言输入输出函数教学

printf(), scanf(), putchar(), getchar() 函数详解与应用

printf() 函数

函数原型

printf函数的函数原型如下:

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

格式化字符串

格式化字符串是一个由普通文本和格式说明符组成的字符串,用于指定如何输出数据。

常见的格式说明符包括:

  • %d - 输出整数
  • %f - 输出浮点数
  • %c - 输出字符
  • %s - 输出字符串

使用技巧

1. 使用宽度指定符控制输出对齐:%正数d 右对齐,%负数d 左对齐

2. 控制浮点数精度:%.2f 保留两位小数

3. 特殊字符转义:\n 换行,\t 制表符

巩固提高

例1:下列程序的运行结果是
#include<stdio.h> int main() { int a, b; a = 40; b = 90; printf("%x", a); // 输出a的十六进制 printf("%o", b+1); // 输出b+1的八进制 getchar(); return 0; }

输出结果:

隐藏
例2:下列程序的运行结果是
#include<stdio.h> int main() { int a = 1, b = -42, c = 100; printf("%5d", a); // 占5位宽度 printf("%-4d", b); // 左对齐占4位 printf("%d", c); // 正常输出 getchar(); return 0; }

输出结果:

隐藏

scanf() 函数

函数原型

scanf函数的函数原型如下:

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

格式化字符串

格式化字符串指定读取数据的格式,包含格式说明符如:

  • %d - 读取整数
  • %f - 读取浮点数
  • %c - 读取字符
  • %s - 读取字符串

使用技巧

1. 地址操作符(&)不能省略:scanf("%d", &num);

2. 输入格式需匹配:scanf("Name: %s", name); 需要输入"Name: John"

3. 处理缓冲区问题:使用fflush(stdin)getchar()清空缓冲区

示例与实践

下列程序的运行结果
#include<stdio.h> int main() { int a; char b; scanf("a=%d, b=%c", &a, &b); // 注意输入格式 printf("%d,%c", a, b); // 输出结果 return 0; }

输出结果: 隐藏

示例2:格式匹配输入
#include<stdio.h> int main() { int id; float score; printf("请输入学生ID和分数(格式:ID=分数):"); scanf("ID=%d分数=%f", &id, &score); printf("学生%d的分数是%.2f", id, score); return 0; }

问题: 该如何输入才能让id=21,成绩=91?

putchar() 函数

函数原型

putchar函数的函数原型如下:

int putchar(int char);

功能描述

putchar()函数用于输出单个字符到标准输出设备(通常是屏幕)。

使用场景

1. 输出单个字符:putchar('A');

2. 输出字符数组:循环输出字符串中的每个字符

3. 输出转义字符:putchar('\n'); 输出换行符

巩固提高

下列程序的运行结果
#include<stdio.h> int main() { char a = 'B'; putchar(a); // 输出字符B return 0; }

输出结果: 隐藏

getchar() 函数

函数原型

getchar函数的函数原型如下:

int getchar(void);

功能描述

getchar()函数用于从标准输入设备(通常是键盘)读取单个字符。

使用场景

1. 读取单个字符输入:char c = getchar();

2. 暂停程序执行:getchar(); // 等待用户按键

3. 清空输入缓冲区:连续调用getchar()直到遇到换行符

示例与实践

下列程序的运行结果
#include<stdio.h> #include int main() { char a; a = getchar(); // 读取输入的第一个字符 putchar(a); // 输出该字符 return 0; }

输入示例: ABC

输出结果: 隐藏

学习进度:25%