C语言系统函数-(新增)

一、输入输出函数(I/O)

头文件<stdio.h>

函数 功能 示例
printf() 格式化输出到标准输出 printf("Hello, %s!\n", name);
scanf() 从标准输入读取格式化数据 scanf("%d", &num);
gets() / fgets() 读取字符串(gets 已废弃,推荐 fgets fgets(buffer, 100, stdin);
puts() 输出字符串并换行 puts("Hello");
fopen() / fclose() 打开/关闭文件 FILE *fp = fopen("file.txt", "r");
fprintf() / fscanf() 文件格式化输入输出 fprintf(fp, "%d", value);
fread() / fwrite() 二进制读写 fread(buffer, 1, size, fp);

二、字符串处理函数

头文件<string.h>

函数 功能 示例
strcpy() 字符串复制 strcpy(dest, src);
strcat() 字符串拼接 strcat(str1, str2);
strlen() 获取字符串长度 int len = strlen(s);
strcmp() 字符串比较 if (strcmp(s1, s2) == 0)
strstr() 查找子串 char *p = strstr(haystack, needle);
strchr() / strrchr() 查找字符首次/最后一次出现位置 char *p = strchr(s, 'a');
memset() / memcpy() / memmove() 内存操作 memset(buffer, 0, 100);

⚠️ 注意:strcpystrcat 等不检查边界,易导致缓冲区溢出,推荐使用更安全的 strncpystrncat(需手动补 \0)。


三、内存管理函数

头文件<stdlib.h>

函数 功能 示例
malloc() 动态分配内存 int *p = (int*)malloc(10 * sizeof(int));
calloc() 分配并初始化为 0 int *p = (int*)calloc(10, sizeof(int));
realloc() 重分配内存 p = realloc(p, 20 * sizeof(int));
free() 释放内存 free(p);

注意:使用后需 free(),避免内存泄漏;释放后应将指针置为 NULL


四、数学函数

头文件<math.h>

函数 功能 示例
sqrt() 平方根 double r = sqrt(16.0); // 4.0
pow() 幂运算 double x = pow(2, 3); // 8
sin() / cos() / tan() 三角函数 double s = sin(M_PI / 2);
abs() 整数绝对值(<stdlib.h> int a = abs(-5);
fabs() 浮点绝对值 double f = fabs(-3.14);
ceil() / floor() 向上/向下取整 double c = ceil(3.2); // 4.0

编译时通常需链接数学库:gcc file.c -lm


五、字符处理函数

头文件<ctype.h>

函数 功能 示例
isalpha() 是否为字母 if (isalpha(c))
isdigit() 是否为数字 if (isdigit(c))
isalnum() 字母或数字 if (isalnum(c))
islower() / isupper() 小写/大写判断 if (isupper(c))
tolower() / toupper() 转换大小写 c = tolower('A'); // 'a'

六、时间与日期函数

头文件<time.h>

函数 功能 示例
time() 获取当前时间(秒) time_t t = time(NULL);
ctime() 转为可读字符串 printf("%s", ctime(&t));
localtime() / gmtime() 转为本地/UTC 时间结构 struct tm *tm = localtime(&t);
strftime() 格式化时间输出 strftime(buf, 80, "%Y-%m-%d", tm);

七、程序控制与实用函数

头文件<stdlib.h>

函数 功能 示例
exit() 终止程序 exit(0);
atoi() / atof() / atol() 字符串转数字 int n = atoi("123");
rand() / srand() 随机数生成 srand(time(NULL)); int r = rand();
system() 执行系统命令 system("ls");(Unix)或 system("dir");(Windows)

随机数注意:srand() 只需调用一次(通常在 main 开头)。


八、错误处理

头文件<errno.h>

  • 全局变量 errno:记录最近一次系统调用错误码。
  • perror():打印错误信息。

总结:常用头文件速查

功能类别 头文件
输入输出 <stdio.h>
字符串 <string.h>
内存/通用 <stdlib.h>
数学 <math.h>
字符判断 <ctype.h>
时间日期 <time.h>
错误码 <errno.h>
相关推荐
吴声子夜歌7 分钟前
ApacheCommons——commons-cli(命令行参数解析)
java·开发语言·apache
benchmark_cc1 小时前
REST API 和 Python SDK 应该怎么选?量化交易数据接口选型实战
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
王的宝库1 小时前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
Tairitsu_H1 小时前
[C++] 深入理解红黑树:封装set与map
开发语言·c++·set·map·红黑树·模拟实现
泡海椒1 小时前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
小智老师PMP2 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
江畔柳前堤3 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
Figo_Cheung3 小时前
Figo基于RNC理论的宇宙演化第七纪元猜想
开发语言·php
泡海椒4 小时前
JQuick-Curl 二次开发:自定义解析器、扩展点开发指南,如何把框架能力真正变成团队资产
java·开发语言·okhttp·maven
WWJA王文举5 小时前
FreeRTOS事件组和任务通知详解:为什么任务通知比队列更轻量?
开发语言·php