### C语言常用IO函数详解 在C语言编程中,输入输出(IO)操作是不可或缺的一部分。本文将深入探讨C语言中的几种主要IO函数及其应用场景,包括标准输入输出流的使用方法、字符I/O函数、字符串I/O函数以及格式化I/O函数等。 #### 标准输入输出流 在C语言中,`stdin`、`stdout`和`stderr`分别代表标准输入流、标准输出流和标准错误流。 - **`stdin`:** 标准输入流,默认指向键盘。 - **`stdout`:** 标准输出流,默认指向显示器。 - **`stderr`:** 标准错误流,默认也指向显示器,用于输出错误信息,它与`stdout`是独立的。 #### 字符I/O函数 1. **`int getchar()`** - **说明:** 从`stdin`读取1个字符。 - **返回值:** 成功时返回该字符的ASCII码值;若出错,则返回`EOF`。 - **示例代码:** ```c int ch; if ((ch = getchar()) != EOF) { printf("Read character: %c\n", ch); } ``` 2. **`int fgetc(FILE *fp)`** - **说明:** 从指定文件`fp`中读取1个字符,当`fp`为`stdin`时,其功能与`getchar()`相同。 - **返回值:** 成功时返回字符的ASCII码值;若出错,则返回`EOF`。 - **示例代码:** ```c FILE *file; int ch; file = fopen("test.txt", "r"); if (file == NULL) { fprintf(stderr, "Failed to open file."); return 1; } ch = fgetc(file); printf("First character: %c\n", ch); fclose(file); ``` 3. **`int getc(FILE *fp)`** - **说明:** 功能与`fgetc`相同,但可以作为函数或宏实现。 - **返回值:** 成功时返回字符的ASCII码值;若出错,则返回`EOF`。 4. **`int putchar(int ch)`** - **说明:** 向`stdout`输出一个字符`ch`。 - **返回值:** 成功时返回字符的ASCII码值;若出错,则返回`EOF`。 - **示例代码:** ```c char ch = 'A'; if (putchar(ch) == EOF) { fprintf(stderr, "Failed to print character."); return 1; } ``` 5. **`int fputc(int c, FILE *fp)`** - **说明:** 向指定文件`fp`输出一个字符`c`。 - **返回值:** 成功时返回字符的ASCII码值;若出错,则返回`EOF`。 - **示例代码:** ```c FILE *file; char ch = 'A'; file = fopen("test.txt", "w"); if (file == NULL) { fprintf(stderr, "Failed to open file."); return 1; } if (fputc(ch, file) == EOF) { fprintf(stderr, "Failed to write character."); return 1; } fclose(file); ``` 6. **`int putc(int c, FILE *fp)`** - **说明:** 功能与`fputc`相同,但可以作为函数或宏实现。 #### 字符串I/O函数 1. **`char *gets(char *str)`** - **说明:** 从`stdin`读取字符串(不包括`\n`)写入到字符串`str`中。 - **返回值:** 成功时返回字符串首地址;若出错,则返回`NULL`。 - **注意:** `gets`函数存在安全问题,已被废弃。 2. **`char *fgets(char *str, int N, FILE *fp)`** - **说明:** 从指定文件`fp`中读取最多`N-1`个字符(包括`\n`),写入到字符串`str`中。 - **返回值:** 成功时返回字符串首地址;若出错或遇到文件尾,则返回`NULL`。 - **示例代码:** ```c char str[100]; if (fgets(str, sizeof(str), stdin) != NULL) { printf("Read string: %s\n", str); } ``` 3. **`int puts(const char *str)`** - **说明:** 向`stdout`输出字符串`str`,然后输出一个`\n`。 - **返回值:** 成功时返回非负值;若出错,则返回`EOF`。 - **示例代码:** ```c const char *str = "Hello, World!"; if (puts(str) == EOF) { fprintf(stderr, "Failed to print string."); return 1; } ``` 4. **`int fputs(const char *str, FILE *fp)`** - **说明:** 向指定文件`fp`输出字符串`str`。 - **返回值:** 成功时返回非负值;若出错,则返回`EOF`。 #### 格式化I/O函数 1. **`int scanf(const char *format,...)`** - **说明:** 根据`format`从`stdin`格式化读取多个值。 - **返回值:** 成功时返回读取的项数;若出错,则返回`EOF`。 - **示例代码:** ```c int x, y; if (scanf("%d %d", &x, &y) == 2) { printf("Read integers: %d, %d\n", x, y); } ``` 2. **`int fscanf(FILE *fp, const char *format,...)`** - **说明:** 从指定文件`fp`格式化读取多个值。 - **返回值:** 成功时返回读取的项数;若出错或遇到文件尾,则返回`EOF`。 3. **`int sscanf(const char *buf, const char *format,...)`** - **说明:** 从字符串`buf`格式化读取多个值。 - **返回值:** 成功时返回读取的项数;若出错,则返回`EOF`。 4. **`int printf(const char *format,...)`** - **说明:** 根据`format`格式化数据,并输出到`stdout`。 - **返回值:** 成功时返回输出字符数;若出错,则返回负数。 - **示例代码:** ```c int x = 10; double y = 3.14; if (printf("x = %d, y = %.2f\n", x, y) < 0) { fprintf(stderr, "Failed to print data."); return 1; } ``` 5. **`int fprintf(FILE *fp, const char *format,...)`** - **说明:** 向指定文件`fp`格式化输出数据。 - **返回值:** 成功时返回输出字符数;若出错,则返回负数。 6. **`int sprintf(char *buf, const char *format,...)`** - **说明:** 根据`format`格式化数据,并输出到缓冲区`buf`。 - **返回值:** 成功时返回输出字符数;若出错,则返回负数。 通过上述介绍,我们可以了解到C语言中的IO函数非常丰富,能够满足不同场景下的需求。掌握这些函数的使用方法对于编写高效稳定的程序至关重要。
- 粉丝: 2
- 资源: 16
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助