c 的api文档
- 行业动态
- 2025-02-26
- 2
C 的 API 文档
C 语言作为一种通用的、面向过程的编程语言,拥有丰富的标准库函数,这些函数构成了 C 语言的 API,以下是对一些常用 C 语言 API 的详细描述:
一、数学函数
函数名 | 功能 | 头文件 | 示例 |
abs |
求整数的绝对值 |
|
int a = -5; int b = abs(a); // b 的值为 5 |
labs |
求长整型数的绝对值 |
|
long a = -10L; long b = labs(a); // b 的值为 10 |
fabs |
求浮点数的绝对值 |
|
double a = -3.14; double b = fabs(a); // b 的值为 3.14 |
sqrt |
计算平方根 |
|
double a = 9.0; double b = sqrt(a); // b 的值为 3.0 |
pow |
计算幂 |
|
double a = 2.0; double b = pow(a, 3); // b 的值为 8.0 |
sin |
计算正弦值(弧度制) |
|
double a = M_PI / 6; double b = sin(a); // b 的值约为 0.5 |
cos |
计算余弦值(弧度制) |
|
double a = M_PI / 3; double b = cos(a); // b 的值约为 0.5 |
tan |
计算正切值(弧度制) |
|
double a = M_PI / 4; double b = tan(a); // b 的值为 1.0 |
二、字符串函数
函数名 | 功能 | 头文件 | 示例 |
strlen |
计算字符串长度 |
|
char str[] = "Hello"; size_t len = strlen(str); // len 的值为 5 |
strcpy |
复制字符串 |
|
char src[] = "World"; char dest[20]; strcpy(dest, src); // dest 的值为 "World" |
strcat |
连接字符串 |
|
char str1[] = "Hello "; char str2[] = "World"; strcat(str1, str2); // str1 的值为 "Hello World" |
strcmp |
比较字符串 |
|
char str1[] = "abc"; char str2[] = "abd"; int result = strcmp(str1, str2); // result 的值小于 0 |
strchr |
查找字符在字符串中的位置 |
|
char str[] = "hello"; char ch = 'e'; char *ptr = strchr(str, ch); // ptr 指向 'e' |
strstr |
查找子字符串在字符串中的位置 |
|
char str[] = "hello world"; char sub[] = "world"; char *ptr = strstr(str, sub); // ptr 指向 "world" |
三、时间函数
函数名 | 功能 | 头文件 | 示例 |
time |
获取当前时间(秒数) |
|
time_t t = time(NULL); // 获取当前时间 |
localtime |
将时间转换为本地时间结构体 |
|
time_t t = time(NULL); struct tm *lt = localtime(&t); // 转换为本地时间结构体 |
gmtime |
将时间转换为格林尼治时间结构体 |
|
time_t t = time(NULL); struct tm *gt = gmtime(&t); // 转换为格林尼治时间结构体 |
strftime |
格式化时间字符串 |
|
time_t t = time(NULL); struct tm *lt = localtime(&t); char buffer[80]; strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", lt); // 格式化为 "年-月-日 时:分:秒" |
四、动态内存分配函数
函数名 | 功能 | 头文件 | 示例 |
malloc |
分配指定字节数的内存空间 |
|
int *p = (int *)malloc(10 * sizeof(int)); // 分配可存储 10 个 int 类型数据的内存空间 |
calloc |
分配并初始化为零的指定字节数的内存空间 |
|
int *p = (int *)calloc(10, sizeof(int)); // 分配并初始化为零的可存储 10 个 int 类型数据的内存空间 |
realloc |
重新分配内存空间 |
|
int *p = (int *)malloc(5 * sizeof(int)); p = (int *)realloc(p, 10 * sizeof(int)); // 重新分配为可存储 10 个 int 类型数据的内存空间 |
free |
释放已分配的内存空间 |
|
int *p = (int *)malloc(10 * sizeof(int)); free(p); // 释放已分配的内存空间 |
五、输入输出函数
| 函数名 | 功能 | 头文件 | 示例 |
| —| —| —| —|
|printf
| 向标准输出打印格式化数据 |<stdio.h>
| `int a = 5; printf("The value of a is %d
", a); // 输出 "The value of a is 5"` |
|scanf
| 从标准输入读取格式化数据 |<stdio.h>
|int a; scanf("%d", &a); // 从输入读取一个整数并存储到变量 a 中
|
|getchar
| 从标准输入读取一个字符 |<stdio.h>
|char c = getchar(); // 读取一个字符并存储到变量 c 中
|
|putchar
| 向标准输出打印一个字符 |<stdio.h>
|char c = 'A'; putchar(c); // 输出字符 'A'
|
|fopen
| 打开文件 |<stdio.h>
|FILE *fp = fopen("file.txt", "r"); // 以只读方式打开文件 file.txt
|
|fclose
| 关闭文件 |<stdio.h>
|FILE *fp = fopen("file.txt", "r"); fclose(fp); // 关闭文件 file.txt
|
|fgets
| 从文件中读取一行字符串 |<stdio.h>
|FILE *fp = fopen("file.txt", "r"); char buffer[100]; fgets(buffer, sizeof(buffer), fp); // 从文件中读取一行字符串到 buffer 中
|
|fputs
| 向文件中写入字符串 |<stdio.h>
|FILE *fp = fopen("file.txt", "w"); fputs("Hello, world!", fp); // 向文件中写入字符串 "Hello, world!"
|
FAQs
问题 1:如何用 C 语言实现字符串的反转?
答:可以使用双指针法,一个指针指向字符串的开头,另一个指针指向字符串的末尾,然后交换两个指针所指向的字符,接着移动指针,直到两个指针相遇或交错。
#include <stdio.h> #include <string.h> void reverseString(char *str) { int n = strlen(str); char temp; for (int i = 0; i < n / 2; i++) { temp = str[i]; str[i] = str[n i 1]; str[n i 1] = temp; } } int main() { char str[] = "Hello, World!"; reverseString(str); printf("Reversed string: %s ", str); return 0; }
问题 2:如何在 C 语言中使用动态内存分配创建一个整数数组并初始化其元素?
答:可以使用malloc
函数分配内存空间,然后使用循环初始化数组元素。
#include <stdio.h> #include <stdlib.h> int main() { int n = 5; int *arr = (int *)malloc(n * sizeof(int)); if (arr == NULL) { printf("Memory allocation failed! "); return -1; } for (int i = 0; i < n; i++) { arr[i] = i + 1; } for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf(" "); free(arr); return 0; }
小编有话说
C 语言的 API 丰富多样,涵盖了从基础数据类型操作到复杂的文件处理和动态内存管理等各个方面,掌握这些 API 对于编写高效、可靠的 C 程序至关重要,在学习和使用过程中,要注意内存管理,避免内存泄漏等问题,同时要熟悉各种函数的参数和返回值的含义及使用方法,这样才能灵活运用这些 API 解决实际问题,希望本文能对大家理解和使用 C 语言的 API 有所帮助。