C语言函数大全-- t 开头的函数

news2024/7/30 20:50:06

C语言函数大全

本篇介绍C语言函数大全-- t 开头的函数

1. tan,tanf,tanl

1.1 函数说明

函数声明函数功能
double tan(double x)计算 以弧度 x 为单位的角度的正切值(double)
float tanf(float x)计算 以弧度 x 为单位的角度的正切值(float)
long double tanl(long double x)计算 以弧度 x 为单位的角度的正切值(long double)

1.2 演示示例

#include <stdio.h>
#include <math.h>

int main() 
{
    double x = 45.0;
    double tan_value = tan(x * M_PI / 180.0);
    printf("The tangent of %lf degrees is %lf\n", x, tan_value);

    float xf = 60.0f;
    float tan_valuef = tanf(xf * M_PI / 180.0f);
    printf("The tangent of %f degrees is %f\n", xf, tan_valuef);

    long double xL = 30.0l;
    long double tan_valueL = tanl(xL * M_PI / 180.0l);
    printf("The tangent of %Lf degrees is %Lf\n", xL, tan_valueL);
    return 0;
}

1.3 运行结果

在这里插入图片描述

2. tanh,tanhf,tanhl

2.1 函数说明

函数声明函数功能
double tanh(double x);计算 x 的双曲正切值(double)
float tanhf(float x);计算 x 的双曲正切值(float)
long double tanhl(long double x);计算 x 的双曲正切值(long double)

2.2 演示示例

#include <stdio.h>
#include <math.h>

int main() 
{
    double x = 1.0;
    double tan_value = tanh(x);
    printf("%lf 的双曲正切值是 %lf\n", x, tan_value);

    float y = 2.0f;
    float tanh_value = tanhf(y);
    printf("%f 的双曲正切值是 %f\n", y, tanh_value);

    long double z = 3.0l;
    long double tanhl_value = tanhl(z);
    printf("%Lf 的双曲正切值是 %Lf\n", z, tanhl_value);

    return 0;
}

2.3 运行结果

在这里插入图片描述

3. tell

3.1 函数说明

函数声明函数功能
off_t tell(int fd);用于返回文件指针当前位置相对于文件开头的偏移量

参数:

  • fd : 是文件描述符,表示要查询的文件

3.2 演示示例

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

int main() 
{
    char buf[100];
    int fd = open("test.txt", O_RDONLY);
    off_t offset = tell(fd);
    printf("当前的文件偏移量是 %ld\n", offset);

    int nread = read(fd, buf, sizeof(buf));
    offset = tell(fd);
    printf("读取了 %d 个字节后,文件偏移量是 %ld\n", nread, offset);

    close(fd);
    return 0;
}

在上面这个示例中,

  • 首先我们打开了一个名为 test.txt 的文件,并使用 tell() 函数获取了当前的文件偏移量。
  • 然后我们用 read() 函数读取了一些数据,并再次使用 tell() 函数来获取新的文件偏移量。
  • 最后我们使用 close() 函数关闭文件。

注意:tell() 函数和 lseek 函数的功能类似,但有一个重要的区别:tell() 函数只用于查询当前位置,而不能修改文件指针的位置。如果要修改文件指针的位置,请使用 lseek() 函数。

下面我们来看看,使用 lseek() 函数来演示上面的 tell() 函数的示例 :

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

int main() 
{
    char buf[100];
    int fd = open("test.txt", O_RDONLY);
    off_t offset = lseek(fd, 0, SEEK_CUR);
    printf("当前的文件偏移量是 %ld\n", offset);

    int nread = read(fd, buf, sizeof(buf));
    offset = lseek(fd, 0, SEEK_CUR);
    printf("读取了 %d 个字节后,文件偏移量是 %ld\n", nread, offset);

    close(fd);
    return 0;
}

3.3 运行结果

在这里插入图片描述
在这里插入图片描述

4. telldir

4.1 函数说明

函数声明函数功能
long int telldir(DIR *dirp);获取目录流的当前位置

