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

tmpfile函数


概要:
#include <stdio.h>
FILE *tmpfile(void);

描述:

该函数创建一个不同于现有文件的临时二进制文件,并以"wb+"模式打开该文件进行更新。

该函数创建的临时文件在文件关闭或者程序终止时会被自动删除。如果程序异常终止,打开的临时文件是否会被删除将由实现定义。

在程序执行期间,应至少可以打开TMP_MAX个临时文件。

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


参数:
void

无。


返回值:

如果临时文件创建成功,函数返回一个指向其创建文件的流的指针;如果临时文件创建不成功,函数返回一个空指针。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
/*函数tmpfile范例*/

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

#define NUMBEROFLETTER 26

int main(void)
{
    FILE *tempFile;
    int ch;
    int count[NUMBEROFLETTER] = {0};
    const char letter[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    /*创建临时文件及其内容。*/
    tempFile = tmpfile();
    while((ch=getchar())!= '\n')
        fputc(ch, tempFile);

    rewind(tempFile);

    /*统计各字母出现的次数*/
    while((ch=fgetc(tempFile))!= EOF)
    {
        for(int i=0; i<NUMBEROFLETTER; ++i)
        {
            if(toupper(ch) == letter[i])
                ++count[i];
        }
    }

    /*输出统计结果。*/
    for(int i=0; i<NUMBEROFLETTER; ++i)
    {
        printf("%c:%2d  ", letter[i], count[i]);
        if((i+1)%10 == 0)
            printf("\n");
    }

    fclose(tempFile);

    return 0;
}


结果:

假设键盘输入为:

You can fool some of the people all of the time, and all of the people some of the time, but you can not fool all of the people all of the time.

将输出:

A: 7  B: 1  C: 2  D: 1  E:17  F: 8  G: 0  H: 6  I: 3  J: 0

K: 0  L:13  M: 5  N: 4  O:18  P: 6  Q: 0  R: 0  S: 2  T:11

U: 3  V: 0  W: 0  X: 0  Y: 2  Z: 0


相关内容:
tmpnam 生成临时文件名的函数。