约 2279 字

约 11 分钟

#C 语言标准库函数 tmpnam

/*********************************************
 * @brief 生成一个临时文件名
 * @param[out] filename 用于保存文件名的内存空间
 * @return 文件名
 ********************************************/
char* tmpnam(char* filename);

说明

生成一个临时文件名。

最多可以生成 TMP_MAX 个唯一的文件名,但是其中一些或全部可能已经被使用。

生成的文件名将保存在参数 filename 指向的内存空间中(该内存空间长度不应少于 L_tmpnam 字节),并返回 filename 本身。

如果参数 filename 为 NULL,则在内部静态缓冲区保存文件名,并返回该缓冲区的地址。

使用此函数生成的文件名创建的临时文件不会自动删除,需要手动调用 remove 函数删除文件。

参数

  • filename - 指向用于保存文件名的内存空间

返回值

  • 成功时返回文件名
  • 失败时返回 NULL

#示例

#include <stdio.h>

int main(void)
{
    // 参数为 NULL,返回内部静态缓冲区保存的文件名
    printf("%s\n", tmpnam(NULL));

    char filename[L_tmpnam]; // 保存文件名,长度为 L_tmpnam
    tmpnam(filename);
    printf("%s\n", filename);
    
    return 0;
}

运行结果:

/tmp/filemVkQ4I
/tmp/filey54nm0

说明:

参数为 NULL 时,文件名保存在内部的静态缓冲区内,返回该缓冲区的地址。

参数不为 NULL 时,文件名保存到参数指向的内存空间,该空间的长度应为 L_tmpnam 字节,返回参数本身。

#推荐阅读

#参考标准

  • C23 standard (ISO/IEC 9899:2024):
    • 7.21.4.4 The tmpnam function (p: TBD)
  • C17 standard (ISO/IEC 9899:2018):
    • 7.21.4.4 The tmpnam function (p: 222)
  • C11 standard (ISO/IEC 9899:2011):
    • 7.21.4.4 The tmpnam function (p: 303-304)
  • C99 standard (ISO/IEC 9899:1999):
    • 7.19.4.4 The tmpnam function (p: 269-270)
  • C89/C90 standard (ISO/IEC 9899:1990):
    • 4.9.4.4 The tmpnam function

更新: 2025/10/25

作者: PlanC

创建: 2025/8/13