参数:

  • dirp : 指向 DIR 类型结构体的指针

4.2 演示示例

#include <stdio.h>
#include <dirent.h>

int main() 
{
    DIR *dirp;
    struct dirent *direntp;

    // 打开当前工作目录
    dirp = opendir(".");

    if (dirp == NULL) 
    {
        printf("无法打开目录。\n");
        return 1;
    }

    // 遍历目录下的所有文件和子目录
    while ((direntp = readdir(dirp)) != NULL) 
    {
        printf("%s\n", direntp->d_name);
    }

    closedir(dirp);

    return 0;
}

4.3 运行结果

在这里插入图片描述

5. textheight,textwidth

5.1 函数说明

函数声明函数功能
int textheight(char *string);用于获取当前文本模式下字符的高度
int textwidth(char *string);用于获取当前文本模式下字符的宽度

参数:

  • string : 要查询的字符串

5.2 演示示例

#include <graphics.h>

int main() {
   initwindow(640, 480, "Example");
   char str[] = "Hello, world!";
   int height = textheight(str); // 当前文本模式下字符的高度
   int width = textwidth(str); // 当前文本模式下字符的宽度
   outtextxy(100, 100, str);
   outtextxy(100, 120, "Height: ");
   outtextxy(170, 120, itoa(height, str, 10));
   outtextxy(100, 140, "Width: ");
   outtextxy(170, 140, itoa(width, str, 10));
   getch();
   closegraph();
   return 0;
}

5.3 运行结果

在这里插入图片描述

6. time

6.1 函数说明

函数声明函数功能
time_t time(time_t *timer);可以用于获取从 1970 年 1 月 1 日 00:00:00 UTC 到当前时间的秒数

参数:

  • timer : 一个指向 time_t 类型对象的指针,如果不想使用此参数,可以将它设置为 NULL

6.2 演示示例

#include <stdio.h>
#include <time.h>

int main() 
{
    time_t curtime;
    time(&curtime);
    printf("当前时间是 %s", ctime(&curtime));
    return 0;
}

在上面的示例中,

  • 首先我们使用 time() 函数来获取当前时间的秒数;
  • 然后使用 ctime() 函数将其转换为可读的日期和时间格式;
  • 最后,再用将日期和时间字符串输出到标准输出流中。

6.3 运行结果

在这里插入图片描述

7. tmpfile

7.1 函数说明

函数声明函数功能
FILE *tmpfile(void);可以用于在临时目录中创建一个唯一的临时文件,并返回文件指针

7.2 演示示例

#include <stdio.h>

int main() 
{
    FILE *fp;
    char str[60];

    fp = tmpfile();
    if (fp == NULL) 
    {
        perror("打开临时文件失败");
        return 1;
    }

    fputs("这是一个临时文件", fp);
    rewind(fp);
    fgets(str, sizeof(str), fp);
    printf("从临时文件读取的内容是: %s", str);

    fclose(fp);
    return 0;
}

7.3 运行结果

在这里插入图片描述
在上述的示例中,

  • 首先我们使用 tmpfile() 函数创建一个临时文件;
  • 接着使用 fputs() 函数将字符串 "这是一个临时文件" 写入该文件;
  • 然后,我们使用 rewind() 函数将文件指针移动到文件开始处;
  • 再接着,使用 fgets() 函数从临时文件中读取数据并将其存储到字符串数组 str 中;
  • 最后,我们输出从临时文件中读取的数据,并关闭临时文件。

注意: 使用 tmpfile() 创建的临时文件只在程序运行期间存在,并在程序终止时自动删除。如果需要在程序运行期间保留临时文件,请使用 tmpnam()mkstemp() 等函数来创建文件。

8. tmpnam

8.1 函数说明

函数声明函数功能
char *tmpnam(char *s);用于创建一个唯一的临时文件名

参数:

  • s : 一个指向字符数组的指针,用于存储临时文件名。如果 s 等于 NULL,则函数会返回指向静态内存区的指针,该内存区包含了唯一的临时文件名

