1. <string.h>
- 功能:提供了一系列函数用于字符串处理(包括字符数组操作)和内存操作。
- 主要用途:处理以空字符('\0')结尾的字符串,提供字符串的复制、连接、比较、查找等功能;同时也包含一些内存操作函数(如 memcpy())。
- 常用函数:
- strlen():返回字符串的长度(不包括 \0)。
- strcpy():将源字符串复制到目标字符串。
- strcat():将两个字符串连接起来。
- strcmp():比较两个字符串。
- strchr():在字符串中查找第一次出现的指定字符。
- memcpy():从一个内存位置复制一块内存到另一个位置。
- memset():设置内存块中的字节值。
- 例子:
#include <string.h>
#include <stdio.h>
int main() {
char str1[50] = "Hello, ";
char str2[] = "World!";
strcat(str1, str2); // 将 str2 连接到 str1 后面
printf("Concatenated String: %s\n", str1); // 输出 "Hello, World!"
printf("Length of str1: %zu\n", strlen(str1)); // 输出 13
return 0;
}
2. <stdlib.h>
- 功能:提供了与程序控制、内存分配、进程控制、转换等相关的函数。
- 主要用途:内存管理(如动态内存分配、释放内存)、程序控制(如退出程序)、数学运算(如随机数生成、转换字符串为数字等)以及环境变量操作。
- 常用函数:
- malloc()、calloc()、free():动态内存分配和释放。
- exit():终止程序的执行。
- atoi()、atof():将字符串转换为整数或浮点数。
- rand()、srand():生成随机数。
- abs():求绝对值。
- system():调用操作系统的命令。
- 例子:
#include <stdlib.h> #include <stdio.h> int main() { int *arr; arr = (int *)malloc(5 * sizeof(int)); // 动态分配一个存储5个整数的内存 if (arr == NULL) { printf("Memory allocation failed!\n"); return 1; // 如果内存分配失败,返回错误 } for (int i = 0; i < 5; i++) { arr[i] = i * 10; } for (int i = 0; i < 5; i++) { printf("%d ", arr[i]); // 输出 0 10 20 30 40 } free(arr); // 释放动态分配的内存 return 0; }
- 对比:两者的对比图如下:
至于具体的区别还是需要通过多打代码自己去探究。
除了上面的两个库函数头文件外,再给大家扩展一个<windows.h>
3. <windows.h>
- 功能:这是一个平台特定的头文件,用于在 Windows 操作系统上进行系统编程。它包含了 Windows API 的声明,用于访问操作系统的各种功能,如文件管理、窗口管理、线程和进程管理、图形处理、网络通信、时间控制等。
- 常用功能:
- Windows 系统调用:如 CreateFile()、ReadFile()、WriteFile()、CloseHandle() 等。
- Windows 窗口管理:如 CreateWindow()、ShowWindow()、MessageBox() 等。
- 线程和进程控制:如 CreateThread()、ExitThread()、CreateProcess() 等。
- 时间和延迟函数:如 Sleep()、GetTickCount() 等。
- 错误处理:如 GetLastError()、SetLastError() 等。
- 例子:
#include <windows.h>
int main() {
MessageBox(NULL, "Hello, Windows!", "Greetings", MB_OK);
return 0;
}
下面为大家演示一个实际案例:字符逐步向中间靠拢
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main() {
char arr1[] = "welcome to bit!!!!";
char arr2[] = "##################";
int left = 0;
int right = strlen(arr2) - 1;
while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2); // 使用 %s 打印字符数组
Sleep(1000); // 跳转时长
system("cls");//库函数,可以执行系统命令
left++;
right--;
}
printf("%s\n",arr2);
return 0;
}
可以自己手动打一打看看效果。