日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

fopen、_wfopen临时

發(fā)布時間:2025/3/12 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 fopen、_wfopen临时 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
打開文件。? 提供這些函數(shù)的更多安全版本;請參見?fopen_s、_wfopen_s。 FILE *fopen( const char *filename,const char *mode ); FILE *_wfopen( const wchar_t *filename,const wchar_t *mode ); 參數(shù) filename

文件名。

mode

啟用的訪問類型。

返回值

這些函數(shù)均返回指向打開文件的指針。?一個 null 指針值指示錯誤。?如果?filename?或?mode?為?NULL?或空字符串,這些函數(shù)將觸發(fā)無效參數(shù)處理程序(如參數(shù)驗證所述)。?如果允許執(zhí)行繼續(xù),則這些函數(shù)返回?NULL?并將?errno?設置為?EINVAL

有關更多信息,請參見?errno、_doserrno、_sys_errlist 和 _sys_nerr。

備注

fopen?函數(shù)打開?filename?指定的文件。?_wfopen?是?fopen?的寬字符版本;_wfopen?的參數(shù)是寬字符串。?除此以外,_wfopen?和?fopen?的行為完全相同。?僅使用?_wfopen?不會影響在文件流中使用的編碼字符集。

fopen?接受執(zhí)行時在文件系統(tǒng)上有效的路徑;fopen?還接受 UNC 路徑和包含映射的網(wǎng)絡驅動器的路徑(前提是執(zhí)行代碼的系統(tǒng)在執(zhí)行時能夠訪問共享或映射的驅動器)。?為?fopen?構造路徑時,請確保驅動器、路徑或網(wǎng)絡共享在執(zhí)行環(huán)境中可用。?可使用斜杠 (/) 或反斜杠 (\) 作為路徑中的目錄分隔符。

對文件執(zhí)行任何進一步操作前,請始終檢查返回值以確定指針是否為 NULL。?如果發(fā)生錯誤,系統(tǒng)將設置全局變量?errno,此變量可用于獲取特定錯誤信息。?有關更多信息,請參見?errno、_doserrno、_sys_errlist 和 _sys_nerr。

Unicode 支持

fopen?支持 Unicode 文件流。?若要打開 Unicode 文件,請將指定所需編碼的?ccs?標志傳遞到?fopen,如下所示。

fopen(&fp, "newfile.txt", "rt+,?ccs=?encoding?");

允許使用的?encoding?值為?UNICODEUTF-8?和?UTF-16LE

如果文件已存在并已打開以進行讀取或追加,字節(jié)順序標記 (BOM)(如果文件中有)將確定編碼。?BOM 編碼優(yōu)先于?ccs?標志指定的編碼。?只有在沒有 BOM 或文件是新文件時,才使用?ccs?編碼。

?說明

BOM 檢測僅適用于在 Unicode 模式下(即通過傳遞?ccs?標志)打開的文件。

下表匯總的模式用于傳遞到文件中的?fopen?和字節(jié)順序標記的各種?ccs?標志。

基于 ccs 標志和 BOM 使用的編碼

ccs?標志

無 BOM(或新文件)

BOM:UTF-8

BOM:UTF-16

UNICODE

UTF-16LE

UTF-8

UTF-16LE

UTF-8

UTF-8

UTF-8

UTF-16LE

UTF-16LE

UTF-16LE

UTF-8

UTF-16LE

在 Unicode 模式下打開以進行寫入的文件將自動寫入 BOM。

如果?mode?為“a, ccs=<encoding>”,fopen?將先嘗試使用讀取和寫入訪問權限打開文件。?如果成功,此函數(shù)將讀取 BOM 以確定文件的編碼;如果失敗,此函數(shù)將使用文件的默認編碼。?無論何種情況,fopen?隨后均將通過只寫訪問權限打開文件。(這僅適用于?a?模式,不適用于?a+?模式。)

一般文本例程映射

TCHAR.H 例程

未定義的 _UNICODE 和 _MBCS

已定義 _MBCS

已定義 _UNICODE

_tfopen

fopen

fopen

_wfopen

字符串?mode?指定為文件請求的訪問類型,如下所示。

"r"

打開以便讀取。?如果文件不存在或找不到,fopen?調(diào)用將失敗。

"w"

打開用于寫入的空文件。?如果給定文件存在,則其內(nèi)容會被銷毀。

