【C语言必会基础】常用库函数大全——从入门到精通

以下是一些C语言中常用函数的说明和示例:

提示:以下是本篇文章正文内容,下面案例仅供参考

一、stdio.h(标准输入输出库)

1.scanf:

用于从标准输入(通常是键盘)读取格式化输入。

2.printf:

用于格式化输出到标准输出(通常是屏幕)。

3.sprintf

类似于printf,但是将格式化的输出写入字符串。

#include <stdio.h>
int main() {
    char buffer[100];
    int age = 25;
    sprintf(buffer, "I am %d years old.", age);
    printf("%s\n", buffer);
    return 0;
}

注释:

1. char buffer[100];: 这行代码声明了一个字符数组 buffer,大小为 100 个字符。这个数组将用来存储 sprintf 函数生成的字符串。

 2.sprintf(buffer, "I am %d years old.", age);: 这行代码使用 sprintf 函数将格式化的字符串存储到 buffer 中。"I am %d years old." 是一个格式字符串,其中 %d 是一个占位符,用于整数值。age 是传递给格式字符串的实际值,即 25。

sprintf 函数将 "I am 25 years old." 这个字符串格式化并存储到 buffer 中。

 4.fgets

从文件或标准输入读取字符串

#include <stdio.h>
int main() {
    char str[100];
    fgets(str, 100, stdin);
    printf("You entered: %s", str);
    return 0;
}

 注意:

  1. fgets(str, 100, stdin);: 这行代码使用 fgets 函数从标准输入(通常是键盘)读取一行文本。str 是存储输入的字符数组,100 是最大读取字符数(包括空字符 \0),stdin 是标准输入流。

    当这行代码执行时,程序会等待用户输入一行文本。用户输入文本后按下回车键,fgets 会读取这行文本并将其存储在 str 数组中,包括最后的换行符 \n(如果还有空间的话)。如果用户输入的字符数少于 100 个字符,fgets 会在读取到换行符或到达最大字符数时停止读取。

  2. printf("You entered: %s", str);: 这行代码使用 printf 函数将一条消息和用户输入的文本输出到屏幕。"You entered: %s" 是一个格式字符串,其中 %s 是一个占位符,用于字符串值。

二、stdlib.h(标准库)

1.malloc

动态内存分配

#include <stdlib.h>
int main() {
    int *p = (int *)malloc(sizeof(int) * 10);
    if (p == NULL) {
        printf("Memory allocation failed.\n");
        return 1;
    }
    free(p);
    return 0;
}

2.free

释放动态分配的内存//同上

3.system

执行系统命令

#include <stdlib.h>
int main() {
    system("ls");
    return 0;
}

三、string.h(字符串处理库)

1. 字符串复制

函数功能注意事项
strcpy(dest, src)将 src 字符串复制到 destdest 空间必须足够大
strncpy(dest, src, n)复制 src 的前 n 个字符到 dest不会自动补 \0

示例

char dest[10];
strcpy(dest, "hello");  // dest = "hello"

2. 字符串连接

函数功能
strcat(dest, src)将 src 拼接到 dest 末尾
strncat(dest, src, n)拼接 src 的前 n 个字符

示例

char str[20] = "hello";
strcat(str, " world");  // str = "hello world"

3. 字符串比较

函数返回值说明
strcmp(s1, s2)=0 相等,>0 s1 大,<0 s2 大区分大小写
strncmp(s1, s2, n)比较前 n 个字符

示例

if (strcmp("abc", "ABC") > 0) {
    printf("abc > ABC");  // 输出(因为 'a' > 'A')
}

例如:当比较字符串 "cd" 和字符串 "az" 时,strcmp 函数会逐个字符比较它们的 ASCII 码值,直到找到不同的字符或字符串结束。

比较过程

  1. 比较第一个字符

    • s1 的第一个字符是 'c',ASCII 码值为 99。

    • s2 的第一个字符是 'a',ASCII 码值为 97。

    • 比较 'c''a' 的 ASCII 码值:99 > 97

    因为 'c' 的 ASCII 码值大于 'a',所以 strcmp("cd", "az") 会返回一个 大于 0 的值。

  2. 后续字符的比较

    • 由于第一个字符已经决定了比较结果,strcmp 不会继续比较后续的字符(即 'd''z')。

返回值

根据上述比较,strcmp("cd", "az") 会返回一个 大于 0 的值。具体返回值通常是两个字符 ASCII 码值的差值:

  • 返回值为 99 - 97 = 2


4. 字符串长度

