当前位置: C语言 -- 标准库 -- <stdio.h> -- tmpnam

tmpnam函数


概要:
#include <stdio.h>
char *tmpnam(char *s);

描述:

该函数生成表示有效文件名的字符串,生成的文件名不同于现有文件名。

该函数可能至少能够生成TMP_MAX个不同字符串;如果生成的字符串与现有文件重名,生成的字符串不是合适的返回值。

每次调用tmpnam函数都会生成不同的字符串;tmpnam函数生成字符串的最大长度(包括终止空字符。)为L_tmpnam

如果参数s是空指针,可能会导致数据竞争(data race)。实现应像没有库函数调用tmpnam函数一样。

使用tmpnam函数生成字符串创建的文件是临时文件;使用后并且在程序终止前应调用remove函数删除此类文件。

ISO/IEC 9899:2018标准定义了该函数的安全版本tmpnam_s


参数:
char *s

char类型指针。参数s可以是空指针,也可以是指向char类型数组的指针。如果参数s是指向char类型数组的指针,数组长度应至少为L_tmpnam


返回值:

如果不能生成合适的字符串,函数返回空指针;否则如果参数s是空指针,函数使用内部静态对象(internal static object)存储生成字符串,并返回指向该对象的指针(tmpnam函数的后续调用可能会修改该对象。);如果参数s不是空指针,参数s指向长度至少为L_tmpnamchar类型数组,函数将生成的字符串写入该数组,并返回参数s


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
/*函数tmpnam范例*/

#include <stdio.h>

int main(void)
{
    char *ptr;
    char arr[L_tmpnam];

    ptr = tmpnam(NULL);
    printf("Temporary filename: %s\n", ptr);

    tmpnam(arr);
    printf("Temporary filename: %s\n", arr);

    return 0;
}


输出:

Temporary filename: \s460.

Temporary filename: \s460.1


相关内容:
L_tmpnam 表示tmpnam函数生成字符串最大长度的宏。
TMP_MAX 表示tmpnam函数生成唯一文件名的最大数量的下限的宏。