"a"

在文件末尾打開以進行寫入(追加),在新數(shù)據(jù)寫入到文件之前不移除文件末尾 (EOF) 標記。?創(chuàng)建文件(如果文件不存在)。

"r+"

打開以便讀取和寫入。?文件必須存在。

"w+"

打開用于讀取和寫入的空文件。?如果文件存在,則其內(nèi)容會被銷毀。

"a+"

打開以進行讀取和追加。?追加操作包括在新數(shù)據(jù)寫入文件之前移除 EOF 標記。?寫入完成后,EOF 標記不會還原。?創(chuàng)建文件(如果文件不存在)。

使用?"a"?訪問類型或?"a+"?訪問類型打開文件時,所有寫入操作均將在文件末尾進行。?使用?fseek?或?rewind?可重新定位文件指針,但在執(zhí)行任何寫入操作前,文件指針將始終被移回文件末尾。?因此,無法覆蓋現(xiàn)有數(shù)據(jù)。

在 EOF 標記追加到文件之前,"a"?模式不會將其移除。?在追加后,MS-DOS TYPE 命令只顯示原始 EOF 標記之前的數(shù)據(jù),不顯示追加到文件的任何數(shù)據(jù)。?EOF 標記追加到文件之前,"a+"?模式不會將其移除。?在追加后,MS-DOS TYPE 命令顯示文件中的所有數(shù)據(jù)。?需使用?"a+"?模式才能附加到通過 CTRL+Z EOF 標記終止的流文件。

指定?"r+""w+"?或?"a+"?訪問類型時,允許讀取和寫入(文件將處于打開狀態(tài)以進行“更新”)。?但是,當你從讀取切換到寫入時,輸入操作必須遇到 EOF 標記。?如果沒有 EOF,必須使用對文件定位函數(shù)的干預調(diào)用。?文件定位函數(shù)是?fsetposfseek?和?rewind?從寫入切換到讀取時,必須使用對?fflush?或文件定位函數(shù)的干預調(diào)用。

除了前面的值以外,可將以下字符追加到?mode?以指定換行符的轉換模式。

t

在文本(轉換)模式下打開。?在此模式下,CTRL+Z 將在輸入時解釋為 EOF 字符。?在使用?"a+"?打開以進行讀取/寫入的文件中,fopen?將檢查文件末尾的 CTRL+Z 并將其移除(如果可能)。?這是因為使用?fseek?和?ftell?在以 CTRL+Z 結尾的文件中移動時,可能導致?fseek?在文件末尾附近錯誤運行。

在文本模式下,輸入時,回車-換行組合將轉換為單一的換行,輸出時,換行字符將轉換為回車-換行組合。?當 Unicode 流 I/O 函數(shù)在文本模式(默認設置)下運行時,源或目標流將假定為一系列多字節(jié)字符。?因此,Unicode 流輸入函數(shù)將多字節(jié)字符轉換為寬字符(就像調(diào)用?mbtowc?函數(shù)一樣)。?出于同一原因,Unicode 流輸出函數(shù)將寬字符轉換為多字節(jié)字符(就像調(diào)用?wctomb?函數(shù)一樣)。

b

在二進制(未轉換)模式下打開;不進行涉及回車和換行字符的轉換。

如果?t?或?b?在?mode?中未給出,則默認轉換模式由全局變量?_fmode?定義。?如果?t?或?b?是該參數(shù)的前綴,則函數(shù)將失敗并返回?NULL

有關如何在 Unicode 和多字節(jié)流 I/O 中使用文本和二進制模式的更多信息,請參見文本和二進制模式文件 I/O?和?文本和二進制模式下的 Unicode 流 I/O。

c

啟用關聯(lián)?filename?的提交標志,以便在調(diào)用?fflush?或?_flushall?時將文件緩沖區(qū)的內(nèi)容直接寫入磁盤。

n

將關聯(lián)?filename?的提交標志重置為“no-commit”。這是默認設置。?如果將程序顯式鏈接到 COMMODE.OBJ,它還將重寫全局提交標志。?除非將程序顯式鏈接到 COMMODE.OBJ,全局提交標志默認為“no-commit”(請參見鏈接選項)。

N

指定文件不由子進程繼承。

S

指定緩存針對(但不限于)從磁盤的順序訪問進行優(yōu)化。

