C 输入&输出

C语言输入输出知识点详解 – 编程小白入门

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);

putchar() 函数

输出单个字符到屏幕。

putchar(‘A’); // 输出字符 A
putchar(‘\n’); // 输出换行符

puts() 函数

输出字符串到屏幕,并自动添加换行符。

puts(“Hello,”); // 输出后自动换行
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); // 注意:不需要 & 符号

⚠️ 使用scanf()的注意事项:

  • 读取字符串时遇到空格会停止
  • 读取变量前需要加 &符号(数组除外)
  • 格式字符串中的空格会匹配任意空白字符

getchar() 函数

从键盘读取单个字符。

char ch;
printf(“请输入一个字符: “);
ch = getchar(); // 读取一个字符

gets() 函数(已弃用)

不安全!读取整行字符串(包含空格),但可能导致缓冲区溢出。

❌ 重要警告:gets()函数容易导致安全漏洞,在实际开发中应禁止使用!

推荐替代:fgets()

安全地读取一行字符串(包含空格)。

char sentence[100];
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”
🔤

字符与字符串处理

字符输入输出

使用 getchar() 和 putchar() 处理单个字符:

// 读取字符直到回车
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);

🌟 重要:数组大小必须足够大,防止缓冲区溢出!

字符串处理函数

需要包含 string.h 头文件:

  • strlen() – 获取字符串长度
  • strcpy() – 复制字符串
  • strcat() – 连接字符串
  • strcmp() – 比较字符串
📝

文件输入输出基础

文件操作步骤

  1. 使用 fopen() 打开文件
  2. 使用 fprintf()/fscanf() 读写文件
  3. 使用 fclose() 关闭文件

打开文件

FILE *fp; // 文件指针
// 打开文件用于写入
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);
}

💡 提示:文件操作后务必关闭文件,确保数据写入磁盘!

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部