mktemp

mktemp的頭檔案是在TC2.0中其頭檔案是dir.h,定義函式是char mktemp(char * template),具有產生後的檔案名稱會借指針返回的特點。

基本介紹

  • 中文名:mktemp
  • 頭檔案:在TC2.0中其頭檔案是dir.h
  • 定義函式: char mktemp(char * template)
  • 特點:產生後的檔案名稱會借指針返回
檔案函式,程式示例1,程式示例2,程式示例3,

檔案函式

C語言創建唯一臨時檔案函式mktemp
函式簡介
頭檔案:在TC2.0中其頭檔案是dir.h,在Visual C++ 6.0中,更多的使用_mktemp,其頭檔案是io.h
定義函式 char * mktemp(char * template);
功能: mktemp()用來產生唯一的臨時檔案名稱。參數template所指的檔案名稱稱字元串中最後六個字元必須是XXXXXX。產生後的檔案名稱會借字元串指針返回。
返回值: 檔案順利打開後,指向該流的檔案指針就會被返回。如果檔案打開失敗則返回NULL,並把錯誤代碼存在errno中。
其他創建臨時檔案的函式:tmpfiletmpnam程式示例

程式示例1

(在Visual C++ 6.0中運行通過)
#include<stdio.h>
#include<string.h>
#include<io.h>
int main()
{
char *templat="fnXXXXXX";
char *result;
char names[5][9];
int Count ;
for(Count=0; Count<5;Count++)
{
strcpy(names[Count],templat);
result=_mktemp(names[Count]);
printf("%s\n\r",result);
}
return 0;
}

程式示例2

(在TC2.0中運行成功)
#include <stdio.h>
#include <dir.h>
int main(void)
{
FILE *fp;
char *fname = "d:\\TXXXXXX", *newname, first;
newname = mktemp(fname);
fp = fopen(newname,"w+");
fprintf(fp,"abcdefghijklmnopqrstuvwxyz");
rewind(fp);
fscanf(fp,"%c",&first);
printf("The first character is: %c\n",first);
fclose(fp);
remove(newname);
return 0;
}
附加說明 參數template所指的檔案名稱稱字元串必須聲明為數組,如:
char template[ ]=”template-XXXXXX”;
不可用char * template=”template-XXXXXX”;
範例 #include&lt;stdlib.h&gt;
main()
{
char template[ ]=”template-XXXXXX”;
mktemp(template);
printf(“template=%s\n”,template);
}

程式示例3

(在gcc 4.6中運行通過)
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include<malloc.h>
#define N 10
int main()
{
char template[]= "template-XXXXXX";
char **names;
int count;
int len;
len = strlen(template);
/*
strlen()的時候不統計結束符 ‘\0’
但是在分配空間的時候需要考慮為結束符 ‘\0’ 分配空間
*/
names=(char **)malloc( sizeof(char *)*N );
for(count=0; count<N;count++)
{
names[count]=(char*)malloc( sizeof(char)*(len+1) );
}
for(count=0; count<N;count++)
{
strcpy(names[count],template);
//strcpy的時候dest必須有足夠的空間來容納src的字元串
mktemp(names[count]);
printf("template=%s\n",*(names+count));
}
for(count=0; count<N; count++)
free(names[count]);
free(names);
return 0;
}
結果如下:
template=template-FGnuIj
template=template-sZTFTi
template=template-irYR4h
template=template-OEw4fh
template=template-clyhrg
template=template-xN2uCf
template=template-7E2INe
template=template-D8uXYd
template=template-lyqcad
template=template-oPNrlc

相關詞條

熱門詞條

聯絡我們