C 库 - tmpfile() 函数



C 库的 FILE *tmpfile(void) 函数以二进制更新模式 (wb+) 创建一个临时文件。创建的临时文件会在流关闭 (fclose) 或程序终止时自动删除。

语法

以下是 C 库 tmpfile() 函数的语法:

FILE *tmpfile(void);

参数

  • 此函数不接受任何参数。

返回值

成功时,返回一个指向新创建的临时文件的 FILE* 指针。失败时,如果无法创建文件,则返回 NULL。这可能是由于文件描述符不足、权限不足或临时空间不足等原因导致的。

示例 1:创建和写入临时文件

此程序创建一个临时文件,向其中写入一行文本,然后读取并打印文件内容到标准输出。

以下是 C 库 tmpfile() 函数的示例。

#include <stdio.h>

int main() {
   FILE *temp = tmpfile();
   if (temp == NULL) {
       perror("Failed to create temporary file");
       return 1;
   }
   
   fprintf(temp, "This is a temporary file.\n");
   rewind(temp);
   
   char buffer[100];
   while (fgets(buffer, sizeof(buffer), temp) != NULL) {
       fputs(buffer, stdout);
   }
   
   fclose(temp);
   return 0;
}

输出

以上代码产生以下结果:

This is a temporary file.

示例 2:将临时文件用于中间计算

此程序计算从 0 到 10 的数字的平方根,将结果写入临时文件,然后读取并打印结果。

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

int main() {
   FILE *temp = tmpfile();
   if (temp == NULL) {
       perror("Failed to create temporary file");
       return 1;
   }
   
   for (int i = 0; i <= 10; i++) {
       double value = sqrt(i);
       fprintf(temp, "%d %.2f\n", i, value);
   }
   rewind(temp);
   
   int num;
   double sqrt_value;
   while (fscanf(temp, "%d %lf", &num, &sqrt_value) != EOF) {
       printf("sqrt(%d) = %.2f\n", num, sqrt_value);
   }
   
   fclose(temp);
   return 0;
}

输出

执行以上代码后,我们得到以下结果:

sqrt(0) = 0.00
sqrt(1) = 1.00
sqrt(2) = 1.41
sqrt(3) = 1.73
sqrt(4) = 2.00
sqrt(5) = 2.24
sqrt(6) = 2.45
sqrt(7) = 2.65
sqrt(8) = 2.83
sqrt(9) = 3.00
sqrt(10) = 3.16
广告

© . All rights reserved.