8.2 演示示例

#include <stdio.h>

int main() 
{
    char tmpname[L_tmpnam];
    char *filename;

    filename = tmpnam(tmpname);
    printf("临时文件名是:%s\n", filename);

    return 0;
}

在上面的示例中,

  • 我们首先使用 tmpnam() 函数创建一个唯一的临时文件名;
  • 然后将其存储到字符数组 tmpname 中;
  • 最后,我们输出该临时文件名。

注意: 使用 tmpnam() 创建的临时文件名只在程序运行期间存在,不具有真正唯一性,因此可能存在一定程度的风险。如果需要创建一个具有真正唯一性的临时文件,请考虑使用 mkstemp() 或类似的函数。

8.3 运行结果

在这里插入图片描述

9. toascii

9.1 函数说明

函数声明函数功能
int toascii(int c);将一个字符转换为其对应的 ASCII 码值

参数:

  • c : 要转换的字符

9.2 演示示例

#include <stdio.h>
#include <ctype.h>

int main() 
{
    char ch = 'A';

    // 将字符转换为其对应的 ASCII 码值
    int ascii_val = toascii(ch);

    printf("字符 %c 的 ASCII 码值为 %d\n", ch, ascii_val);

    return 0;
}

注意 : toascii() 函数已经过时,不建议在新代码中使用。在 C99 标准中,改用更安全的 isascii() 函数来检查字符是否为 7-bit ASCII 字符,并使用位掩码操作或其他算法来将非 ASCII 字符转换为相应的 7-bit ASCII 码值。

知识点: 7-bit ASCII,也称为美国信息交换标准代码 (American Standard Code for Information Interchange),是一种基于英语的字符编码系统,使用 7 个二进制位(即一个字节)表示每个字符。它涵盖了拉丁字母、数字、标点符号和一些特殊符号,共计 128 个字符。

9.3 运行结果

在这里插入图片描述

10. tolower

10.1 函数说明

函数声明函数功能
int tolower(int c);可以用于将一个 ASCII 字符转换为小写字母

参数:

  • c : 要转换的字符

10.2 演示示例

#include <stdio.h>
#include <ctype.h>

int main() 
{
    char str[] = "Hello, World!";
    int i = 0;

    printf("转换前字符串: %s\n", str);

    printf("转换后字符串: ");
    while (str[i]) {
        putchar(tolower(str[i]));
        i++;
    }

    return 0;
}

10.3 运行结果

在这里插入图片描述

11. toupper

11.1 函数说明

函数声明函数功能
int toupper(int c);可以用于将一个 ASCII 字符转换为大写字母

参数:

  • c : 要转换的字符

11.2 演示示例

#include <stdio.h>
#include <ctype.h>

int main() 
{
    char str[] = "Hello, World!";
    int i = 0;

    printf("转换前字符串: %s\n", str);

    printf("转换后字符串: ");
    while (str[i]) {
        putchar(toupper(str[i]));
        i++;
    }

    return 0;
}

11.3 运行结果

在这里插入图片描述

12. trunc,truncf,truncl

12.1 函数说明

函数声明函数功能
double trunc(double x);截取 x 的小数部分,并返回整数部分(double)
float truncf(float x);截取 x 的小数部分,并返回整数部分(float)
long double truncl(long double x);截取 x 的小数部分,并返回整数部分(long double)

12.2 演示示例

#include <stdio.h>
#include <math.h>

int main() 
{
    double x = 3.14159;
    float y = 2.71828f;
    long double z = 1.41421356L;

    // 截去 double 类型浮点数的小数部分
    double a = trunc(x);

    // 截去 float 类型浮点数的小数部分
    float b = truncf(y);

    // 截去 long double 类型浮点数的小数部分
    long double c = truncl(z);

    printf("double 类型 %.5lf 的整数部分为 %.0lf\n", x, a);
    printf("float 类型 %.5f 的整数部分为 %.0f\n", y, b);
    printf("long double 类型 %.8Lf 的整数部分为 %.0Lf\n", z, c);

    return 0;
}