R

指定緩存針對(但不限于)從磁盤的隨機訪問進行優(yōu)化。

T

將文件指定為臨時。?如果可能,它不會刷新到磁盤。

D

將文件指定為臨時。?最后一個文件指針關閉時,它將被刪除。

ccs=ENCODING

指定要使用的編碼字符集(UTF-8UTF-16LE?或?UNICODE)。?如果需要 ANSI 編碼,請不要指定此字符集。

在?fopen?和?_fdopen?中使用的?mode?字符串的有效字符對應于在?_open?和?_sopen?中使用的?oflag?參數(shù)。

模式字符串中的字符

_open?/_sopen?的等效?oflag?值。

a

_O_WRONLY | _O_APPEND?(通常為?_O_WRONLY | _O_CREAT | _O_APPEND

a+

_O_RDWR | _O_APPEND?(通常為?_O_RDWR | _O_APPEND | _O_CREAT?

r

_O_RDONLY

r+

_O_RDWR

w

_O_WRONLY?(通常為?_O_WRONLY | _O_CREAT | _O_TRUNC

w+

_O_RDWR?(通常為?_O_RDWR | _O_CREAT | _O_TRUNC

b

_O_BINARY

t

_O_TEXT

c

n

S

_O_SEQUENTIAL

R

_O_RANDOM

T

_O_SHORTLIVED

D

_O_TEMPORARY

ccs=UNICODE

_O_WTEXT

ccs=UTF-8

_O_UTF8

ccs=UTF-16LE

_O_UTF16

如果你使用?rb?模式、不必移植代碼、希望讀取大文件中的大部分內(nèi)容或不擔心網(wǎng)絡性能,你可能還要考慮是否使用內(nèi)存映射的 Win32 文件方式。

要求

函數(shù)

必需的標頭

fopen

<stdio.h>

_wfopen

<stdio.h> 或 <wchar.h>

有關兼容性的更多信息,請參見兼容性。

c?、ntSRT?和?Dmode?選項是?fopen?和?_fdopen?的 Microsoft 擴展,不應在需要 ANSI 可移植性時使用。

示例

以下程序打開兩個文件。它使用?fclose?關閉第一個文件,使用?_fcloseall?關閉所有剩余文件。

// crt_fopen.c // compile with: /W3 // This program opens two files. It uses // fclose to close the first file and // _fcloseall to close all remaining files.#include <stdio.h>FILE *stream, *stream2;int main( void ) {int numclosed;// Open for read (will fail if file "crt_fopen.c" does not exist)if( (stream = fopen( "crt_fopen.c", "r" )) == NULL ) // C4996// Note: fopen is deprecated; consider using fopen_s insteadprintf( "The file 'crt_fopen.c' was not opened\n" );elseprintf( "The file 'crt_fopen.c' was opened\n" );// Open for write if( (stream2 = fopen( "data2", "w+" )) == NULL ) // C4996printf( "The file 'data2' was not opened\n" );elseprintf( "The file 'data2' was opened\n" );// Close stream if it is not NULL if( stream){if ( fclose( stream ) ){printf( "The file 'crt_fopen.c' was not closed\n" );}}// All other files are closed: numclosed = _fcloseall( );printf( "Number of files closed by _fcloseall: %u\n", numclosed ); } <span id="mt112" class="sentence" data-guid="36160afb7487ebf03eb3d7b8c058e6e0" data-source="" the="" file="" 'crt_fopen.c'="" was="" opened"="" xml:space="preserve">文件“crt_fopen.c”已打開 文件“data2”已打開 由 _fcloseall 所關閉的文件數(shù)量為:1

以下程序在具有 Unicode 編碼的文本模式下創(chuàng)建文件(或在文件存在時覆蓋文件)。然后,它將兩個字符串寫入文件并關閉文件。?輸出是名為 _wfopen_test.xml 的文件,其中包含輸出部分中的數(shù)據(jù)。

// crt__wfopen.c // compile with: /W3 // This program creates a file (or overwrites one if // it exists), in text mode using Unicode encoding. // It then writes two strings into the file // and then closes the file.#include <stdio.h> #include <stddef.h> #include <stdlib.h> #include <wchar.h>#define BUFFER_SIZE 50int main(int argc, char** argv) { wchar_t str[BUFFER_SIZE]; size_t strSize; FILE* fileHandle;// Create an the xml file in text and Unicode encoding mode.if ((fileHandle = _wfopen( L"_wfopen_test.xml",L"wt+,ccs=UNICODE")) == NULL) // C4996// Note: _wfopen is deprecated; consider using _wfopen_s instead{wprintf(L"_wfopen failed!\n");return(0);}// Write a string into the file.wcscpy_s(str, sizeof(str)/sizeof(wchar_t), L"<xmlTag>\n");strSize = wcslen(str);if (fwrite(str, sizeof(wchar_t), strSize, fileHandle) != strSize){wprintf(L"fwrite failed!\n");}// Write a string into the file.wcscpy_s(str, sizeof(str)/sizeof(wchar_t), L"</xmlTag>");strSize = wcslen(str);if (fwrite(str, sizeof(wchar_t), strSize, fileHandle) != strSize){wprintf(L"fwrite failed!\n");}// Close the file.if (fclose(fileHandle)){wprintf(L"fclose failed!\n");}return 0; } .NET Framework 等效項

總結

以上是生活随笔為你收集整理的fopen、_wfopen临时的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 顶级毛片 | 主播一区二区 | gai视频在线观看资源 | 国产视频综合在线 | 99在线精品视频免费观看软件 | 亚洲一区欧美二区 | 日本一级做a爱片 | 国产在线日本 | 国产婷婷色 | 人人妻人人澡人人爽国产一区 | 午夜精品福利电影 | 欧美精品观看 | 在线播放成人av | 热久久最新网址 | 午夜视频在线观看网站 | 久久亚洲一区二区三区四区五区 | 国内成人av | 男生和女生一起差差差很痛的视频 | 有声小说 成人专区 | 中文二区| 白浆av | 2019日韩中文字幕mv | 日本在线视频免费观看 | 国产第一页屁屁影院 | 蜜臀av一区二区三区有限公司 | 黄色动漫免费在线观看 | 毛片1000部免费看 | 极品粉嫩小仙女高潮喷水久久 | 五月天黄色网址 | jzzjzz日本丰满成熟少妇 | 一级黄色片视频 | 亚洲欧美自拍另类 | 97人妻人人澡人人爽人人精品 | 女优一区二区三区 | 无码 制服 丝袜 国产 另类 | 精品成人无码久久久久久 | 涩涩av| yw在线观看| 久久国产精品国产精品 | 狠狠操你 | 日韩字幕在线 | 久久亚洲私人国产精品va | 邻居少妇张开腿让我爽了在线观看 | 夜夜夜撸| 精品久久一区二区三区 | 国产精伦 | 日韩精品你懂的 | 国产精品一品 | 日韩美女福利视频 | 日本一区不卡视频 | 禁漫天堂黄漫画无遮挡观看 | 欧美一区二区三区成人 | 日韩女同互慰一区二区 | 国产精品777| 超碰碰97 | 无码人妻精品一区二区三区温州 | 免费在线黄色网 | 极品五月天| 贝利弗山的秘密1985版免费观看 | 免费观看黄色小视频 | 国产精品久久影院 | 日韩福利社 | 最新中文字幕在线播放 | 青娱乐极品视频在线 | 日韩精品极品视频在线观看免费 | 波多野结衣家庭主妇 | 久久久91精品 | 国产a级一级片 | 久久久久久午夜 | 国产精品久久久久久久妇 | 亚州av在线播放 | 美女扒开尿口让男人爽 | 中文字幕日韩欧美一区二区 | 俺也来俺也去俺也射 | 亚洲永久免费精品 | 久久综合伊人77777麻豆 | a级黄色片 | 日本亚洲欧洲色 | 风间由美在线观看 | 91精品一区二区三区在线观看 | 国产成人精品免费在线观看 | videos另类灌满极品另类 | 一级黄av | 日韩视频精品在线 | 在线亚洲区 | 国产91香蕉 | aaa大片十八岁禁止 中文字幕亚洲在线观看 | 午夜宅男影院 | 无码精品人妻一区二区三区漫画 | 欧美日韩国产一区 | 香蕉视频在线看 | 福利精品 | 国产天天操 | 人妻少妇无码精品视频区 | 日日操操 | 波多野结衣在线影院 | 在线成人福利 | av成人免费 | 中文字幕一区二区免费 |