【C语言教程】【常用类库】(三)输入输出库 - <stdio.h>

3. 输入输出库 - <stdio.h>

<stdio.h> 是C语言中进行文件和标准输入输出操作的核心库。通过对该库函数和操作的应用,程序可以和用户进行交互、读写文件并处理各种形式的数据流。

3.1. 基础输入输出
3.1.1. printfscanf
  • printf: 主要用于在标准输出(通常是命令行界面)上显示信息。

    • 格式化输出: 可以通过格式说明符(如 %d, %s)指定输出的格式。

    • 示例:

      #include <stdio.h>
      
      int main() {
          int num = 10;
          printf("The number is %d\n", num);
          return 0;
      }
      
  • scanf: 用于从标准输入读取数据。

    • 注意事项: 必须提供变量的地址,通常通过&运算符获取。

    • 示例:

      #include <stdio.h>
      
      int main() {
          int num;
          printf("Enter a number: ");
          scanf("%d", &num);
          printf("You entered: %d\n", num);
          return 0;
      }
      
3.1.2. getcputc
  • getc: 从输入流中读取一个字符。

    • 常用于: 文件或标准输入流读取。
  • putc: 向输出流写入一个字符。

    • 示例:

      #include <stdio.h>
      
      int main() {
          char ch;
          printf("Enter a character: ");
          ch = getc(stdin);
          printf("You entered: ");
          putc(ch, stdout);
          return 0;
      }
      
3.1.3. getsputs
  • gets: 从标准输入中读取一行字符串。

    • 风险: 不会检查缓冲区边界,导致潜在的缓冲区溢出问题。
    • 注意: 推荐使用fgets替代。
  • puts: 输出一个字符串到标准输出,并在末尾自动添加一个换行。

    • 示例:

      #include <stdio.h>
      
      int main() {
          char str[50];
          printf("Enter a string: ");
          gets(str); // 注意: 使用 gets 存在风险,应使用 fgets
          puts("You entered:");
          puts(str);
          return 0;
      }
      
3.2. 文件操作
3.2.1. 文件指针 FILE *
  • 定义: C语言使用FILE数据类型处理文件,利用文件指针指向该FILE对象。
  • 关键点: 在进行文件操作前,必须先打开文件,关闭文件时须使用fclose
3.2.2. fopen, fclose, fread, fwrite
  • fopen: 打开文件并返回文件指针。

    • 模式: 文件访问模式如 ("r", "w", "rb", "wb" 等)。
  • fclose: 关闭文件指针。

  • freadfwrite: 进行二进制文件中数据的读写操作。

    • 示例:

      #include <stdio.h>
      
      int main() {
          FILE *fp = fopen("example.txt", "w");
          if (fp != NULL) {
              fwrite("Hello, file!", sizeof(char), 12, fp);
              fclose(fp);
          }
          return 0;
      }
      
3.2.3. 文本文件和二进制文件的区别
  • 文本文件: 内容以纯文本字符存储,适合人类阅读。
  • 二进制文件: 数据以其原始形式存储,更节省空间,且适合程序处理。
3.3. 格式化输入输出
3.3.1. fprintffscanf
  • printfscanf类似,但允许在指定文件中进行格式化读写。
3.3.2. sprintfsscanf
  • sprintf: 与printf类似,但输出结果被存入字符串中而非打印到终端。
  • sscanf: 从字符串中读取格式化数据。
3.4. 高级文件操作
3.4.1. 读写位置调整函数:fseek, ftell, rewind
  • fseek: 移动文件指针到指定位置。
  • ftell: 返回文件指针的当前位置。
  • rewind: 将文件指针移动到文件的开头。
3.4.2. 临时文件操作:tmpfiletmpnam
  • tmpfile: 创建并打开一个临时文件,该文件在关闭时被自动删除。
  • tmpnam: 生成一个唯一的临时文件名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值