12.3 运行结果

在这里插入图片描述

13. tzset

13.1 函数说明

函数声明函数功能
void tzset(void);可以用于设置时区信息

参数:

13.2 演示示例

UNIX/Linux 下示例:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define _XOPEN_SOURCE 700

int main() 
{
    time_t rawtime;
    struct tm *timeinfo;

    // 设置时区为 UTC
    setenv("TZ", "UTC", 1);
    tzset();

    time(&rawtime);
    timeinfo = localtime(&rawtime);
    printf("当前时间是:%s", asctime(timeinfo));

    return 0;
}

windows 下示例:

#include <stdio.h>
#include <windows.h>
#include <time.h>

int main()
{
    time_t rawtime;
    struct tm *timeinfo;

    TIME_ZONE_INFORMATION tzinfo;
    GetTimeZoneInformation(&tzinfo);

    // 将 WCHAR* 转换为 char*
    int len = WideCharToMultiByte(CP_UTF8, 0, tzinfo.StandardName, -1, NULL, 0, NULL, NULL);
    char* standard_name = (char*) malloc(len * sizeof(char));
    WideCharToMultiByte(CP_UTF8, 0, tzinfo.StandardName, -1, standard_name, len, NULL, NULL);

    _putenv_s("TZ", standard_name);
    tzset();

    time(&rawtime);
    timeinfo = localtime(&rawtime);
    printf("当前时间是:%s", asctime(timeinfo));

    free(standard_name);
    return 0;
}

在上述示例代码中,

  • 首先定义变量 rawtimetimeinfo,分别用于存储当前时间和时间结构体。
  • 接着使用 GetTimeZoneInformation() 函数获取当前系统时区信息,并将其存储在 tzinfo 变量中。
  • 然后使用 WideCharToMultiByte() 函数将 tzinfo.StandardName 转换为 UTF-8 编码的字符串,并将其存储在 standard_name 变量中。
  • 再接着使用 putenv_s() 函数将 standard_name 设置为环境变量 TZ 的值,并使用 tzset 函数更新本地时区信息。
  • 再然后使用 localtime() 函数将 rawtime 转换为时间结构体 timeinfo
  • 之后使用 asctime() 函数将时间结构体 timeinfo 转换为字符串格式,并输出到标准输出流中。
  • 最后释放 standard_name 分配的内存空间,并正常结束程序。

13.3 运行结果

在这里插入图片描述

14. tgamma,tgammaf,tgammal

14.1 函数说明

函数声明函数功能
double tgamma(double x);用于计算 Gamma 函数(double)
float tgammaf(float x);用于计算 Gamma 函数(float)
long double tgammal(long double x);用于计算 Gamma 函数(long double)

14.2 演示示例

#include <stdio.h>
#include <math.h>

int main() 
{
    double x = 5.0;
    float y = 7.2f;
    long double z = 2.5L;

    double result1 = tgamma(x);
    float result2 = tgammaf(y);
    long double result3 = tgammal(z);

    printf("tgamma(%lf) = %lf\n", x, result1);
    printf("tgammaf(%f) = %f\n", y, result2); 
    printf("tgammal(%Lf) = %Lf\n", z, result3);

    return 0;
}

知识点: 伽玛函数(Gamma 函数),也叫欧拉第二积分,是阶乘函数在实数与复数上扩展的一类函数。

14.3 运行结果

在这里插入图片描述

参考

  1. [API Reference Document]
  2. [ASCII]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/507377.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot项目创建和使用

一、Spring Boot简介 1.概念 Spring Boot 就是 Spring 框架的脚⼿架&#xff0c;它就是为了快速开发 Spring 框架⽽诞⽣的。 2.优点 有快速集成框架&#xff0c;可以快速添加外部jar包内置web框架&#xff0c;可以直接运行可以快速部署&#xff0c;不依赖任何外部的web容器…

【牛客刷题专栏】0x26:JZ25 合并两个排序的链表(C语言编程题)

