C语言输入输出知识点汇总
编程小白也能看懂的详细指南 – 包含基础概念、常用函数、格式说明符及代码示例
📚
基础概念
什么是输入输出?
输入(Input):程序从外部获取数据(如键盘输入、文件读取)
输出(Output):程序向外部发送数据(如屏幕显示、文件写入)
标准流的概念
C语言预定义了三个标准流:
- stdin – 标准输入(通常是键盘)
- stdout – 标准输出(通常是屏幕)
- stderr – 标准错误输出(通常也是屏幕)
头文件
使用输入输出函数前,必须包含头文件:
#include <stdio.h>
stdio.h 是 “Standard Input Output” 的缩写。
💡 提示:C语言中所有输入输出函数都定义在 stdio.h 头文件中。
🖨️
输出函数详解
printf() 函数
格式化输出函数,向屏幕输出格式化的内容。
// 基本用法
printf(“Hello, World!\n”);
// 格式化输出
int age = 20;
printf(“我今年%d岁\n”, age);
// 多个变量输出
float height = 1.75;
printf(“年龄: %d, 身高: %.2f米\n”, age, height);
printf(“Hello, World!\n”);
// 格式化输出
int age = 20;
printf(“我今年%d岁\n”, age);
// 多个变量输出
float height = 1.75;
printf(“年龄: %d, 身高: %.2f米\n”, age, height);
putchar() 函数
输出单个字符到屏幕。
putchar(‘A’); // 输出字符 A
putchar(‘\n’); // 输出换行符
putchar(‘\n’); // 输出换行符
puts() 函数
输出字符串到屏幕,并自动添加换行符。
puts(“Hello,”); // 输出后自动换行
puts(“World!”);
puts(“World!”);
🌟 重要区别:
- printf() 需要指定格式,功能强大
- puts() 直接输出字符串,自动换行
- putchar() 只输出单个字符
⌨️
输入函数详解
scanf() 函数
格式化输入函数,从键盘读取格式化输入。
// 读取整数
int num;
printf(“请输入一个整数: “);
scanf(“%d”, &num);
// 读取多个值
int a, b;
printf(“请输入两个整数: “);
scanf(“%d %d”, &a, &b);
// 读取字符串(无空格)
char name[20];
printf(“请输入你的名字: “);
scanf(“%s”, name); // 注意:不需要 & 符号
int num;
printf(“请输入一个整数: “);
scanf(“%d”, &num);
// 读取多个值
int a, b;
printf(“请输入两个整数: “);
scanf(“%d %d”, &a, &b);
// 读取字符串(无空格)
char name[20];
printf(“请输入你的名字: “);
scanf(“%s”, name); // 注意:不需要 & 符号
⚠️ 使用scanf()的注意事项:
- 读取字符串时遇到空格会停止
- 读取变量前需要加 &符号(数组除外)
- 格式字符串中的空格会匹配任意空白字符
getchar() 函数
从键盘读取单个字符。
char ch;
printf(“请输入一个字符: “);
ch = getchar(); // 读取一个字符
printf(“请输入一个字符: “);
ch = getchar(); // 读取一个字符
gets() 函数(已弃用)
不安全!读取整行字符串(包含空格),但可能导致缓冲区溢出。
❌ 重要警告:gets()函数容易导致安全漏洞,在实际开发中应禁止使用!
推荐替代:fgets()
安全地读取一行字符串(包含空格)。
char sentence[100];
printf(“请输入一句话: “);
fgets(sentence, sizeof(sentence), stdin);
printf(“请输入一句话: “);
fgets(sentence, sizeof(sentence), stdin);
💡 提示:fgets()会保留换行符,而scanf()不会读取换行符。
🔣
格式化说明符详解
常用格式说明符
- %d – 有符号十进制整数
- %f – 浮点数(float)
- %lf – 双精度浮点数(double)
- %c – 单个字符
- %s – 字符串
- %u – 无符号十进制整数
- %x – 十六进制整数(小写)
- %X – 十六进制整数(大写)
- %o – 八进制整数
- %p – 指针地址
格式修饰符
可在%和格式符之间添加修饰符:
- 数字 – 最小字段宽度(如%5d)
- .数字 – 浮点数精度(如%.2f)
- – – 左对齐(如%-10s)
- + – 显示正负号(如%+d)
转义字符
- \n – 换行符
- \t – 制表符(Tab)
- \\ – 反斜杠
- \” – 双引号
- \’ – 单引号
- \b – 退格符
// 格式化输出示例
printf(“整数: %5d\n”, 42); // ” 42″
printf(“浮点数: %8.2f\n”, 3.14159); // ” 3.14″
printf(“左对齐: %-10s\n”, “Hello”); // “Hello “
printf(“带符号: %+d\n”, 10); // “+10”
printf(“整数: %5d\n”, 42); // ” 42″
printf(“浮点数: %8.2f\n”, 3.14159); // ” 3.14″
printf(“左对齐: %-10s\n”, “Hello”); // “Hello “
printf(“带符号: %+d\n”, 10); // “+10”
🔤
字符与字符串处理
字符输入输出
使用 getchar() 和 putchar() 处理单个字符:
// 读取字符直到回车
char c;
printf(“请输入字符(回车结束): “);
while((c = getchar()) != ‘\n’) {
putchar(c); // 回显输入的字符
}
char c;
printf(“请输入字符(回车结束): “);
while((c = getchar()) != ‘\n’) {
putchar(c); // 回显输入的字符
}
字符串输入输出
字符串在C语言中是字符数组,以’\0’(空字符)结尾。
// 安全的字符串输入
char city[30];
printf(“请输入城市名: “);
fgets(city, sizeof(city), stdin);
// 输出字符串
printf(“您住在: %s”, city);
// 或者使用 puts(city);
char city[30];
printf(“请输入城市名: “);
fgets(city, sizeof(city), stdin);
// 输出字符串
printf(“您住在: %s”, city);
// 或者使用 puts(city);
🌟 重要:数组大小必须足够大,防止缓冲区溢出!
字符串处理函数
需要包含 string.h 头文件:
- strlen() – 获取字符串长度
- strcpy() – 复制字符串
- strcat() – 连接字符串
- strcmp() – 比较字符串
📝
文件输入输出基础
文件操作步骤
- 使用 fopen() 打开文件
- 使用 fprintf()/fscanf() 读写文件
- 使用 fclose() 关闭文件
打开文件
FILE *fp; // 文件指针
// 打开文件用于写入
fp = fopen(“data.txt”, “w”);
// 打开文件用于读取
fp = fopen(“data.txt”, “r”);
if(fp == NULL) {
printf(“文件打开失败!\n”);
return 1;
}
// 打开文件用于写入
fp = fopen(“data.txt”, “w”);
// 打开文件用于读取
fp = fopen(“data.txt”, “r”);
if(fp == NULL) {
printf(“文件打开失败!\n”);
return 1;
}
文件打开模式
- “r” – 只读(文件必须存在)
- “w” – 写入(创建新文件或覆盖)
- “a” – 追加(在文件末尾添加)
- “r+” – 读写(文件必须存在)
- “w+” – 读写(创建新文件或覆盖)
- “a+” – 读写追加
读写文件
// 写入文件
fprintf(fp, “Hello, File!\n”);
fputs(“第二行内容\n”, fp);
// 读取文件
char buffer[100];
while(fgets(buffer, sizeof(buffer), fp) != NULL) {
printf(“%s”, buffer);
}
fprintf(fp, “Hello, File!\n”);
fputs(“第二行内容\n”, fp);
// 读取文件
char buffer[100];
while(fgets(buffer, sizeof(buffer), fp) != NULL) {
printf(“%s”, buffer);
}
💡 提示:文件操作后务必关闭文件,确保数据写入磁盘!
C语言输入输出总结 | 编程小白入门秘籍 | 建议结合实践练习掌握
© 2023 C语言学习指南 | 知识汇总