目錄
文件特性常量
文件常量
堆常量
EOF,?WEOF
errno?常量
數(shù)學(xué)常量
數(shù)學(xué)錯誤常量
共享常量
轉(zhuǎn)換模式常量
文件讀/寫訪問常量
NULL?(CRT)
stdin,?stdout,?stderr
語法
#include
備注
這些常量指定由函數(shù)指定的文件或目錄的當(dāng)前特性。
特性可以通過以下清單常量表示:
返回的常量 | 說明 |
---|---|
_A_ARCH | 存檔。 每當(dāng)通過 BACKUP 命令更改或清除文件時進行設(shè)置。 值:0x20 |
_A_HIDDEN | 隱藏文件。 使用 DIR 命令時通常不可見,除非使用 /AH 選項。 返回有關(guān)具有此屬性的普通文件和文件的信息。 值:0x02 |
_A_NORMAL | 正常。 可以不受限制地讀取或?qū)懭氲奈募?值:0x00 |
_A_RDONLY | 只讀。 無法打開文件進行寫入,并且無法創(chuàng)建同名的文件。 值:0x01 |
_A_SUBDIR | 子目錄。 值:0x10 |
_A_SYSTEM | 系統(tǒng)文件。 使用 DIR 命令時通常不可見,除非使用 /AS 選項。 值:0x04 |
可使用 OR 運算符 (|
) 組合多個常量。
#include
備注由這些常量中的一個或多個常量構(gòu)成的整數(shù)表達式確定允許進行的讀取或?qū)懭氩僮鞯念愋汀?它由將一個或多個常量與翻譯模式常量組合在一起形成。
文件常量如下所示:
返回的常量 | 說明 |
---|---|
_O_APPEND | 在每次執(zhí)行寫入操作前,將文件指針重新定位到文件尾。 |
_O_CREAT | 創(chuàng)建并打開用于寫入的新文件;如果存在?filename 文件,則常量無效。 |
_O_EXCL | 如果由?filename 指定的文件存在,則返回一個錯誤值。 僅在與?_O_CREAT 一起使用時適用。 |
_O_RDONLY | 打開文件以僅讀取;如果提供此標(biāo)志,?_O_RDWR 則?_O_WRONLY 無法提供。 |
_O_RDWR | 打開用于讀取和寫入的文件;如果提供此標(biāo)志,?_O_RDONLY 則?_O_WRONLY 無法提供。 |
_O_TRUNC | 打開現(xiàn)有文件并將其截斷為零長度;此文件必須具有寫入權(quán)限。 銷毀此文件的內(nèi)容。 如果給定此標(biāo)志,則無法指定?_O_RDONLY 。 |
_O_WRONLY | 僅打開用于寫入的文件;如果提供此標(biāo)志,?_O_RDONLY 則?_O_RDWR 無法提供。 |
#include
備注這些常量提供表示堆狀態(tài)的返回值。
返回的常量 | 含義 |
---|---|
_HEAPBADBEGIN | 找不到初始標(biāo)頭信息或無效。 |
_HEAPBADNODE | 找到錯誤節(jié)點,或堆已損壞。 |
_HEAPBADPTR | _pentry _HEAPINFO 結(jié)構(gòu)字段不包含指向堆的有效指針, (_heapwalk 例程僅) 。 |
_HEAPEMPTY | 堆尚未初始化。 |
_HEAPEND | 已成功到達堆的結(jié)尾處(僅限?_heapwalk 例程)。 |
_HEAPOK | 堆是一致的(僅限?_heapset 和?_heapchk 例程)。 到目前為止沒有錯誤;?_HEAPINFO 結(jié)構(gòu)僅包含有關(guān)下一個條目 (_heapwalk 例程的信息) 。 |
EOF
,?WEOF
語法#include
備注
EOF
當(dāng)文件結(jié)束 (或在某些情況下,遇到錯誤) 時,I/O 例程將返回。
WEOF
生成返回值(類型)?wint_t
用于向?qū)捔髂┪舶l(fā)出信號,或報告錯誤條件。
errno
常量
語法#include
備注常?errno
量是針對?errno?各種錯誤條件分配給的值。
ERRNO.H
包含?errno
值的定義。 但是,并非?ERRNO.H
中給定的提供定義都可用于 32 位 Windows 操作系統(tǒng)。?ERRNO.H
中的某些值的存在是為了保持與 UNIX 系列操作系統(tǒng)的兼容性。 32 位 Windows 操作系統(tǒng)中的?errno
值是 XENIX 系統(tǒng)中的?errno
值的子集。
errno
值不一定與由從 Windows 操作系統(tǒng)進行的系統(tǒng)調(diào)用返回的實際錯誤代碼相同。 若要訪問實際操作系統(tǒng)錯誤代碼,請使用包含此值的?_doserrno?變量。
支持以下?errno
值:
返回的常量 | 說明 | 值 |
---|---|---|
E2BIG | 自變量列表太長。 | 7 |
EACCES | 權(quán)限被拒絕。 文件的權(quán)限設(shè)置不允許指定訪問。 嘗試訪問文件 (,在某些情況下,目錄) 與文件的屬性不兼容。 例如,嘗試從未打開的文件讀取時,可能會發(fā)生錯誤。 或者,嘗試打開現(xiàn)有只讀文件進行寫入,或打開目錄而不是文件。 在 MS-DOS 操作系統(tǒng)版本 3.0 以及更高版本下, EACCES 也可能表示鎖定或共享沖突。在嘗試重命名文件或目錄或者刪除現(xiàn)有目錄時也可能發(fā)生錯誤。 | 13 |
EAGAIN | 沒有更多進程、沒有足夠內(nèi)存或達到大嵌套級別。 嘗試創(chuàng)建新進程失敗,因為沒有更多的進程槽,或者沒有足夠的內(nèi)存,或者達到大嵌套級別。 | 11 |
EBADF | 文件編號錯誤。 有兩個可能的原因:1) 指定的文件描述符不是有效值或未引用打開的文件。 2) 嘗試寫入到已打開進行只讀訪問的文件或設(shè)備。 | 9 |
EBUSY | 設(shè)備或資源忙碌。 | 16 |
ECHILD | 沒有生成的進程。 | 10 |
EDEADLK | 將會發(fā)生資源死鎖。 | 36 |
EDEADLOCK | 與?EDEADLK 相同,以便與早期的 Microsoft C 版本兼容。 | 36 |
EDOM | 數(shù)學(xué)自變量。 數(shù)學(xué)函數(shù)的參數(shù)不在函數(shù)的域中。 | 33 |
EEXIST | 存在文件。 嘗試創(chuàng)建已存在的文件。 例如,在?_open 調(diào)用中指定?_O_CREAT 和?_O_EXCL 標(biāo)志,但命名的文件已存在。 | 17 |
EFAULT | 地址錯誤。 | 14 |
EFBIG | 文件太大。 | 27 |
EILSEQ | 非法字節(jié)序列(例如,在?MBCS 字符串中)。 | 42 |
EINTR | 函數(shù)中斷。 | 4 |
EINVAL | 無效的參數(shù)。 為某個函數(shù)的自變量之一給定了無效值。 例如,當(dāng)通過調(diào)用?fseek ) 將文件指針定位到源時給定的值位于文件開頭之前 (。 | 22 |
EIO | I/O 錯誤。 | 5 |
EISDIR | 是目錄。 | 21 |
EMFILE | 打開的文件太多。 沒有更多文件說明符可用,因此無法打開更多文件。 | 24 |
EMLINK | 鏈接太多。 | 31 |
ENAMETOOLONG | 文件名太長。 | 38 |
ENFILE | 系統(tǒng)中打開的文件太多。 | 23 |
ENODEV | 沒有此設(shè)備。 | 19 |
ENOENT | 沒有此文件或目錄。 指定的文件或目錄不存在或找不到。 每當(dāng)指定的文件不存在或路徑的組件未指定現(xiàn)有目錄時,可能會發(fā)生此消息。 | 2 |
ENOEXEC | 執(zhí)行格式錯誤。 嘗試執(zhí)行無效的可執(zhí)行文件或具有無效可執(zhí)行文件格式的文件。 | 8 |
ENOLCK | 無可用鎖。 | 39 |
ENOMEM | 無法為嘗試的運算符提供足夠的內(nèi)存。 例如,當(dāng)內(nèi)存不足可用于執(zhí)行子進程或無法滿足調(diào)用中的?_getcwd 分配請求時,可能會出現(xiàn)此消息。 | 12 |
ENOSPC | 設(shè)備上沒有剩余空間。 設(shè)備上沒有可供寫入的其他空間(例如,當(dāng)磁盤已滿時)。 | 28 |
ENOSYS | 功能不受支持。 | 40 |
ENOTDIR | 不是目錄。 | 20 |
ENOTEMPTY | 目錄不為空。 | 41 |
ENOTTY | 不適當(dāng)?shù)?I/O 控制操作。 | 25 |
ENXIO | 沒有此設(shè)備或地址。 | 6 |
EPERM | 不允許執(zhí)行該操作。 | 1 |
EPIPE | 管道損壞。 | 32 |
ERANGE | 結(jié)果太大。 數(shù)學(xué)函數(shù)的自變量太大,造成結(jié)果中的有效位部分或全部丟失。 當(dāng)參數(shù)大于預(yù)期值時(例如,當(dāng)?_getcwd 的?buffer 參數(shù)大于預(yù)期值時),在其他函數(shù)中也可能發(fā)生此錯誤。 | 34 |
EROFS | 只讀文件系統(tǒng)。 | 30 |
ESPIPE | 搜尋無效。 | 29 |
ESRCH | 沒有此進程。 | 3 |
EXDEV | 跨設(shè)備鏈接。 嘗試將文件移至不同的設(shè)備(使用?rename 函數(shù))。 | 18 |
STRUNCATE | 字符串復(fù)制或串聯(lián)導(dǎo)致字符串被截斷。 請參閱?_TRUNCATE。 | 80 |
下列值支持 POSIX 的兼容性:
返回的常量 | 說明 | 值 |
---|---|---|
EADDRINUSE | 正在使用的地址。 | 100 |
EADDRNOTAVAIL | 地址不可用。 | 101 |
EAFNOSUPPORT | 地址系列不受支持。 | 102 |
EALREADY | 連接已經(jīng)進行。 | 103 |
EBADMSG | 錯誤消息。 | 104 |
ECANCELED | 操作已取消。 | 105 |
ECONNABORTED | 連接已中止。 | 106 |
ECONNREFUSED | 連接被拒絕。 | 107 |
ECONNRESET | 連接重置。 | 108 |
EDESTADDRREQ | 需要目標(biāo)地址。 | 109 |
EHOSTUNREACH | 無法訪問主機。 | 110 |
EIDRM | 已刪除標(biāo)識符。 | 111 |
EINPROGRESS | 操作正在進行。 | 112 |
EISCONN | 已連接。 | 113 |
ELOOP | 符號鏈接級別過多。 | 114 |
EMSGSIZE | 消息大小。 | 115 |
ENETDOWN | 網(wǎng)絡(luò)中斷。 | 116 |
ENETRESET | 網(wǎng)絡(luò)重置。 | 117 |
ENETUNREACH | 無法訪問網(wǎng)絡(luò)。 | 118 |
ENOBUFS | 無緩沖空間。 | 119 |
ENODATA | 無可用消息。 | 120 |
ENOLINK | 無鏈接。 | 121 |
ENOMSG | 無消息。 | 122 |
ENOPROTOOPT | 無協(xié)議選項。 | 123 |
ENOSR | 無流資源。 | 124 |
ENOSTR | 不是流。 | 125 |
ENOTCONN | 未連接。 | 126 |
ENOTRECOVERABLE | 狀態(tài)不可恢復(fù)。 | 127 |
ENOTSOCK | 不是套接字。 | 128 |
ENOTSUP | 不支持。 | 129 |
EOPNOTSUPP | 不支持操作。 | 130 |
EOTHER | 其他。 | 131 |
EOVERFLOW | 值太大。 | 132 |
EOWNERDEAD | 所有者亡。 | 133 |
EPROTO | 協(xié)議錯誤。 | 134 |
EPROTONOSUPPORT | 協(xié)議不受支持。 | 135 |
EPROTOTYPE | 協(xié)議類型錯誤。 | 136 |
ETIME | 流超時。 | 137 |
ETIMEDOUT | 已超時。 | 138 |
ETXTBSY | 文本文件繁忙。 | 139 |
EWOULDBLOCK | 操作將阻塞。 | 140 |
語法常見的數(shù)學(xué)常量提供了多個預(yù)定義的預(yù)處理器宏。
#define _USE_MATH_DEFINES // for C++
#include#define _USE_MATH_DEFINES // for C
#include
備注下列符號定義了其所指示的表達式的值:
符號 | 表達式 | 值 |
---|---|---|
M_E | e | 2.71828182845904523536 |
M_LOG2E | log2(e) | 1.44269504088896340736 |
M_LOG10E | log10(e) | 0.434294481903251827651 |
M_LN2 | ln(2) | 0.693147180559945309417 |
M_LN10 | ln(10) | 2.30258509299404568402 |
M_PI | pi | 3.14159265358979323846 |
M_PI_2 | pi/2 | 1.57079632679489661923 |
M_PI_4 | pi/4 | 0.785398163397448309616 |
M_1_PI | 1/pi | 0.318309886183790671538 |
M_2_PI | 2/pi | 0.636619772367581343076 |
M_2_SQRTPI | 2/sqrt(pi) | 1.12837916709551257390 |
M_SQRT2 | sqrt(2) | 1.41421356237309504880 |
M_SQRT1_2 | 1/sqrt(2) | 0.707106781186547524401 |
數(shù)學(xué)常量未在標(biāo)準(zhǔn) C/C++ 中定義。 若要使用它們,必須先定義?_USE_MATH_DEFINES
,然后包括?
或?
。
在“發(fā)布模式”下生成項目時,文件?包含?
。 如果在同時包含?的項目中使用了一個或多個數(shù)學(xué)常量,則在包含?
前必須先定義?
_USE_MATH_DEFINES
。
#include
備注運行庫的數(shù)學(xué)例程可生成數(shù)學(xué)錯誤常量。
如下所述,這些錯誤對應(yīng)于 MATH.H 中定義的異常類型,并在發(fā)生數(shù)學(xué)錯誤后由?
_matherr
函數(shù)返回。
返回的常量 | 含義 |
---|---|
_DOMAIN | 函數(shù)的自變量位于函數(shù)域的外部。 |
_OVERFLOW | 結(jié)果太大而無法在函數(shù)的返回類型中表示。 |
_PLOSS | 發(fā)生了有效位部分丟失的情況。 |
_SING | 自變量奇異性:函數(shù)的自變量具有非法值。 (例如,將值 0 傳遞到需要非零值的函數(shù)。) |
_TLOSS | 發(fā)生了有效位完全丟失的情況。 |
_UNDERFLOW | 結(jié)果太小而無法表示。 |
文件共享模式的常量。
語法#include
備注該?shflag
參數(shù)確定共享模式,該模式由一個或多個清單常量組成。 這些常量可以與?oflag
參數(shù)結(jié)合使用, (請參閱?文件常量) 。
下表列出了常量及其含義:
返回的常量 | 含義 |
---|---|
_SH_DENYRW | 拒絕對文件的讀寫訪問權(quán)限 |
_SH_DENYWR | 拒絕對文件的寫訪問權(quán)限 |
_SH_DENYRD | 拒絕對文件的讀訪問權(quán)限 |
_SH_DENYNO | 允許讀寫訪問權(quán)限 |
_SH_SECURE | 設(shè)置安全模式(共享讀取、獨占寫入訪問權(quán)限)。 |
#include
備注_O_BINARY
和?_O_TEXT
清單常數(shù)將決定文件(_open
和?_sopen
)的轉(zhuǎn)換模式或流 (_setmode
) 的轉(zhuǎn)換模式。
允許的值為:
值 | 說明 |
---|---|
_O_TEXT | 在文本(已轉(zhuǎn)換)模式下打開文件。 輸入時回車符–換行符 (CR-LF) 組合將轉(zhuǎn)換為單個換行符 (LF)。 輸出時換行符將轉(zhuǎn)換為 CR-LF 組合。 CTRL+Z 也將在輸入時解釋為文件尾字符。 在打開以進行讀取或讀取和寫入的文件中,fopen 將檢查文件末尾的 Ctrl+Z 并在可能的情況下將其移除。 由于使用?fseek 和?ftell 函數(shù)在以 CTRL+Z 結(jié)尾的文件內(nèi)移動可能會導(dǎo)致?fseek 在文件末尾附近行為不當(dāng)而被刪除。 |
_O_BINARY | 在二進制(未轉(zhuǎn)換)模式下打開文件。 禁止上述的轉(zhuǎn)換。 |
_O_RAW | 與?_O_BINARY 相同。 支持 C 2.0 兼容性。 |
#include
備注這些常量指定為文件請求的訪問類型(“a”、“r”或“w”)。 可以使用訪問類型來指定轉(zhuǎn)換模式(“b”或“t”)和?模式(“c”或“n”)。
訪問類型如下表中所述:
訪問類型 | 說明 |
---|---|
"r " | 打開以便讀取。 如果文件不存在或找不到,則打開該文件的調(diào)用將失敗。 |
"w " | 打開用于寫入的空文件。 如果給定文件存在,則其內(nèi)容會被銷毀。 |
"a " | 打開以在文件末尾寫入 (追加) ;如果文件不存在,請先創(chuàng)建該文件。 所有寫入操作均在文件末尾發(fā)生。 盡管可以使用或rewind 重新定位fseek 文件指針,但在執(zhí)行任何寫入操作之前,它始終會移回到文件的末尾。 |
"r+ " | 打開以便讀取和寫入。 如果文件不存在或找不到,則打開該文件的調(diào)用將失敗。 |
"w+ " | 打開用于讀取和寫入的空文件。 如果給定文件存在,則其內(nèi)容會被銷毀。 |
"a+ " | 與?“”a 相同,?但也允許讀取。 |
指定“r+”、“w+”或“a+”類型時,允許讀取和寫入(文件將處于打開狀態(tài)以進行“更新”)。 但是,在讀取與寫入之間切換時,必須有中間?fflush
、fsetpos
、fseek
或?rewind
操作。 可以為?fsetpos
或?fseek
操作指定當(dāng)前位置。
NULL
(CRT)NULL
是用于許多指針操作和函數(shù)的 null 指針值。 它等效于 0。?NULL
在以下頭文件中定義:CRTDBG。H、LOCALE。H、STDDEF。H、STDIO。H、STDLIB。H、STRING。H、TCHAR。H,時間。H 和 WCHAR.H.
stdin
,?stdout
,?stderr
語法FILE *stdin;
FILE *stdout;
FILE *stderr;
#include
備注和stdin
stdout
stderr
全局常量指針是輸入、輸出和錯誤輸出的標(biāo)準(zhǔn)流。
默認(rèn)情況下,標(biāo)準(zhǔn)輸入是從鍵盤讀取的,而標(biāo)準(zhǔn)輸出和錯誤輸出將打印到屏幕。
下列流指針可用于訪問標(biāo)準(zhǔn)流:
指針 | Stream |
---|---|
stdin | 標(biāo)準(zhǔn)輸入 |
stdout | 標(biāo)準(zhǔn)輸出 |
stderr | 標(biāo)準(zhǔn)錯誤 |
這些指針可用作函數(shù)自變量。 一些函數(shù)(如?getchar?和?putchar)將自動使用?
stdin
和?stdout
。這些指針是常量,不能分配新值。?freopen?函數(shù)可用于將流重定向到磁盤文件或其他設(shè)備。 操作系統(tǒng)使您可以在命令級別重定向程序的標(biāo)準(zhǔn)輸入和輸出。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