前言 个人推荐在牛客网刷题(点击可以跳转)&#xff0c;它登陆后会保存刷题记录进度&#xff0c;重新登录时写过的题目代码不会丢失。个人刷题练习系列专栏&#xff1a;个人CSDN牛客刷题专栏。 题目来自&#xff1a;牛客/题库 / 在线编程 / 剑指offer&#xff1a; 目录 前言问…

MATLAB 之 数值数据,矩阵的表示和变量及其操作

文章目录 一、数值数据1. 数值数据类型的分类1.1 整型1.2 浮点型1.3 复型 2. 数据的输出格式 二、矩阵的表示1. 矩阵的建立1.1 直接输入法建立矩阵1.2 已建好的矩阵建立更大的矩阵 2. 冒号表达式3. 矩阵元素的引用3.1 矩阵元素的引用方式3.2 利用冒号表达式获得子矩阵3.3 利用空…

Spring执行流程Bean生命周期

Spring执行流程 说明&#xff1a;这里只是说的大概流程&#xff0c;不是严格按照源码上一步一步说的。 简单来说&#xff0c;分为下边四个步骤&#xff1a; 启动Spring容器实例化Bean&#xff08;分配内存空间&#xff09;将Bean注册到Spring当中&#xff08;存操作&#xf…

【常用 Linux 命令的基本使用】总结篇(附必要的 Ubuntu 截图)

本文目录 1. 常用 Linux 命令的基本使用1.1 学习 Linux 终端命令的原因1.2 常用 Linux 命令的基本使用1.3 自动补全 2. Linux 终端命令格式2.1 终端命令格式2.2 查阅命令帮助信息&#xff08;了解&#xff09; 3. 文件和目录常用命令3.1 查看目录内容3.1.1 终端实用技巧3.1.2 l…

shell数组

目录 一&#xff1a;数组定义方法 1、方法一 ​ 2、方法二 ​3、方法三 ​4、方法四 5、判断数组是否完整 &#xff08;1&#xff09;方法一 &#xff08;2&#xff09;方法二&#xff1a;通过脚本 二&#xff1a;获取数组值 1、获取数组长度 2、获取数组数据列表 3、…

本地部署 Stable Diffusion web UI

本地部署 ChatGLM-6B 0. 什么是 Stable Diffusion1. 什么是 Stable Diffusion web UI2. Github 地址3. 安装 Miniconda34. 创建虚拟环境5. 安装 Stable Diffusion web UI6. 启动 Stable Diffusion web UI7. 访问 Stable Diffusion web UI8. 其他 0. 什么是 Stable Diffusion S…

UE4 面试题整理

1、new与malloc的区别 new&#xff1a; new首先会去调用operator new函数&#xff0c;申请足够的内存&#xff08;大多数底层用malloc实现&#xff09;&#xff0c;然后调用类型的构造函数来初始化变量&#xff0c;最后返回自定义类型的指针&#xff0c;delete先调用析构函数&…

IDEA配置使用Git

使用IDEA2018.2.8版本下操作 文章目录 一、安装Git1.GitHub与Git的关系2.Git的安装 二、在IDEA中配置Git三、创建远程仓库和本地仓库1.在gitee上创建远程仓库2.在IDEA上创建本地仓库 四、分支操作1.创建分支2.删除分支3.比较分支4.合并分支 一、安装Git 1.GitHub与Git的关系 …

位运算(算法)

目录 一、位运算的知识点二、位运算的应用1. x & 1一个数补码表示中的第k位数字求补码中含有1的个数偶数位与奇数位分开输出 2. x & (-x)返回x的最后一位1及之后的数字判断一个数是否是2的n次方求补码中含有1的个数 3. x & (x - 1)求补码中含有1的个数&#xff08;…

Transformer模型各模块详解及代码实现

