📜  头文件“stdio.h”和“stdlib.h”有什么区别?(1)

📅  最后修改于: 2023-12-03 15:37:53.047000             🧑  作者: Mango

头文件 "stdio.h" 和 "stdlib.h" 有什么区别?

在编写 C 代码时,编写者通常需要引入不同类型的头文件。但是,头文件的类型和作用并不相同。其中,头文件 "stdio.h" 和 "stdlib.h" 是 C 语言中最常使用的头文件之一,二者的作用和区别如下:

stdio.h

"stdio.h" 是 C 语言标准库中的文件输入输出头文件。它提供了对输入输出的支持,比如读取和写入到文件、从键盘读取和向屏幕输出数据等等。其中,主要的函数包括:

  • printf(): 输出格式化字符串到屏幕上;
  • scanf(): 从键盘上读取格式化数据;
  • fgets(): 从文件中读取一定量的字符串并存储到缓冲区中;
  • fputs(): 将一个字符串写入到文件中;

此外,"stdio.h" 头文件还包括了处理特殊字符、文件指针等许多有用的函数。

stdlib.h

相比之下,"stdlib.h" 头文件提供了一些常用的通用函数,包括动态内存分配、随机数生成、快速排序等等。其中,主要的函数包括:

  • malloc()、calloc()、realloc(): 动态分配内存;
  • free(): 释放先前分配的内存;
  • rand(): 随机数生成器;
  • qsort(): 按指定规则对数组进行排序;

"stdlib.h" 头文件还可以帮助创建新进程、使用环境变量,以及设置程序的退出状态码等等。

区别

总的来说,"stdio.h" 和 "stdlib.h" 头文件有如下差别:

  • 对于输入输出和文件操作,应该包含"stdio.h" 头文件;
  • 对于动态内存分配、随机数生成、进程创建等操作,应该包含 "stdlib.h"头文件;
  • 如果要同时使用上述操作,则必须同时包含两个头文件。
#include <stdio.h>
#include <stdlib.h>

int main() {
    FILE *fp;

    // 使用 "stdio.h" 头文件中的函数打开文件,并判断是否成功
    if ((fp = fopen("test.txt", "w")) == NULL) {
        printf("Error opening file\n");
        exit(1);
    }

    // 使用 "stdio.h" 中的函数向文件中写入数据
    fputs("This is a test", fp);

    // 使用 "stdlib.h" 中的函数释放之前分配的动态内存
    char *str = (char*) malloc(15);
    strcpy(str, "Dynamic memory");
    printf("%s\n", str);
    free(str);

    return 0;
}