mooc课程精选,成品人片观看入口众乐乐,久久久久人妻一区精品性色av,苍兰诀大结局是什么,白丝美女被狂躁免费视频网站

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 函數tmpnam和tmpfile的用法

函數tmpnam和tmpfile的用法 時間:2018-09-21      來源:未知

標準I / O庫提供了兩個函數以幫助創建臨時文件,第一個函數為tmpnam。

#include <stdio.h>

char *tmpnam(char *s);

tmpnam()產生一個與現在文件名不同的一個有效路徑名字符串。每次調用它時,它都產生一個不同的路徑名。多調用次數為TMP_MAX。

tmpnam()的s如果為NULL,則返回值存放到一個靜態的區中。如果s不為NULL,則認為其指向長度至少為L_tmpnam個數的字符數組中。所產生的文件名存放到該數組中,也作為函數返回值返回。

tmpnam產生的文件名,在文件系統中一定不存在,因此,程序員可以創建臨時文件,進行后續編程。示例代碼如下:

#include <stdio.h>

#define N 128

int main() {

char s[N] = {0}, *p;

if ((p = tmpnam(s)) == NULL) {

perror("tmpnam");

return -1;

}

printf("s=%s p=%s\n", s, p);

return 0;

}

程序執行結果如下:

函數tmpnam和tmpfile的用法

tmpfile函數原型如下:

#include <stdio.h>

FILE *tmpfile(void);

創建的臨時文件在程序退出時會被自動刪除。

#include <stdio.h>

#define N 128

int main() {

char s[N] = {0}, *p;

FILE * fp;

int ch = 0;

if ((p = tmpnam(s)) == NULL) {

perror("tmpnam");

return -1;

}

printf("s=%s p=%s\n", s, p);

printf("TMP_MAX=%d\n", TMP_MAX);

if ((fp = tmpfile()) == NULL) {

perror("tmpfile");

return -1;

}

f (fputc('a', fp) == EOF) {

perror("fputc");

return -1;

}

fseek(fp, 0, SEEK_SET);

ch = fgetc(fp);

printf("ch=%d\n",ch);

getchar();

puts("end main");

fclose(fp);

ch = fgetc(fp);

printf("ch=%d\n",ch);

return 0;

}

程序執行結果如下:

函數tmpnam和tmpfile的用法

在getchar函數執行前,可以新開一個命令窗口,來查看進程占用的文件描述符,看到了/tmp下的臨時文件,并被系統做了deleted標記。從/tmp目錄下,也找不到這個臨時文件。但是這個文件在內存中是存在的(Linux系統規定,一個文件如果有連接計數器不為0,或者其進程打開數不為0,均不會刪除其文件內容)。

函數tmpnam和tmpfile的用法

另外,自己實現一個tmpfile()函數,也非常簡單,步驟如下:

先調用tmpnam()產生一個唯一的路徑名。

調用fopen()打開。

調用unlink()刪除。

說明:利用這個特點來實現tmpfile()。

上一篇:Linux下printf輸出字符串的顏色

下一篇:不定參函數

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部