函数说明
strlen(s)返回 s 的长度(不含 \0

注意

char s[] = "hello";
printf("%d", strlen(s));  // 输出 5

5. 内存操作(也可用于字符串)

函数功能
memcpy(dest, src, n)复制 n 字节的内存块
memset(s, val, n)将 s 的前 n 字节设为 val

示例

char s[10];
memset(s, 'A', 5);  // s = "AAAAA\0..."

6. 字符串查找

函数功能
strchr(s, c)查找字符 c 在 s 中首次出现的位置
strstr(s, substr)查找子串 substr 在 s 中的位置

示例

char *p = strstr("hello world", "wor");  // p 指向 "world"

7. 其他实用函数

函数功能
strtok(s, delim)用 delim 分割字符串 s(会修改原字符串)
strerror(errno)将错误码转为错误信息字符串

重要注意事项

  1. 安全性问题

    • strcpystrcat 等函数不会检查目标数组大小,可能导致缓冲区溢出。

    • 更安全的替代函数(如 strncpystrncat)需要手动处理 \0

  2. 字符串结尾
    所有字符串必须以 \0 结尾,否则函数会越界访问内存。

  3. 头文件
    使用时需包含头文件:

    #include <string.h>

新手建议

  • 先掌握 strcpystrcmpstrlen 这三个最常用的函数。

  • 练习时多用 strncpy 和 strncat 避免溢出问题。

  • 遇到分割字符串的需求时,再学习 strtok

四、math.h(数学库)

  1. 基础数学函数

    • abs:计算整数的绝对值。int abs(int x);
    • fabs:计算浮点数的绝对值。double fabs(double x);
    • floor:计算小于或等于给定浮点数的最大整数。
    • ceil:计算大于或等于给定浮点数的最小整数。
    • round:将浮点数四舍五入到最近的整数。
    • trunc:将浮点数截断为整数部分。
    • sqrt: 用于计算双精度的平方根。double sqrt(double x);
  2. 指数和对数函数

    • exp:计算e的双精度实数x次幂。double exp(double x)
    • log:计算以e为底的双精度实数x的对数ln(x)。double log(double x)
    • log10:计算以10为底的双精度实数x的对数lg(x)。double log10(double x)
    • pow:计算 𝑥x 的 𝑦y 次幂。double pow(double x,double y);
  3. 三角函数

    • sin:计算正弦值。 double sin(double x)
    • cos:计算余弦值。//同上
    • tan:计算正切值。
    • asin:计算反正弦值。double asin(double x)
    • acos:计算反余弦值。
    • atan:计算反正切值。
    • atan2:计算两个参数的反正切值,可以确定正确的象限。double atan2(double y, double x);
  4. 双曲函数

    • sinh:计算双曲正弦值。double sinh(double x)
    • cosh:计算双曲余弦值。
    • tanh:计算双曲正切值。
    • asinh:计算反双曲正弦值。
    • acosh:计算反双曲余弦值。
    • atanh:计算反双曲正切值。//皆同上!
  5. 浮点环境

    • frexp:将浮点数分解为尾数和指数。
    • ldexp:计算 𝑥×2𝑛x×2n,其中 𝑥x 是尾数,𝑛n 是指数。
    • modf:将浮点数分解为整数部分和小数部分。
  6. 误差函数和特殊函数

    • erf:计算误差函数。
    • erfc:计算互补误差函数。
    • tgamma:计算伽玛函数。
    • lgamma:计算伽玛函数的自然对数。
  7. 常量

    • M_PI:圆周率 𝜋π 的值。
    • M_E:自然对数的底 𝑒e 的值。
    • M_LOG2E:以 2 为底 𝑒e 的对数值。
    • M_LOG10E:以 10 为底 𝑒e 的对数值。
    • M_SQRT2:2 的平方根。
    • M_SQRT1_2:1/2 的平方根。

五、. ctype.h(字符处理库)

1.字符类型判断函数

字符类型判断函数用于判断字符的类型,如是整数、字母还是标点符号等。如果是,返回非零,否则返回零

1.int isalnum(int c):文字或者数字

2.int isalpha(int c):字母

3.int iscntrl(int c):控制符

4.int isdigit(int c):数字

5.int isgraph(int c):可打印的(排除空格)

6.int islower(int c):小写字母

7.int isprint(int c):可打印的(包括空格)

8.int ispunct(int c):可打印的(包括空格、字母或数字之外)

9.int isspace(int c):空格

10.int isupper(int c):大写字母

11.int isxidigit(int c):十六进制数字

2.字符大小写转换函数

字符大小转换函数主要用于字母大小写转换

int tolower(int c)
当c为大写字母时,则返回对应的小写字母,否则返回原来的值。

int toupper(int c)
当c为小写英文字母时,则返回对应的大写字母,否则返回原来的值。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了C语言中一些常用库函数的使用,而C语言提供了大量能使我们快速便捷地处理数据和执行各种操作的函数和方法。通过这些库函数,我们可以高效地进行数学计算、字符处理、时间管理、内存分配以及输入输出操作,极大地提高了编程的效率和程序的性能。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值