Transformer 前言1、Transformer模型整体架构2、Embeeding2.1 词向量2.1.1 独热编码2.1.2 Word Embedding2.1.3 总结 2.2 代码实现 3、Positional Encoding3.1 位置编码简介3.2 代码讲解 4、Multi-Head Attention5、Layer Norm6、Positionwise Feed Forward7、Encoder and Deco…

Qt Creator 的使用技巧

1、Qt Creator 的快捷键 在 Qt Creator 里&#xff0c;假若自己不知道某些功能按钮的快捷键是什么&#xff0c;可以将鼠标移至该按钮 上面就可以知道它的快捷键了。如下图&#xff0c;想知道运行的快捷键是什么&#xff0c;那么我们将鼠标移至 Qt Creator 的左下角的运行…

日常开发中代码技巧(个人使用)

日常开发中代码技巧 String&#xff0c;StringBuffer判断非空 String判断非空 参考&#xff1a;https://blog.csdn.net/Echo_width/article/details/79653704 首先&#xff0c;区分空串和null串 1 空串""是长度为0的字符串&#xff0c;它有自己的串长度&#xff08;…

Python每日一练:小艺读书醉酒的狱卒非降序数组(详解快排)

文章目录 前言一、小艺读书二、醉酒的狱卒三、非降序数组总结 前言 今天这个非降序数组&#xff0c;阅读解理小学水平&#xff0c;说起来都是泪啊。我折腾了一天都没搞定&#xff0c;从冒泡写到快速排序。换了几种都还不行&#xff0c;我又给快排加上插入排序。结果还是不能全…

MySQL--复合查询--0422

注&#xff1a;为了方便查看 mysql语句会有突然的换行&#xff0c;书写时请勿模仿。 目录 1.单表查询回顾 显示工资最高的员工的名字和工作岗位 显示工资高于平均工资的员工信息 2.多表查询 比如需要查询雇员名字和所在部门编号及部门名字。 显示部门号为10的部门名&…

“智慧赋能 强链塑链”——精细化工行业仓储物流数字化转型探讨

精细化工行业作为衡量国家化学工业水平高低的重要标志&#xff0c;为国民经济提供重要的终端产品支持&#xff0c;相比较大化工产品&#xff0c;精细化工产品需要高度专业技能和工艺&#xff0c;其生产过程需要复杂的化学反应&#xff0c;以及严格的控制条件&#xff0c;产出的…

基于 TiDB + Flink 实现的滑动窗口实时累计指标算法

作者&#xff1a;李文杰 前言 在不少的支付分析场景里&#xff0c;大部分累计值指标可以通过 Tn 的方式计算得到 。随着行业大环境由增量市场转为存量市场&#xff0c;产品的运营要求更加精细化、更快速反应&#xff0c;这对各项数据指标的实时性要求已经越来越高。产品如果能…

UDS-19服务的状态掩码字节解析

19服务读DTC信息有01、02、04、06、0A等子服务&#xff0c;使用诊断仪读取DUT数据一般只需发送4字节有效数据&#xff0c;其他无效字节用00或者CC填充&#xff0c;如03 19 02 09 00 00 00 00&#xff0c; 数据分解&#xff1a; 03&#xff1a;表示报文类型未单帧&#xff0c;长…

考研计算机组成原理总结(8)

一.计算机工作过程 计算机工作的过程&#xff0c;即一条条指令工作的过程&#xff1a; 取指令&#xff1a; 1.(PC)—>MAR&#xff0c;把PC存放的指令存储地址传送给MAR3.M(MAR)—>MDR&#xff0c;主存根据地址取出指令存放到MDR中4.(MDR)—>IR&#xff0c;指令从MD…

[golang gin框架] 28.Gin 发送短信,DES加密解,Cookie加密,解密操作

一.发送短信 1.简介 在用户注册的时候,需要发送短信来校验用户以及手机号,达到用户注册的目的,一般有很多短信接口来达到发送短信的操作,比如:云片短信服务,阿里云短信服务, 腾讯云短信服务等等,这里以腾讯云短信服务来发送短信: 腾讯云短信服务相关网址: 短信介绍 发送短信AP…