跳到主要内容

C 语言输入输出

在C语言中,输入输出(I/O)操作是程序与用户或外部设备进行交互的基础。C语言提供了一系列标准库函数来处理输入输出操作,这些函数定义在 stdio.h 头文件中。本文将详细介绍C语言中的输入输出操作,并通过代码示例帮助你理解这些概念。

1. 标准输入输出函数

C语言中最常用的输入输出函数是 printfscanfprintf 用于将数据输出到标准输出设备(通常是屏幕),而 scanf 用于从标准输入设备(通常是键盘)读取数据。

1.1 printf 函数

printf 函数用于格式化输出数据。它的基本语法如下:

c
printf("格式字符串", 参数1, 参数2, ...);
  • 格式字符串:包含普通字符和格式说明符。格式说明符以 % 开头,用于指定输出的数据类型和格式。
  • 参数:与格式说明符对应的变量或值。

示例:

c
#include <stdio.h>

int main() {
int age = 25;
printf("我的年龄是 %d 岁。\n", age);
return 0;
}

输出:

我的年龄是 25 岁。
提示

\n 是换行符,用于在输出中插入一个新行。

1.2 scanf 函数

scanf 函数用于从标准输入设备读取数据。它的基本语法如下:

c
scanf("格式字符串", &变量1, &变量2, ...);
  • 格式字符串:包含格式说明符,用于指定输入数据的类型。
  • 变量:用于存储输入数据的变量地址。

示例:

c
#include <stdio.h>

int main() {
int age;
printf("请输入你的年龄:");
scanf("%d", &age);
printf("你的年龄是 %d 岁。\n", age);
return 0;
}

输入:

25

输出:

你的年龄是 25 岁。
警告

在使用 scanf 时,务必确保格式说明符与变量的类型匹配,否则可能导致未定义行为。

2. 格式化输入输出

C语言提供了丰富的格式说明符,用于控制输入输出的格式。以下是一些常用的格式说明符:

  • %d:用于整数。
  • %f:用于浮点数。
  • %c:用于字符。
  • %s:用于字符串。
  • %lf:用于双精度浮点数。

示例:

c
#include <stdio.h>

int main() {
int num1;
float num2;
char ch;
char str[50];

printf("请输入一个整数、一个浮点数、一个字符和一个字符串:\n");
scanf("%d %f %c %s", &num1, &num2, &ch, str);

printf("你输入的整数是:%d\n", num1);
printf("你输入的浮点数是:%.2f\n", num2);
printf("你输入的字符是:%c\n", ch);
printf("你输入的字符串是:%s\n", str);

return 0;
}

输入:

10 3.14 A Hello

输出:

你输入的整数是:10
你输入的浮点数是:3.14
你输入的字符是:A
你输入的字符串是:Hello
备注

%.2f 表示输出浮点数时保留两位小数。

3. 文件输入输出

除了标准输入输出,C语言还支持文件输入输出操作。文件操作通常涉及以下步骤:

  1. 打开文件:使用 fopen 函数。
  2. 读写文件:使用 fprintffscanffgets 等函数。
  3. 关闭文件:使用 fclose 函数。

示例:

c
#include <stdio.h>

int main() {
FILE *file;
char str[100];

// 打开文件
file = fopen("example.txt", "w");
if (file == NULL) {
printf("无法打开文件\n");
return 1;
}

// 写入文件
fprintf(file, "这是一个文件写入示例。\n");

// 关闭文件
fclose(file);

// 重新打开文件以读取内容
file = fopen("example.txt", "r");
if (file == NULL) {
printf("无法打开文件\n");
return 1;
}

// 读取文件内容
fgets(str, 100, file);
printf("文件内容:%s", str);

// 关闭文件
fclose(file);

return 0;
}

输出:

文件内容:这是一个文件写入示例。
注意

在使用文件操作时,务必检查文件是否成功打开,以避免程序崩溃。

4. 实际应用场景

4.1 用户注册系统

假设你正在开发一个简单的用户注册系统,用户需要输入用户名和密码。你可以使用 scanf 来读取用户输入,并使用 printf 来显示注册成功的信息。

c
#include <stdio.h>

int main() {
char username[50];
char password[50];

printf("请输入用户名:");
scanf("%s", username);

printf("请输入密码:");
scanf("%s", password);

printf("注册成功!\n");
printf("用户名:%s\n", username);
printf("密码:%s\n", password);

return 0;
}

输入:

Alice
123456

输出:

注册成功!
用户名:Alice
密码:123456

4.2 日志记录系统

你可以使用文件操作来创建一个简单的日志记录系统,将用户的操作记录到日志文件中。

c
#include <stdio.h>

int main() {
FILE *logFile;
char action[100];

logFile = fopen("log.txt", "a");
if (logFile == NULL) {
printf("无法打开日志文件\n");
return 1;
}

printf("请输入你的操作:");
scanf("%s", action);

fprintf(logFile, "用户操作:%s\n", action);

fclose(logFile);

printf("操作已记录到日志文件中。\n");

return 0;
}

输入:

login

输出:

操作已记录到日志文件中。

日志文件内容:

用户操作:login

5. 总结

C语言中的输入输出操作是编程的基础,掌握这些操作对于编写交互式程序至关重要。本文介绍了如何使用 printfscanf 进行标准输入输出,以及如何进行文件操作。通过实际案例,你可以看到这些概念在实际应用中的重要性。

6. 附加资源与练习

  • 练习1:编写一个程序,要求用户输入两个整数,并输出它们的和、差、积和商。
  • 练习2:创建一个程序,将用户输入的字符串保存到文件中,并从文件中读取并显示该字符串。
  • 附加资源:阅读C语言标准库文档,了解更多关于 stdio.h 中其他输入输出函数的使用方法。

通过不断练习和探索,你将能够熟练运用C语言中的输入输出操作,为编写更复杂的程序打下坚实的基础。