Академический Документы
Профессиональный Документы
Культура Документы
В этом разделе
Подпрограммы универсальной среды выполнения C по категориям
Глобальные константы
Глобальное состояние
Связанные разделы
Подпрограммы отладки
Отладка
Связанные статьи
Заголовок Описание
Переменные среды.
7 Примечание
умолчанию) и /Ze
Определение Пример
Перед запуском программы целевая среда открывает три файла. Файл можно
открыть, вызвав функциюfopen_wfopen библиотеки с двумя аргументами. (Функция
fopen устарела, используйтеfopen_s_wfopen_s вместо нее.) Первый аргумент — это
Планируется ли создать новое содержимое для файла (или создать файл, если
он ранее не существовал) или оставить существующее содержимое.
После того как файл успешно открыт, можно определить, является ли поток
ориентированным на байты (байтовым потоком), или ориентированным на
расширенные символы (расширенный поток). Поток изначально несвязан. Вызов
некоторых функций для работы над потоком делает его байтовым, тогда как
некоторые другие функции делают его расширенным. После установки поток
сохраняет свою ориентацию до тех пор, пока он не будет закрыт вызовом fclose
или freopen.
Управление потоками
Состояния потока
Текстовые и двоичные потоки
Статья • 03.04.2023
Текстовый поток состоит из одной или нескольких строк текста, которые можно
вывести на ориентированный на текст дисплей, чтобы их можно было прочитать.
При чтении из текстового потока программа считывает новую строку в конце
каждой строки. При записи в текстовый поток программа записывает новую
строку, чтобы сигнализировать о конце строки. Для сопоставления различных
соглашений о представлении текста в файлах в различных целевых средах
библиотечные функции могут изменять количество и представление символов,
передаваемых между программой и текстовым потоком.
Пустые файлы.
Пробельные символы в конце строки.
Частичные строки (опустив новую строку в конце файла).
Символы, отличные от печатных символов, новой строки и горизонтальной
вкладки.
setlocale, _wsetlocale
Управление потоками
Статья • 03.04.2023
fopen возвращает адрес объекта типа FILE . Этот адрес используется в качестве
аргумента stream в нескольких библиотечных функциях для выполнения
различных операций с открытым файлом. Для потока байтов все входные данные
происходят так, как если бы каждый символ считывается путем вызова fgetc. Все
выходные данные происходят так, как если бы каждый символ написан путем
вызова fputc. Для широкого потока все входные данные происходят так, как если
бы каждый символ считывается путем вызова fgetwc. Все выходные данные
происходят так, как если бы каждый символ написан путем вызова fputwc.
Файл можно закрыть, вызвав fclose, после чего адрес FILE объекта недопустим.
#include <ctype.h>
#include <ctype.h>
#undef _toupper
_spawnl , _spawnle , _spawnlp , Первые три аргумента (флаг режима, путь и первый
_spawnlpe указатель на аргумент)
Макрос Описание
_RPT0 , _RPT1 , Выводит строку сообщения и от нуля до четырех аргументов. Для _RPT1
_RPT2 , _RPT3 , по _RPT4 строка сообщения служит строкой форматирования в стиле printf
_RPT4 для аргументов.
Макрос Описание
_RPTF0 , _RPTF1 , То же, что и _RPTn , но эти макросы также выводит имя файла и номер
_RPTF2 , _RPTF3 , строки, где находится макрос.
_RPTF4
C++
#ifdef _DEBUG
someVar=%d, otherVar=%d.\n",
someVar, otherVar );
#endif
Этот код выводит значения someVar и otherVar в stdout . Вызов _RPTF2 можно
применить для отчета об этих значениях плюс имя файла и номер строки:
C++
C++
do { \
if ((expr) && \
(1 == _CrtDbgReport(_CRT_ERROR, \
_CrtDbgBreak( ); \
} while (0)
#endif
C++
C++
(void *, size_t);
Функции-ловушки выделения
Функция перехватчика выделения, установленная с помощью _CrtSetAllocHook,
вызывается при каждом выделении, перераспределении или освобождении
памяти. Этот тип ловушек можно использовать для различных целей. Используйте
их, например, для проверки, как приложение обрабатывает ситуации недостатка
памяти, или для оценки шаблонов выделения, или для регистрации данных о
выделении для дальнейшего анализа.
7 Примечание
C++
C++
Однако в случае выделения памяти этот указатель пуст, так как выделение еще не
произошло. Остальные аргументы содержат размер выделения, тип блока, номер
последовательного запроса и указатель на имя файла. Если он доступен, аргументы
также включают номер строки, в которой было выполнено выделение. После того
как функция-перехватчик выполняет любой анализ и другие задачи, необходимые
ее автору, она должна вернуть либо TRUE значение , указывающее, что операция
выделения может продолжаться, либо FALSE , указывающая, что операция должна
завершиться сбоем. Простой обработчик этого типа может проверить объем
памяти, выделенный на данный момент, и вернуться FALSE , если этот объем
превысил небольшой предел. Затем приложение будет испытывать ошибки
выделения, которые обычно возникают только при нехватке доступной памяти.
Более сложные ловушки могут отслеживать структуру выделения, анализировать
использование памяти или сообщать о возникновении какой-либо определенной
ситуации.
C++
if ( nBlockUse == _CRT_BLOCK )
return( TRUE );
будет вызываться printf снова, и т. д., пока стек не переполняется. Если нужен
отчет об операциях выделения _CRT_BLOCK , есть способ обойти это ограничение —
для форматирования и вывода использовать функции Windows API вместо функций
CRT. Так как функции API-интерфейсов Windows не используют кучу библиотеки
CRT, они не могут привести к выполнению в приложении бесконечного цикла.
C++
C++
В этом разделе
Версии отладки функций выделения кучи
См. также
Отладка машинного кода
Безопасность отладчика
Сведения о куче отладки CRT
Статья • 03.04.2023
_CrtMemBlockHeader* _block_header_next;
_CrtMemBlockHeader* _block_header_prev;
int _line_number;
// Followed by:
} _CrtMemBlockHeader;
no_mans_land (0xFD)
_NORMAL_BLOCK
Вызов malloc или calloc создает блок Normal. Если вы планируете использовать
только обычные блоки и вам не нужны клиентские блоки, может потребоваться
определить _CRTDBG_MAP_ALLOC. _CRTDBG_MAP_ALLOC вызывает сопоставление всех
вызовов выделения кучи с их эквивалентами отладки в отладочных сборках. Он
позволяет хранить имя файла и сведения о номере строки о каждом вызове
выделения в соответствующем заголовке блока.
_CRT_BLOCK
_CLIENT_BLOCK
C++
#define MYSUBTYPE 4
freedbg(pbData, _CLIENT_BLOCK|(MYSUBTYPE<<16));
_FREE_BLOCK
_IGNORE_BLOCK
C++
_CrtCheckMemory
_CrtSetDbgFlag
C++
tmpFlag |= _CRTDBG_LEAK_CHECK_DF;
_CrtSetDbgFlag( tmpFlag );
C++
/* MyDbgNew.h
client blocks
*/
#ifdef _DEBUG
#else
#define DEBUG_CLIENTBLOCK
#endif // _DEBUG
/* MyApp.cpp
*/
#include "crtdbg.h"
#include "mydbgnew.h"
#ifdef _DEBUG
#endif
int main( ) {
char *p1;
p1 = new char[40];
_CrtMemDumpAllObjectsSince( NULL );
C++
typedef struct _CrtMemState
size_t lCounts[_MAX_BLOCKS];
size_t lSizes[_MAX_BLOCKS];
size_t lHighWaterCount;
size_t lTotalCount;
} _CrtMemState;
Функция Описание
C++
C++
#ifdef _DEBUG
#define addNewRecord(p, t, a) \
#endif
C++
#ifdef _DEBUG
#endif
Теперь имя исходного файла и номер строки, где вызывалась addNewRecord , будут
сохранены в каждом выделенном в отладочной куче блоке и помещены в отчет
при проверке этого блока.
См. также
Отладка машинного кода
Версии отладки функций выделения
кучи
Статья • 03.04.2023
Запись имени исходного файла и номера строки, где был сделан запрос на
выделение памяти.
C++
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
C++
_CrtDumpMemoryLeaks();
C++
C++
C++
// debug_malloc.cpp
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#include <iostream>
int main()
int* x = (int*)malloc(sizeof(int));
*x = 7;
printf("%d\n", *x);
x = (int*)calloc(3, sizeof(int));
x[0] = 7;
x[1] = 77;
x[2] = 777;
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_DEBUG);
_CrtDumpMemoryLeaks();
c:\users\username\documents\projects\leaktest\leaktest.cpp(20) : {18}
Типы блоков памяти: обычные, клиентские или CRT. Обычный блок — это
обыкновенная память, выделенная программой. Клиентский блок — особый тип
блока памяти, используемой программами MFC для объектов, для которых
требуется деструктор. Оператор new в MFC создает либо обычный, либо
клиентский блок, в соответствии с создаваемым объектом.
Блок CRT — это блок памяти, выделенной библиотекой CRT для внутреннего
использования. Библиотека CRT обрабатывает освобождение этих блоков, поэтому
CRT-блоки не будут отображаться в отчете об утечке памяти, если нет серьезных
проблем с библиотекой CRT.
C++
#ifdef _DEBUG
#else
C++
// debug_new.cpp
#define _CRTDBG_MAP_ALLOC
#include <cstdlib>
#include <crtdbg.h>
#ifdef _DEBUG
#else
struct Pod {
int x;
};
void main() {
delete pPod;
_CrtDumpMemoryLeaks();
Output
c:\users\username\documents\projects\debug_new\debug_new.cpp(20) : {75}
Эти выходные данные сообщают о том, что утечка памяти находилась на строке 20
файла debug_new.cpp.
7 Примечание
Номер выделения можно использовать для того, чтобы задать точку останова в
том месте, где выделяется память.
После задания точки останова для номера выделения памяти можно продолжить
отладку. Убедитесь, что соблюдаются те же условия, чтобы номер выделения
памяти не изменился. Когда выполнение программы будет приостановлено на
заданном выделении памяти, с помощью окна Стек вызовов и других окон
отладчика определите условия выделения памяти. Затем можно продолжить
выполнение программы и проследить, что происходит с этим объектом и почему
выделенная ему память освобождается неправильно.
Иногда может быть полезно задать точку останова по данным на самом объекте.
Для получения дополнительной информации см. раздел Использование точек
останова.
Точки останова для выделения памяти можно также задать в коде. Можно
установить следующие значения:
C++
_crtBreakAlloc = 18;
или
C++
_CrtSetBreakAlloc(18);
C++
_CrtMemState s1;
_CrtMemCheckpoint( &s1 );
C++
_CrtMemDumpStatistics( &s1 );
C++
_CrtMemCheckpoint( &s1 );
_CrtMemCheckpoint( &s2 );
_CrtMemDumpStatistics( &s3 );
Ложные срабатывания
_CrtDumpMemoryLeaks может дать ложные признаки утечки памяти, если библиотека
помечает внутренние выделения как обычные блоки, а не блоки CRT или
клиентские блоки. В таком случае функция _CrtDumpMemoryLeaks не может различать
пользовательские выделения и внутренние выделения библиотеки. Если
глобальные деструкторы для выделений библиотеки выполняются после точки
вызова функции _CrtDumpMemoryLeaks , каждое внутреннее выделение библиотеки
принимается за утечку памяти. Версии библиотеки стандартных шаблонов,
предшествовавшие Visual Studio .NET, приводили к тому, что функция
_CrtDumpMemoryLeaks сообщала о таких ложных утечках.
См. также
Сведения о куче отладки CRT
Безопасность отладчика
Отладка машинного кода
Проверка типов (CRT)
Статья • 03.04.2023
_spawnl , _spawnle , _spawnlp , Первые три аргумента (флаг режима, путь и первый
_spawnlpe указатель на аргумент)
Многие старые функции CRT имеют новые, более безопасные версии. Если
существует безопасная функция, более старая, менее безопасная версия
помечается как нерекомендуемая. Новая версия имеет _s суффикс (secure).
Устранение предупреждений о
нерекомендуемых функциях
Существует несколько способов устранить предупреждения о нерекомендуемых
функциях для старых менее безопасных функций. Проще всего просто определить
_CRT_SECURE_NO_WARNINGS или использовать warning pragma. Либо отключит
char szBuf[10];
Проверка параметров
Буферы размера
Необходимо передать размер буфера любой защищенной функции, которая
записывает данные в буфер. Безопасные версии проверяют, достаточно ли
большой буфер перед записью в него. Проверка помогает избежать опасных
ошибок переполнения буфера, которые могут позволить выполнять
вредоносный код. Эти функции обычно возвращают errno код ошибки и
вызывают обработчик недопустимых параметров, если размер буфера
слишком мал. Функции, выполняющие чтение из буферов ввода, например
gets , имеют безопасные версии, требующие указания максимального
размера.
Завершение null
Безопасность Windows
Безопасные функции
Функция CRT Функция с усиленной Использование
безопасностью
itoa, _itoa, ltoa, _ltoa, _itoa_s, _ltoa_s, _ultoa_s, Преобразуют целочисленный тип в
ultoa, _ultoa, _i64toa, _i64toa_s, _ui64toa_s, строку
_ui64toa, _itow, _ltow, _itow_s, _ltow_s,
_ultow, _i64tow, _ultow_s, _i64tow_s,
_ui64tow _ui64tow_s
C++
char szBuf[10];
C++
char szBuf[10];
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
// ...
char szBuf[10];
7 Примечание
C++
#define _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 1
// ...
char szBuf[10];
C++
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
// ...
И в этом примере:
C++
#define _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 1
// ...
Максимальное увеличение
производительности
Производительность многопоточных библиотек улучшилась и близка к
производительности теперь исключенных однопоточных библиотек. Для ситуаций,
когда нужна еще более высокая производительность, предусмотрено несколько
новых возможностей.
Версии этих объектов в чистом режиме среды CLR отмечены как нерекомендуемые
для использования в Visual Studio 2015 и не поддерживаются в Visual Studio 2017.
Используйте обычные версии для машинного кода и кода /clr.
Код может содержать ошибки при передаче объектов среды выполнения C (CRT),
таких как дескрипторы файлов, языковые параметры и переменные среды, в
библиотеку DLL или из нее. Вызовы функций через границу библиотеки DLL могут
привести к непредвиденному поведению, если библиотека DLL и все файлы,
вызывающие библиотеку DLL, используют разные копии библиотек CRT.
Еще одним симптомом этой проблемы является ошибка в окне вывода во время
отладки, например HEAP[]: Invalid Address specified to RtlValidateHeap(#,#)
Причины
Каждая копия библиотеки CRT имеет определенное собственное состояние,
которое хранится приложением или библиотекой DLL в локальном хранилище
потока приложения.
Это особенно касается версий CRT до универсальной версии CRT в Visual Studio
2015 и более поздних версий. В Visual Studio 2013 и более ранних версиях
создавались специальные библиотеки CRT для каждой версии Visual Studio.
Сведения о внутренней реализации CRT, такие как структуры данных и соглашения
об именовании, были различными в каждой версии. Динамическая компоновка
кода, скомпилированного для одной версии CRT, с другой версией библиотеки DLL
CRT никогда не поддерживалась. Иногда это будет работать, но из-за удачи, а не
дизайна.
Каждая копия библиотеки CRT имеет собственный диспетчер кучи. Это может
привести к повреждению кучи, если вы выделяете память в одной библиотеке CRT
и передаете указатель через границу библиотеки DLL для освобождения другой
копией библиотеки CRT. Если библиотека DLL передает объекты CRT через границу
библиотеки DLL или выделяет память, освобожденную за пределами библиотеки
DLL, клиенты библиотеки DLL должны использовать ту же копию библиотеки CRT,
что и библиотека DLL.
Описание
В этом примере дескриптор файла передается через границу библиотеки DLL.
Файлы DLL и .exe создаются с помощью /MD , чтобы они совместно используют
одну копию CRT.
При перестроении с /MT таким образом, чтобы они использовали отдельные копии
CRT, запуск в результате test1Main.exe приведет к нарушению доступа.
C++
// test1Dll.cpp
#include <stdio.h>
fclose( stream );
C++
// test1Main.cpp
#include <stdio.h>
#include <process.h>
int main(void)
FILE * stream;
writeFile(stream);
Output
this is a string
Описание
В этом примере переменные среды передаются через границу библиотеки DLL.
C++
// test2Dll.cpp
#include <stdio.h>
#include <stdlib.h>
char *libvar;
size_t libvarsize;
else
free( libvar );
C++
// test2Main.cpp
#include <stdlib.h>
#include <stdio.h>
void readEnv();
_putenv( "MYLIB=c:\\mylib;c:\\yourlib" );
readEnv();
Output
Если вы создаете файлы DLL и EXE с помощью /MD , чтобы использовать только
одну копию CRT, программа успешно запустится и выведет следующие выходные
данные:
Output
int func(void)
return 3;
int gi = func();
int main()
return gi;
При просмотре функций в стеке вы увидите, что CRT вызывает список указателей
функций. Эти функции похожи на func() конструкторы для экземпляров классов.
CRT получает список указателей функций из компилятора Microsoft C++. Когда
компилятор видит глобальный инициализатор, он создает динамический
инициализатор в .CRT$XCU разделе, где CRT имя раздела и XCU является именем
группы. Чтобы получить список динамических инициализаторов, выполните
команду dumpbin /all main.obj и выполните поиск в .CRT$XCU разделе. Эта команда
применяется только при main.cpp компиляции в виде файла C++, а не файла C. Он
должен быть похож на этот пример:
SECTION HEADER #6
.CRT$XCU name
0 physical address
0 virtual address
1 number of relocations
40300040 flags
Initialized Data
4 byte align
Read Only
RAW DATA #6
00000000: 00 00 00 00 ....
RELOCATIONS #6
Symbol Symbol
__xc_a в .CRT$XCA
__xc_z в .CRT$XCZ
asm
.CRT$XCA
__xc_a
.CRT$XCU
.CRT$XCZ
__xc_z
Чтобы предотвратить проблемы в коде, начиная с Visual Studio 2019 версии 16.11,
мы добавили два новых предупреждения по умолчанию: C5247 и C5248. Включите
эти предупреждения для обнаружения проблем при создании собственных
инициализаторов.
C++
__declspec(allocate(".CRT$XCT")) type i1 = f;
__declspec(allocate(".CRT$XCV")) type i2 = f;
7 Примечание
Tmpnam, _wtmpnam
asctime, _wasctime
_fcvt
_ecvt
Макрос Реальные
Реальные
Реальные
Комплекс
Комплекс
Комплекс
Требования
Выполните сборку с помощью команды /std:c11.
Если вам нужен справочник по API для библиотеки среды выполнения C, см. статью
Справочник по библиотеке среды выполнения C.
7 Примечание
7 Примечание
Так как библиотека DLL, созданная путем связывания со статической CRT, имеет
собственное состояние CRT, не рекомендуется связывать статически с CRT в
библиотеке DLL, если последствия не понятны и не нужны. Например, при вызове
_set_se_translator в исполняемом файле, который загружает библиотеку DLL,
связанную с собственной статической CRT, все аппаратные исключения, созданные
кодом в библиотеке DLL, не будут перехватываемы переводчиком, но аппаратные
исключения, созданные кодом в основном исполняемом файле, будут
перехватываться.
C++
#include <ios>
Кроме того, вы можете избежать некоторых из этих проблем, если для всех
образов в процессе будет использоваться одна и та же версия динамически
загружаемой библиотеки CRT. Чтобы убедиться, что все компоненты используют
одну и ту же версию библиотеки DLL CRT, выполните сборку /MD с помощью
параметра и используйте один набор инструментов компилятора и параметры
свойств.
Доступ к аргументам
Операции с буфером
Классификация байтов
Классификация символов
Поддержка сложных математических выражений
Выравнивание данных
Преобразование данных
Подпрограммы отладки
Управление каталогами
Обработка ошибок
Процедуры обработки исключений
Обработка файлов
Поддержка математических функций для чисел с плавающей запятой
Ввод и вывод
Интернационализация
Выделение памяти
Управление процессами и средой
Устойчивость
Проверка ошибок во время выполнения
Сортировка и поиск
Обработка строк
Системные вызовы
Управление временем
См. также раздел
Справочник по библиотеке времени выполнения C
Доступ к аргументам
Статья • 03.04.2023
7 Примечание
if ((c >= 'A') && (c <= 'Z')) || ((c >= 'a') && (c <= 'z'))
return TRUE;
iscsym, iscsymf, __iscsym, __iswcsym, __iscsymf, Буква, символ подчеркивания или цифра
__iswcsymf, _iscsym_l, _iswcsym_l, _iscsymf_l,
_iswcsymf_l
0.0f, 1.0f } .
Тригонометрические функции
Функция Описание
Гиперболические функции
Функция Описание
Экспоненциальные и логарифмические
функции
Функция Описание
Функции обработки
Функция Описание
Функция Описание
_itoa, _ltoa, _ultoa, _i64toa, _ui64toa, _itow, _ltow, Преобразуют целочисленные типы в
ultow, _i64tow, _ui64tow, _itoa_s, _ltoa_s, _ultoa_s, строку
_i64toa_s, _ui64toa_s, _itow_s, _ltow_s, _ultow_s,
_i64tow_s, _ui64tow_s
Подпрограмма Использование
acos
acosh
asin
asinh
atan, atan2
atanh
Bessel functions
_cabs
ceil
_chgsign
_clear87, _clearfp
_control87, _controlfp
copysign
cos
cosh
Exp
fabs
_finite
floor
fmod
_fpclass
_fpieee_flt
_fpreset
frexp
_hypot
_isnan
ldexp
log
_logb
log10
longjmp
_matherr
modf
_nextafter
pow
printf_s
printf
_scalb
scanf_s
scanf
setjmp
sin
sinh
sqrt
_status87, _statusfp
tan
tanh
Хотя исходный код доступен для большинства printf подпрограмм и scanf , они
выполняют внутренний вызов другой подпрограммы, для которой исходный код
не предоставляется.
Подпрограмма C abort
C assert routine
Оператор C++ delete
Обработка файлов
Системные вызовы
Обработка ошибок (CRT)
Статья • 03.04.2023
clearerr Сброс индикатора ошибки. Вызов rewind или закрытие потока также
приводит к сбросу индикатора ошибки.
feof Проверка на наличие конца файла. Конец файла также указан, если
_read возвращает результат 0.
Подпрограмма Использование
Подпрограмма Использование
Подпрограмма Использование
Подпрограмма Использование
CreateFile
CreatePipe
CreateNamedPipe
Управление каталогами
Системные вызовы
Поддержка математических функций
для чисел с плавающей запятой
Статья • 03.04.2023
log, logf, logl, log10, log10f, log10l Вычисляет натуральный логарифма или логарифм по
основанию 10
7 Примечание
Ввод и вывод
Потоковый ввод-вывод
Статья • 03.04.2023
stdin 0
stdout 1
stderr 2
Системные вызовы
Ввод-вывод на консоль и порт
Статья • 03.04.2023
_fflush_nolock
_fgetc_nolock, _fgetwc_nolock
_fread_nolock
_fseek_nolock, _fseeki64_nolock
_ftell_nolock, _ftelli64_nolock
_fwrite_nolock
_getc_nolock, _getwc_nolock
_getch_nolock, _getwch_nolock
_getchar_nolock, _getwchar_nolock
_getche_nolock, _getwche_nolock
_getdcwd_nolock, _wgetdcwd_nolock
_putc_nolock, _putwc_nolock
_putch_nolock, _putwch_nolock
_putchar_nolock, _putwchar_nolock
_ungetc_nolock, _ungetwc_nolock
_ungetch_nolock, _ungetwch_nolock
setlocale Используйте функцию для изменения или запроса некоторых или всех
сведений о языковом стандарте текущей программы или потока при
использовании функций без суффикса _l . Функции с суффиксом _l используют
переданные им параметры языкового стандарта только во время выполнения этой
конкретной функции. Чтобы создать языковой стандарт для использования с
функцией с суффиксом _l , используйте _create_locale. Чтобы освободить этот
языковой стандарт, используйте _free_locale. Чтобы получить текущий языковой
стандарт, используйте _get_current_locale.
7 Примечание
Кодовая страница — это набор символов, который может содержать числа, знаки
пунктуации и другие глифы. Различные языки и языковые стандарты могут
использовать разные кодовые страницы. Например, кодовая страница ANSI 1252
используется для английского и большинства европейских языков; кодовая
страница OEM 932 используется для японского иероглифического письма Кандзи.
strlen, wcslen, _mbslen, Для строк многобайтовой кодировки: проверить каждый символ в
_mbslen_l, _mbstrlen, строке и вернуть длину строки. Для строки расширенных символов:
_mbstrlen_l вернуть длину строки.
Макросы
Название Описание
or Альтернатива оператору || .
7 Примечание
U Внимание!
наиболее типобезопасным.
RetVal = _tcsrev(szString);
C
char *RetVal, *szString;
RetVal = _mbsrev(szString);
RetVal = _wcsrev(szString);
RetVal = strrev(szString);
См. также
Универсальные текстовые сопоставления
Сопоставления подпрограмм
// GENTEXT.C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <direct.h>
#include <errno.h>
#include <tchar.h>
_TCHAR buff[_MAX_PATH];
#ifdef _UNICODE
printf("Unicode version\n");
#else /* _UNICODE */
#ifdef _MBCS
printf("MBCS version\n");
#else
printf("SBCS version\n");
#endif
#endif /* _UNICODE */
else
_tprintf(_T("'%s'\n"), _tcsrev(_tcsdup(str)));
return 0;
// crt_mbcsgtxt.c
/*
*/
#include <stdio.h>
#include <stdlib.h>
#include <mbstring.h>
#include <direct.h>
char buff[_MAX_PATH];
printf("MBCS version\n");
else {
return 0;
// crt_unicgtxt.c
/*
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <direct.h>
wchar_t buff[_MAX_PATH];
printf("Unicode version\n");
else {
wprintf(L"'%s'\n", wcsrev(wcsdup(str)));
return 0;
// crt_sbcsgtxt.c
/*
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <direct.h>
char buff[_MAX_PATH];
printf("SBCS version\n");
else {
printf("'%s'\n", strrev(strdup(str)));
return 0;
См. также
Универсальные текстовые сопоставления
Сопоставления подпрограмм
#define _USE_INLINING
Если вы можете использовать встраивание, это лучшее решение, так как оно
гарантирует сопоставление типов и не имеет дополнительных затрат на
время.
#define _MB_MAP_DIRECT
См. также
Интернационализация
_exit Завершает процесс немедленно без вызова atexit или _onexit либо
очистки буферов.
SetUnhandledExceptionFilter
Проверка ошибок во время
выполнения
Статья • 03.04.2023
runtime_checks
Подпрограммы отладки
Сортировка и поиск
Статья • 03.04.2023
_lsearch Линейный поиск заданного значения, которое добавляется в массив, если оно
не найдено
strcoll, wcscoll, _mbscoll, _strcoll_l, _wcscoll_l, _mbscoll_l, Сравнивают две символьных строки
_stricoll, _wcsicoll, _mbsicoll, _stricoll_l, _wcsicoll_l, с использованием данных кодовой
_mbsicoll_l, _strncoll, _wcsncoll, _mbsncoll, _strncoll_l, страницы ( _mbsicoll и _mbsnicoll
_wcsncoll_l, _mbsncoll_l, _strnicoll, _wcsnicoll, _mbsnicoll, не учитывают регистр)
_strnicoll_l, _wcsnicoll_l, _mbsnicoll_l
strcat, wcscat, _mbscat, strcat_s, wcscat_s, _mbscat_s Добавляют одну строку к другой
strcoll, wcscoll, _mbscoll, _strcoll_l, _wcscoll_l, _mbscoll_l, Сравнивают две строки, используя
_stricoll, _wcsicoll, _mbsicoll, _stricoll_l, _wcsicoll_l, данные кодовой страницы текущего
_mbsicoll_l, _strncoll, _wcsncoll, _mbsncoll, _strncoll_l, языкового стандарта ( _stricoll ,
_wcsncoll_l, _mbsncoll_l, _strnicoll, _wcsnicoll, _mbsnicoll, _wcsicoll , _strnicoll и _wcsnicoll
_strnicoll_l, _wcsnicoll_l, _mbsnicoll_l не учитывают регистр)
strcpy, wcscpy, _mbscpy, strcpy_s, wcscpy_s, _mbscpy_s Копируют одну строку в другую
_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, Сравнить две строки без учета
_mbsicmp_l регистра
_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l Устанавливают для всех символов
строки значение определенного
символа
strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l, Находят следующий токен в строке
strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s,
_mbstok_s_l
_findclose Освобождение
ресурсов от
предыдущих операций
поиска
Обработка файлов
Управление каталогами
Низкоуровневый ввод-вывод
Управление временем
Статья • 03.04.2023
Подпрограммы времени
Функция Использование
ctime, _ctime32, _ctime64, _wctime, Преобразуют время из типа time_t , __time32_t или
_wctime32, _wctime64, _ctime_s, __time64_t в символьную строку. Версии этих функций
_ctime32_s, _ctime64_s, _wctime_s, с суффиксом _s являются более безопасными.
_wctime32_s, _wctime64_s
_utime, _utime32, _utime64, _wutime, Задают время изменения указанного файла, используя
_wutime32, _wutime64 либо текущее время, либо значение времени,
хранящееся в структуре.
7 Примечание
Во всех версиях Microsoft C/C++, кроме версии Microsoft C/C++ 7.0, и во всех
версиях Visual C++ эта функция времени возвращает текущее время как
количество секунд, прошедших с полуночи 1-го января 1970 года. В версии
Microsoft C/C++ 7.0 функция time возвращает текущее время как количество
секунд, истекших с полуночи 31-го декабря 1899 года.
7 Примечание
В версиях Visual C++ и Microsoft C++ до Visual Studio 2005 time_t было long
int (32 бита) и, следовательно, не может использоваться для дат за последние
3:14:07 19 января 2038 г. в формате UTC. Теперь тип time_t по умолчанию
эквивалентен типу __time64_t , но при задании директивы _USE_32BIT_TIME_T
тип time_t изменяется на тип __time32_t and forces many time functions
изменяется на тип call versions that take the 32-bit time_t . Дополнительные
сведения см. в документации по отдельным функциям времени в стандартных
типах и комментариях.
Название
__badioinfo
_acmdln
_commode
_crtAssertBusy
_crtBreakAlloc
__initenv
__lconv
__mb_cur_max
__pioinfo
__unguarded_readlc_active
Название
_wcmdln
__winitenv
Название
__acrt_iob_func
__AdjustPointer
__BuildCatchObject
__BuildCatchObjectHelper
__C_specific_handler
_calloc_base
_chkesp
__chkstk
_chkstk
_chvalidator
_chvalidator_l
_CIacos
_CIasin
_CIatan
_CIatan2
_CIcos
_CIcosh
_CIexp
Название
_CIfmod
_CIlog
_CIlog10
_CIpow
_CIsin
_CIsinh
_CIsqrt
_CItan
_CItanh
__clean_type_info_names_internal
_configure_narrow_argv
_configure_wide_argv
__conio_common_vcprintf
__conio_common_vcprintf_p
__conio_common_vcprintf_s
__conio_common_vcscanf
__conio_common_vcwprintf
__conio_common_vcwprintf_p
__conio_common_vcwprintf_s
__conio_common_vcwscanf
__CppXcptFilter
__create_locale
_crt_atexit
_crt_at_quick_exit
__crtCompareStringA
__crtCompareStringEx
Название
__crtCompareStringW
__crtCreateEventExW
__crtCreateSemaphoreExW
__crtCreateSymbolicLinkW
_crt_debugger_hook
__crtEnumSystemLocalesEx
__crtFlsAlloc
__crtFlsFree
__crtFlsGetValue
__crtFlsSetValue
_CrtGetCheckCount
__crtGetDateFormatEx
__crtGetFileInformationByHandleEx
__crtGetLocaleInfoEx
__crtGetShowWindowMode
__crtGetTickCount64
__crtGetTimeFormatEx
__crtGetUserDefaultLocaleName
__crtInitializeCriticalSectionEx
__crtIsPackagedApp
__crtIsValidLocaleName
__crtLCMapStringA
__crtLCMapStringEx
__crtLCMapStringW
_CrtSetCheckCount
Название
_CrtSetDbgBlockType
__crtSetFileInformationByHandle
__crtSetThreadStackGuarantee
__crtSetUnhandledExceptionFilter
__crtSleep
__crtTerminateProcess
__crtUnhandledException
__CxxDetectRethrow
__CxxExceptionFilter
__CxxFrameHandler
__CxxFrameHandler2
__CxxFrameHandler3
__CxxLongjmpUnwind
__CxxQueryExceptionSize
__CxxRegisterExceptionObject
_CxxThrowException
__CxxUnregisterExceptionObject
_dclass
__DestructExceptionObject
__dllonexit
__doserrno
_dosmaperr
_dpcomp
_dsign
__dstbias
_dtest
Название
_EH_prolog
_errno
_except_handler
_except_handler2
_except_handler3
_except_handler4_common
_except1
_execute_onexit_table
_fdclass
_fdpcomp
_fdsign
_fdtest
_filbuf
_FindAndUnlinkFrame
_flsbuf
__fpe_flt_rounds
_FPE_Raise
__fpecode
__FrameUnwindFilter
_fread_nolock_s
_free_base
__free_locale
_freea_s
_freefls
_ftol
__get_current_locale
Название
__get_flsindex
_get_initial_narrow_environment
_get_initial_wide_environment
_get_narrow_winmain_command_line
_get_stream_buffer_pointers
__get_tlsindex
_get_wide_winmain_command_line
_Getdays
__getmainargs
_Getmonths
__GetPlatformExceptionInfo
_getptd
_Gettnames
_global_unwind2
_inconsistency
_initialize_lconv_for_unsigned_char
_initialize_narrow_environment
_initialize_onexit_table
_initialize_wide_environment
_initptd
_invalid_parameter
_invoke_watson
__iob_func
_IsExceptionObjectToBeDestroyed
___lc_codepage_func
___lc_collate_cp_func
Название
___lc_locale_name_func
__lconv_init
_ldclass
_ldpcomp
_ldsign
_ldtest
__libm_sse2_acos
_libm_sse2_acos_precise
__libm_sse2_acosf
__libm_sse2_asin
_libm_sse2_asin_precise
__libm_sse2_asinf
__libm_sse2_atan
_libm_sse2_atan_precise
__libm_sse2_atan2
__libm_sse2_atanf
__libm_sse2_cos
_libm_sse2_cos_precise
__libm_sse2_cosf
__libm_sse2_exp
_libm_sse2_exp_precise
__libm_sse2_expf
__libm_sse2_log
_libm_sse2_log_precise
__libm_sse2_log10
_libm_sse2_log10_precise
Название
__libm_sse2_log10f
__libm_sse2_logf
__libm_sse2_pow
_libm_sse2_pow_precise
__libm_sse2_powf
__libm_sse2_sin
_libm_sse2_sin_precise
__libm_sse2_sinf
_libm_sse2_sqrt_precise
__libm_sse2_tan
_libm_sse2_tan_precise
__libm_sse2_tanf
_local_unwind2
_local_unwind4
_lock_locales
_longjmpex
_malloc_base
___mb_cur_max_func
___mb_cur_max_l_func
_mbctype
_NLG_Dispatch2
_NLG_Return
_NLG_Return2
__p___argc
__p___argv
Название
__p___initenv
__p___mb_cur_max
__p___wargv
__p___winitenv
__p__acmdln
__p__commode
__p__crtAssertBusy
__p__crtBreakAlloc
__p__crtDbgFlag
__p__daylight
__p__dstbias
__p__environ
__p__fmode
__p__iob
__p__mbcasemap
__p__mbctype
__p__pctype
__p__pgmptr
__p__pwctype
__p__timezone
__p__tzname
__p__wcmdln
__p__wenviron
__p__wpgmptr
_pctype
__pctype_func
Название
_pwctype
__pwctype_func
__pxcptinfoptrs
_query_app_type
_realloc_base
_register_onexit_function
_register_thread_local_exe_atexit_callback
__report_gsfailure
__RTCastToVoid
__RTDynamicCast
__RTtypeid
_seh_filter_dll
_seh_filter_exe
_seh_longjmp_unwind
_seh_longjmp_unwind4
__set_app_type
_set_malloc_crt_max_wait
_setjmp3
__setlc_active
___setlc_active_func
__setusermatherr
_SetWinRTOutOfMemoryExceptionCallback
_sopen_dispatch
__std_exception_copy
__std_exception_destroy
__std_type_info_destroy_list
Название
__std_type_info_name
__stdio_common_vfprintf
__stdio_common_vfprintf_p
__stdio_common_vfprintf_s
__stdio_common_vfscanf
__stdio_common_vfwprintf
__stdio_common_vfwprintf_p
__stdio_common_vfwprintf_s
__stdio_common_vfwscanf
__stdio_common_vsnprintf_s
__stdio_common_vsnwprintf_s
__stdio_common_vsprintf
__stdio_common_vsprintf_p
__stdio_common_vsprintf_s
__stdio_common_vsscanf
__stdio_common_vswprintf
__stdio_common_vswprintf_p
__stdio_common_vswprintf_s
__stdio_common_vswscanf
_Strftime
__STRINGTOLD
__STRINGTOLD_L
__strncnt
__sys_errlist
__sys_nerr
Название
__threadhandle
__threadid
__timezone
__TypeMatch
__tzname
__unDName
__unDNameEx
__unDNameHelper
__unguarded_readlc_active
___unguarded_readlc_active_add_func
_unloaddll
_unlock_locales
_vacopy
_ValidateExecute
_ValidateRead
_ValidateWrite
_VCrtDbgReportA
_VCrtDbgReportW
_W_Getdays
_W_Getmonths
_W_Getnames
_W_Gettnames
_Wcsftime
__wcsncnt
__wgetmainargs
Название
_wsopen_dispatch
_Xbad_alloc
_Xlength_error
Синтаксис
C++
int _abnormal_termination(
);
Возвращаемое значение
Значение true , если система очищает стек; в противном случае — значение false .
Комментарии
_abnormal_termination — это внутренняя функция, используемая для управления
Требования
Подпрограмма Обязательный заголовок
_abnormal_termination <excpt.h>
Синтаксис
C
char * _acmdln;
wchar_t * _wcmdln;
#ifdef WPRFLAG
#else
Remarks
Эти внутренние переменные CRT хранят полную командную строку. Они
представлены в экспортированных символах для CRT, но не предназначены для
использования в коде. _acmdln хранит данные как строку символов. _wcmdln хранит
данные как строку расширенных символов. _tcmdln может быть определена как
_acmdln или _wcmdln в зависимости от обстоятельств.
Синтаксис
C++
Remarks
Эта версия функции atan включает специальные соглашения о вызовах,
распознаваемые компилятором. Это ускоряет выполнение, поскольку исключает
создание копий и помогает распределять регистры.
Требования
Платформа: x86
Синтаксис
C++
Remarks
Эта версия функции atan2 включает специальные соглашения о вызовах,
распознаваемые компилятором. Это ускоряет выполнение, поскольку исключает
создание копий и помогает распределять регистры.
Требования
Платформа: x86
Синтаксис
C
Remarks
Эта версия функции cos включает специальные соглашения о вызовах,
распознаваемые компилятором. Это ускоряет выполнение, поскольку исключает
создание копий и помогает распределять регистры.
Требования
Платформа: x86
Синтаксис
C++
Remarks
Эта версия функции exp включает специальные соглашения о вызовах,
распознаваемые компилятором. Это ускоряет выполнение, поскольку исключает
создание копий и помогает распределять регистры.
Требования
Платформа: x86
Синтаксис
C++
Remarks
Эта версия функции fmod включает специальные соглашения о вызовах,
распознаваемые компилятором. Это ускоряет выполнение, поскольку исключает
создание копий и помогает распределять регистры.
Требования
Платформа: x86
fmod, fmodf
_CIlog
Статья • 03.04.2023
Синтаксис
C++
Remarks
Эта версия функции log включает специальные соглашения о вызовах,
распознаваемые компилятором. Это ускоряет выполнение, поскольку исключает
создание копий и помогает распределять регистры.
Требования
Платформа: x86
Синтаксис
C++
Remarks
Эта версия функции log10 включает специальные соглашения о вызовах,
распознаваемые компилятором. Она ускоряет выполнение, так как исключает
создание копий и помогает распределять регистры.
Требования
Платформа: x86
Синтаксис
C++
Remarks
Эта версия функции pow включает специальные соглашения о вызовах,
распознаваемые компилятором. Это ускоряет выполнение, поскольку исключает
создание копий и помогает распределять регистры.
Требования
Платформа: x86
Синтаксис
C
Remarks
Эта встроенная версия sin функции имеет специализированное соглашение о
вызовах, которое понимает компилятор. Это ускоряет выполнение, поскольку
исключает создание копий и помогает распределять регистры.
Требования
Платформа: x86
Синтаксис
C++
Remarks
Эта версия функции sqrt включает специальные соглашения о вызовах,
распознаваемые компилятором. Это ускоряет выполнение, поскольку исключает
создание копий и помогает распределять регистры.
Требования
Платформа: x86
Синтаксис
C
Remarks
Эта версия функции tan включает специальные соглашения о вызовах,
распознаваемые компилятором. Она ускоряет выполнение, так как исключает
создание копий и помогает распределять регистры.
Требования
Платформа: x86
Синтаксис
C++
int __crtLCMapStringW(
LCID Locale,
DWORD dwMapFlags,
LPCWSTR lpSrcStr,
int cchSrc,
LPWSTR lpDestStr,
int cchDest)
Параметры
Locale
dwMapFlags
lpSrcStr
cchSrc
Значение cchSrc , равное –1, означает, что строка, на которую указывает параметр
lpSrcStr , оканчивается нуль-символом. Если это так, и эта функция используется в
режиме сопоставления строк, функция вычисляет саму длину строки и завершает
сопоставленную строку, хранящуюся в *lpDestStr .
lpDestStr
cchDest
Возвращаемое значение
Если значение cchDest отлично от нуля, число символов (или байтов, если указан
LCMAP_SORTKEY ), записанных в буфер, указывает на успех. Это число включает место
Если значение cchDest равно нулю, то размер буфера в символах (или байтах, если
указан LCMAP_SORTKEY ), требуемый для получения преобразованной строки или
ключа сортировки, указывает на успех. Этот размер включает место для символа
конца строки NULL.
Комментарии
Если значение cchSrc больше нуля и параметр lpSrcStr представляет собой
строку, завершающуюся нуль-символом, то функция __crtLCMapStringW
устанавливает для параметра cchSrc значение, равное длине строки. Затем
функция __crtLCMapStringW вызывает версию для расширенных символов (Юникод)
функции LCMapString с указанными параметрами. Дополнительные сведения о
параметрах и возвращаемом значении этой функции см. в LCMapStringразделе .
Требования
Подпрограмма Обязательный заголовок
__crtLCMapStringW <awint.h>
__CxxFrameHandler
Статья • 03.04.2023
Синтаксис
C++
EXCEPTION_DISPOSITION __CxxFrameHandler(
EHExceptionRecord *pExcept,
EHRegistrationNode *pRN,
void *pContext,
DispatcherContext *pDC
);
Параметры
pExcept
pRN
pContext
pDC
Возвращаемое значение
Одно из значений выражения фильтра, используемое в операторе try-except.
Remarks
Требования
Подпрограмма Обязательный заголовок
Синтаксис
C
_onexit_t __dllonexit(
_onexit_t func,
_PVFV ** pbegin,
_PVFV ** pend
);
Параметры
func
pbegin
pend
Возвращаемое значение
В случае успешного выполнения — указатель на функцию пользователя. В
противном случае — NULL указатель.
Комментарии
Функция аналогична __dllonexit функции, _onexit за исключением того, что
глобальные переменные, используемые этой функцией, не видны этой
подпрограмме. Вместо глобальных переменных в этой функции применяются
параметры pbegin и pend .
Функции _onexit и atexit в библиотеке DLL, связанной с файлом MSVCRT.LIB,
должны содержать собственный список atexit/_onexit. Эта подпрограмма
представляет собой рабочий процесс, который вызывают такие библиотеки DLL.
Требования
Подпрограмма Обязательный файл
__dllonexit onexit.c
Синтаксис
C
int _except_handler3(
PEXCEPTION_RECORD exception_record,
PEXCEPTION_REGISTRATION registration,
PCONTEXT context,
PEXCEPTION_REGISTRATION dispatcher
);
Параметры
exception_record
registration
context
[in] Зарезервировано.
dispatcher
[in] Зарезервировано.
Возвращаемое значение
Если исключение должно быть отброшено, возвращает значение
DISPOSITION_DISMISS . Если исключение должно быть передано на уровень вверх в
инкапсулируемые обработчики исключений, возвращает значение
DISPOSITION_CONTINUE_SEARCH .
Комментарии
Если этот метод находит подходящий обработчик исключений, он передает
исключение в обработчик. В этом случае этот метод не возвращается к коду,
который его вызвал, и возвращаемое значение не имеет значения.
Синтаксис
C
int _initialize_onexit_table(
_onexit_table_t* table
);
int _register_onexit_function(
_onexit_table_t* table,
_onexit_t function
);
int _execute_onexit_table(
_onexit_table_t* table
);
Параметры
table
function
Возвращаемое значение
В случае успешного выполнения функция возвращает значение 0. В противном
случае возвращается отрицательное значение.
Комментарии
Эти функции представляют собой сведения о реализации инфраструктуры,
используемые для поддержки среды выполнения C, и их не следует вызывать
непосредственно из кода. Среда выполнения C использует таблицу onexit функций
для представления последовательности функций, зарегистрированных вызовами
atexit , at_quick_exit и _onexit . Структура onexit данных таблицы функций
Требования
Подпрограмма Обязательный
заголовок
См. также
atexit
_onexit, _onexit_m
__getmainargs , __wgetmainargs
Статья • 03.04.2023
Синтаксис
C++
int __getmainargs(
int * argc,
int doWildCard,
_startupinfo * startInfo);
int __wgetmainargs (
int *argc,
wchar_t ***argv,
wchar_t ***env,
int doWildCard,
_startupinfo * startInfo)
Параметры
argc
argv
env
startInfo
Возвращаемое значение
0 в случае успешного выполнения; отрицательное значение, если операция
завершилась неудачей.
Комментарии
Используйте __getmainargs на платформах без расширенных символов и
__wgetmainargs на платформах расширенных символов (Unicode).
Требования
Подпрограмма Обязательный заголовок
__getmainargs internal.h
__wgetmainargs internal.h
___lc_codepage_func
Статья • 03.04.2023
Синтаксис
C++
UINT ___lc_codepage_func(void);
Возвращаемое значение
Текущая кодовая страница потока.
Комментарии
___lc_codepage_func — это внутренняя функция CRT, которая используется другими
функциями CRT для получения текущей кодовой страницы из локального
хранилища потока для данных CRT. Эти сведения также доступны с помощью
_get_current_locale функции .
Требования
Подпрограмма Обязательный заголовок
___lc_codepage_func crt\src\setlocal.h
См. также раздел
_get_current_locale
setlocale, _wsetlocale
_create_locale, _wcreate_locale
_free_locale
___lc_collate_cp_func
Статья • 03.04.2023
Синтаксис
C++
UINT ___lc_codepage_func(void);
Возвращаемое значение
Текущая кодовая страница сортировки потока.
Комментарии
___lc_collate_cp_func — это внутренняя функция CRT, которая используется
другими функциями CRT для получения текущей кодовой страницы сортировки из
локального хранилища потока для данных CRT. Эти сведения также доступны с
помощью _get_current_locale функции .
Требования
Подпрограмма Обязательный заголовок
___lc_collate_cp_func crt\src\setlocal.h
setlocale, _wsetlocale
_create_locale, _wcreate_locale
_free_locale
___lc_locale_name_func
Статья • 03.04.2023
Синтаксис
C++
wchar_t** ___lc_locale_name_func(void);
Возвращаемое значение
Указатель на строку, которая содержит имя текущего языкового стандарта потока.
Комментарии
___lc_locale_name_func — это внутренняя функция CRT, которая используется
другими функциями CRT для получения текущего языкового стандарта из
локального хранилища потока для данных CRT. Эти сведения также доступны с
помощью _get_current_locale функции или setlocaleфункций . _wsetlocale
Требования
Подпрограмма Обязательный заголовок
___lc_locale_name_func crt\src\setlocal.h
setlocale, _wsetlocale
_create_locale, _wcreate_locale
_free_locale
_local_unwind2
Статья • 03.04.2023
Синтаксис
C++
void _local_unwind2(
PEXCEPTION_REGISTRATION xr,
int stop
);
Параметры
xr
stop
Комментарии
Этот метод используется только средой выполнения. Не вызывайте метод в коде.
Синтаксис
C++
int ___mb_cur_max_func(void);
int * __p___mb_cur_max(void);
Параметры
locale
Возвращаемое значение
Максимальное число байт в многобайтовом символе для текущего языкового
стандарта потока или указанного языкового стандарта.
Комментарии
___mb_cur_max_func — это внутренняя функция, которую CRT использует для
получения текущего значения макроса из локального MB_CUR_MAX хранилища
потока. Рекомендуется использовать макрос MB_CUR_MAX для обеспечения
переносимости кода.
Макрос __mb_cur_max — это удобный способ вызова функции ___mb_cur_max_func .
Функция __p___mb_cur_max определяется для совместимости с Visual C++ 5.0 и
более ранних версий.
Требования
Подпрограмма Обязательный заголовок
Синтаксис
C++
int * __p__commode(
);
Возвращаемое значение
Указатель на глобальную переменную _commode .
Комментарии
Функция __p__commode предназначена только для внутреннего использования и не
должна вызываться из пользовательского кода.
Требования
Подпрограмма Обязательный заголовок
__p__commode internal.h
__p__fmode
Статья • 03.04.2023
Синтаксис
C++
int* __p__fmode(
);
Возвращаемое значение
Указатель на глобальную переменную _fmode .
Комментарии
Функция __p__fmode предназначена только для внутреннего использования и не
должна вызываться из пользовательского кода.
Требования
Подпрограмма Обязательный заголовок
__p__fmode <stdlib.h>
__pctype_func
Статья • 03.04.2023
Синтаксис
C++
Возвращаемое значение
Указатель на массив данных о классификации символов.
Комментарии
Сведения в таблице классификации символов предназначены только для
внутреннего пользования и используются различными функциями, которые
классифицируют символы типа char . Дополнительные сведения см. в Remarks
разделе _pctype, _pwctype, _wctype, _mbctype, . _mbcasemap
Требования
Подпрограмма Обязательный заголовок
__pctype_func <ctype.h>
Синтаксис
C++
PVOID __RTDynamicCast (
PVOID inptr,
LONG VfDelta,
PVOID SrcType,
PVOID TargetType,
BOOL isReference
) throw(...)
Параметры
inptr
VfDelta
SrcType
TargetType
isReference
Значение true , если аргумент является ссылкой; значение false , если аргумент
является указателем.
Возвращаемое значение
Указатель на соответствующий подобъект в случае успешного выполнения; в
противном случае — NULL .
Исключения
bad_cast() , если входное значение dynamic_cast<> является ссылкой и приведение
завершается неудачей.
Комментарии
Преобразует inptr в объект типа TargetType . Тип операнда inptr должен быть
указателем, если TargetType является указателем, или l-значением, если TargetType
является ссылкой. Параметр TargetType должен быть указателем или ссылкой на
ранее определенный тип класса или указателем на void.
Требования
Подпрограмма Обязательный заголовок
__RTDynamicCast <rtti.h>
__set_app_type
Статья • 03.04.2023
Синтаксис
C++
void __set_app_type (
int at
Параметры
at
Значение Описание
Remarks
Требования
Подпрограмма Обязательный заголовок
__set_app_type internal.h
_set_app_type
Статья • 03.04.2023
Внутренняя функция используется при запуске для того, чтобы сообщить CRT,
является ли приложение консольным приложением или приложением с
графическим интерфейсом.
Синтаксис
C++
_crt_unknown_app,
_crt_console_app,
_crt_gui_app
} _crt_app_type;
_crt_app_type appType
);
Параметры
appType
Значение Описание
Комментарии
Как правило, вызывать эту функцию не требуется. Это часть кода запуска среды
выполнения C, который выполняется до main вызова в вашем приложении.
_set_app_type <process.h>
_setjmp3
Статья • 03.04.2023
Синтаксис
C
int _setjmp3(
int count,
(optional parameters)
);
Параметры
env
count
optional parameters
Возвращаемое значение
Всегда возвращает 0.
Комментарии
Не используйте эту функцию в программе C++. Это встроенная функция, которая
не поддерживает C++. Дополнительные сведения об использовании setjmp см. в
статье Using setjmp/longjmp (Использование setjmp и longjmp).
Требования
setjmp
___setlc_active_func ,
___unguarded_readlc_active_add_func
Статья • 03.04.2023
Синтаксис
C++
int ___setlc_active_func(void);
int * ___unguarded_readlc_active_add_func(void);
Возвращаемое значение
Возвращаемое значение не является значимым.
Комментарии
Хотя внутренние функции ___setlc_active_func CRT и
___unguarded_readlc_active_add_func устарели и больше не используются, они
Требования
Подпрограмма Обязательный заголовок
Синтаксис
C++
void __setusermatherr(
_HANDLE_MATH_ERROR pf
Параметры
pf
Remarks
Требования
Подпрограмма Обязательный заголовок
__setusermatherr matherr.c
Глобальные переменные и
стандартные типы
Статья • 03.04.2023
Глобальные константы
Глобальные переменные
Статья • 03.04.2023
Переменная Описание
_timezoneи
_tzname Вносит корректировку для локального времени; используется в некоторых
функциях даты и времени.
_sys_errlistи
_sys_nerr Хранит коды ошибок и связанные сведения.
_wpgmptr
В зависимости от способа вызова программы среда выполнения
инициализирует эти значения при запуске программы: на полный или
относительный путь к программе, полное имя программы или имя
программы без расширения имени файла.
Глобальные константы
_get_daylight
_get_dstbias
_get_timezone
_get_tzname
perror
strerror
_get_doserrno
_set_doserrno
_get_errno
_set_errno
_dupenv_s, _wdupenv_s
getenv, _wgetenv
getenv_s, _wgetenv_s
_putenv, _wputenv
_putenv_s, _wputenv_s
_get_fmode
_set_fmode
__argc , __argv , __wargv
Статья • 03.04.2023
Синтаксис
C
Remarks
В программе, которая использует функцию main , __argc и __argv
инициализируются при запуске программы с помощью командной строки,
используемой для запуска программы. Командная строка разбирается на
отдельные аргументы, а подстановочные знаки разворачиваются. Число
аргументов назначается функции __argc , строки аргументов выделяются в куче, а
указатель на массив аргументов назначается __argv . В программе, которая
скомпилирована для использования расширенных символов и функции wmain ,
аргументы анализируются и подстановочные знаки разворачиваются как строки
расширенных символов, а указатель на массив строк аргументов назначается
__wargv .
Требования
Глобальная переменная Обязательный заголовок
_daylight _get_daylight
_dstbias _get_dstbias
_timezone _get_timezone
_tzname _get_tzname
Синтаксис
C
Remarks
При вызове _ftime , localtime или _tzset значения _daylight , _dstbias , _timezone
и _tzname определяются, исходя из значения переменной среды TZ . Если вы явно
не задали TZ значение , _tzname[0] и _tzname[1] содержат параметры по
умолчанию "PST" и "PDT" соответственно. Функции обработки времени (_tzset,
_ftimeи localtime) пытаются задать значения _daylight , _dstbias и _timezone путем
запроса операционной системы значения по умолчанию для каждой переменной.
Значения глобальных переменных часовых поясов перечислены в следующей
таблице.
Переменная Значение
_get_daylight
_get_dstbias
_get_timezone
_get_tzname
errno , _doserrno , _sys_errlist и
_sys_nerr
Статья • 03.04.2023
Синтаксис
C
Remarks
Как для errno , так и для _doserrno средой выполнения во время запуска
программы задается значение 0. errno возникает при ошибке в вызове системного
уровня. Поскольку errno хранит значение для последнего вызова, задавшего его,
это значение может быть изменено успешными вызовами. Вызовы библиотеки
времени выполнения, которые задаются errno при ошибке, не очищают errno
успешность. Всегда сбрасывайте errno путем вызова функции _set_errno(0) сразу
после вызова, который мог задать значение этой переменной, и проверяйте его
сразу после вызова.
Требования
Глобальный макрос Обязательный заголовок Необязательный
заголовок
errno Константы
perror, _wperror
_get_doserrno
_set_doserrno
_get_errno
_set_errno
_environ , _wenviron
Статья • 03.04.2023
) Важно!
Синтаксис
C
Remarks
В программе, которая использует функцию main , переменная _environ
инициализируется при запуске программы в соответствии с настройками,
полученными из среды операционной системы. Среда состоит из одной или
нескольких записей следующего вида:
ENVVARNAME =string
U Внимание!
int i, j;
// putenv ("env_var_z=string1")
// putenv("env_var_z=string2")
Поэтому в многобайтовых средах значение " env_var_z " после первого неявного
вызова функции putenv будет равно " string1 ", но это значение будет
перезаписано при втором неявном вызове функции putenv , если для " env_var_z "
будет установлено значение " string2 ". Поэтому после такой последовательности
вызовов среда Юникода (в _wenviron ) и многобайтовая среда (в _environ ) будут
отличаться.
getenv, _wgetenv
getenv_s, _wgetenv_s
_putenv, _wputenv
_putenv_s, _wputenv_s
_fmode
Статья • 03.04.2023
Синтаксис
C
Remarks
По умолчанию параметр _fmode для преобразования в текстовом режиме имеет
значение _O_TEXT . Для двоичного режима используется параметр _O_BINARY .
_get_fmode
_set_fmode
_iob
Статья • 03.04.2023
Синтаксис
C
FILE _iob[_IOB_ENTRIES];
Remarks
_IOB_ENTRIES определяется как 3 в stdio.h .
Синтаксис
C
Remarks
Сведения в _pctype , и используются
внутри,toupper_toupper_toupper_ltowupper_towupper_lisxdigit_isxdigit_liswxdigit_iswx
digit_lisdigit_isdigit_liswdigit_iswdigit_lisspace_isspace_liswspace_iswspace_lislower_islow
er_liswlower_iswlower_lisalnum_isalnum_liswalnum_iswalnum_lisupperiswupper_isupper_
l_iswupper_lispunct_iswpunct_liswpunct_ispunct_liscntrliswcntrl_iscntrl_l_iswcntrl_lisgrap
hiswgraph_isgraph_l_iswgraph_l _wctype _pwctype tolower, , towlower_tolower,
_tolower_lи _towlower_l функции. Вместо обращения к этим глобальным
переменным следует использовать эти функции.
Требования
Не для свободного использования.
__pctype_func
_pgmptr , _wpgmptr
Статья • 03.04.2023
Синтаксис
C
Remarks
Когда программа выполняется из интерпретатора команд (Cmd.exe), _pgmptr
автоматически инициализируется полным путем к исполняемому файлу. Например,
если Hello.exe находится в папке C:\BIN, а C:\BIN находится в пути, _pgmptr при
выполнении задается значение C:\BIN\Hello.exe :
C> hello
Пример
В следующей программе показано использование переменной _pgmptr .
// crt_pgmptr.c
//
#include <stdio.h>
#include <stdlib.h>
_pgmptr); // C4996
Flag Описание
_CRT_DUMP_CLIENT ,
Определение типа для функции обратного вызова, CRTDBG.H
которая будет вызываться в
_CRT_DUMP_CLIENT_M _CrtMemDumpAllObjectsSince.
_CRT_REPORT_HOOK ,
Определение типа для функции обратного вызова, CRTDBG.H
которая будет вызываться в _CrtDbgReport.
_CRT_REPORT_HOOKW ,
Целое число errno_t Используется для параметра или типа возвращаемого STDDEF.H ,
fpos_t ( long fgetpos Используется и fsetpos для записи сведений для STDIO.H
integer структура уникального указания каждой позиции в файле.
__int64 , или в
зависимости от
целевой платформы)
integer )
WCHAR.H
intptr_t ( long integer Хранит указатель (или HANDLE ) на платформах Win32 и STDDEF.H и
или __int64 , в Win64. другие
зависимости от включаемые
целевой платформы) файлы
Тип Описание Объявляется
в
_LDOUBLE ,
Используются для представления значения long double. STDLIB.H
_LONGDOUBLE ,
_LDBL12 (длинное
double или массив char
без знака)
_onexit_t ,
Возвращается ,_onexit_onexit_m . STDLIB.H
Указатель _onexit_m_t
_purecall_handler ,
Определение типа для функции обратного вызова, STDLIB.H
вызываемой при вызове чисто виртуальной функции.
_purecall_handler_m Используется _get_purecall_handlerв ,
_set_purecall_handler. Функция _purecall_handler должна
иметь тип возвращаемого значения "void".
Целое число Тип объекта, который можно изменить как атомарную SIGNAL.H
sig_atomic_t сущность, даже при наличии асинхронных прерываний;
используется с signal.
_wctime64_wctime_wctime32ctime_s, _ctime32_s, ,
_ctime64_s, _wctime_s, , _wctime32_s, _wctime64_s,gmtime , SYS\TIMEB.H
_gmtime32и _gmtime64localtime, _localtime32, .
_localtime64
_gmtime64и _localtime64_time64.
SYS\TIMEB.H
uintptr_t ( long integer Версия unsigned integer или unsigned __int64 intptr_t . STDDEF.H и
или __int64 , в другие
зависимости от включаемые
целевой платформы) файлы
CRTDEFS.H ,
SYS\STAT.H
Целое число wctype_t Может представлять все символы любой кодировки WCHAR.H ,
языка.
CRTDEFS.H
Целое число wint_t Тип объекта данных, который может содержать любой WCHAR.H ,
BUFSIZ
CLOCKS_PER_SEC, CLK_TCK
_CRT_DISABLE_PERFCRIT_LOCKS
Константы среды
EOF, WEOF
errno Константы
EXIT_SUCCESS, EXIT_FAILURE
Константы файлов
FOPEN_MAX, _SYS_OPEN
_FREEENTRY, _USEDENTRY
Константы кучи
_HEAP_MAXREQ
HUGE_VAL, _HUGE
_locking Константы
Математические константы
_MAX_ENV
MB_CUR_MAX
NULL
RAND_MAX
setvbuf Константы
signal Константы
spawn Константы
TMP_MAX, L_tmpnam
_TRUNCATE
TZNAME_MAX
_WAIT_CHILD, _WAIT_GRANDCHILD
WCHAR_MAX
WCHAR_MIN
Глобальные переменные
Time
Длина: 5 6 5
Дата
Длина: 7 4 5
(относительно 1980)
Синтаксис
C
#include <stdio.h>
Remarks
BUFSIZ — обязательный буфер, выделенный пользователем для подпрограммы
setvbuf .
Глобальные константы
CLOCKS_PER_SEC , CLK_TCK
Статья • 03.04.2023
Синтаксис
C
#include <time.h>
Remarks
Время в секундах — значение, возвращаемое функцией clock , разделенное на
CLOCKS_PER_SEC . CLK_TCK эквивалентно, но считается устаревшим.
Глобальные константы
Константы фиксации на диске
Статья • 03.04.2023
Синтаксис
C
#include <stdio.h>
Remarks
Эти константы, используемые корпорацией Майкрософт, определяют, куда
сохраняется связанный с открытым файлом буфер: в буферы операционной
системы или на диск. Режим содержится в строке, указывающей тип доступа на
чтение или запись ("r", "w", "a", "r+", "w+", "a+").
См. также
Потоковый ввод-вывод
_fdopen, _wfdopen
fopen, _wfopen
Глобальные константы
_CRT_DISABLE_PERFCRIT_LOCKS
Статья • 03.04.2023
Синтаксис
C
#define _CRT_DISABLE_PERFCRIT_LOCKS
Remarks
Определение этого символа может улучшить производительность в однопоточных
привязанных к вводу-выводу программах путем принудительного использования
однопоточной модели ввода-вывода во всех операциях ввода-вывода.
Дополнительные сведения см. в статье о производительности многопоточных
библиотек.
#include <limits.h>
7 Примечание
MB_LEN_MAX 5 Максимальное
число байтов для
многобайтового
char
#include <float.h>
Синтаксис
C
#include <stdlib.h>
Remarks
Константа _MAX_ENV определяет длину среды для строк.
Константа Значение
Синтаксис
C
#include <stdio.h>
Remarks
EOF возвращается подпрограммой ввода-вывода при обнаружении конца файла
ungetc, ungetwc
fflush
fclose, _fcloseall
_putch, _putwch
Глобальные константы
errno Константы
Статья • 03.04.2023
Синтаксис
C++
#include <errno.h>
Remarks
Константы errno — это значения, назначенные errno для различных условий
ошибок.
EISDIR Каталог. 21
ENOENT Отсутствует такой файл или каталог. Указанный файл или каталог 2
не существует или не найден. Это сообщение может возникать
всякий раз, когда указанный файл не существует или компонент
пути не указывает существующий каталог.
ENOTDIR Не каталог. 20
Константа Описание Значение
Обязательный заголовок
C
#include <stdlib.h>
Комментарии
Константы и EXIT_FAILURE являются аргументами для exit функций и _exit и
возвращаемыми значениями для atexit функций и _onexit . EXIT_SUCCESS
EXIT_SUCCESS 0
EXIT_FAILURE 1
Синтаксис
C
#include <io.h>
Remarks
Эти константы определяют атрибуты текущего файла или каталога, заданного с
помощью функции.
Константа Описание
_A_HIDDEN Скрытый файл. Такой файл не отображается командой DIR, если не указан
параметр /AH. Возвращает сведения о обычных файлах и файлах с этим
атрибутом. Значение: 0x02
_A_NORMAL Нормальный. Такой файл можно читать или изменять без ограничений.
Значение: 0x00
_A_RDONLY Только для чтения. Невозможно открыть файл для записи, и файл с тем же
именем не удается создать. Значение: 0x01
_A_SYSTEM Системный файл. Такой файл не отображается командой DIR, если не указан
параметр /AS. Значение: 0x04
Глобальные константы
Константы файлов
Статья • 03.04.2023
Синтаксис
C
#include <fcntl.h>
Remarks
Целочисленное выражение, образуемое из одной или нескольких этих констант,
определяет тип разрешенных операций чтения или записи. Он формируется путем
объединения одной или нескольких констант с константой в режиме перевода.
Константа Описание
_O_CREAT Создает и открывает новый файл для записи; Константа не действует, если
файл, указанный в filename файле, существует.
_O_RDONLY Открывает файл только для чтения; Значение , если этот флаг задан и
_O_RDWR _O_WRONLY не может быть задано.
_O_RDWR Открывает файл для чтения и записи; Значение , если этот флаг задан и
_O_RDONLY _O_WRONLY не может быть задано.
_O_WRONLY Открывает файл только для записи; Значение , если этот флаг задан и
_O_RDONLY _O_RDWR не может быть задано.
_sopen, _wsopen
Глобальные константы
Константы разрешений файлов
Статья • 03.04.2023
Синтаксис
C
#include <sys/stat.h>
Remarks
Одна из этих констант обязательна при указании _O_CREAT ( _open , _sopen ).
Константа Значение
При использовании в качестве аргумента pmode для функции _umask эта константа
манифеста задает настройки разрешений следующим образом.
Константа Значение
_sopen, _wsopen
_umask
Стандартные типы
Глобальные константы
Константы доступа для чтения и
записи файлов
Статья • 03.04.2023
Синтаксис
C
#include <stdio.h>
Remarks
Эти константы определяют запрашиваемый для файла тип доступа ("a", "r" или "w").
В типе доступа можно указать как режим преобразования ("b" или "t"), так и режим
фиксации на диск ("c" или "n").
Тип Описание
доступа
"r" Открывает для чтения. Если файл не существует или его не удается найти, вызов
для открытия файла завершается ошибкой.
"w" Открывает пустой файл для записи. Если указанный файл существует, его
содержимое удаляется.
"a" Открывается для записи в конце файла (добавление); сначала создает файл, если
он не существует. Все операции записи выполняются в конце файла. Хотя
указатель на файл можно изменить с помощью fseek или rewind , он всегда
перемещается обратно в конец файла перед выполнением любой операции
записи.
" r+ " Открывает для чтения и записи. Если файл не существует или его не удается
найти, вызов для открытия файла завершается ошибкой.
" w+ " Открывает пустой файл для чтения и записи. Если указанный файл существует, его
содержимое удаляется.
Если задан тип доступа "r+", "w+" или "a+", разрешены чтение и запись (считается,
что файл открыт "для обновления"). Однако при переключении между чтением и
записью должны быть промежуточные операции fflush , fsetpos , fseek или
rewind . Для операции fsetpos или fseek можно задать текущее положение.
fopen, _wfopen
freopen, _wfreopen
_fsopen, _wfsopen
_popen, _wpopen
Глобальные константы
Константы трансляции файлов
Статья • 03.04.2023
Синтаксис
C
#include <stdio.h>
Remarks
Эти константы определяют режим преобразования ("b" или "t"). Режим содержится
в строке, указывающей тип доступа ("r", "w", "a", "r+", "w+", "a+").
7 Примечание
b
Открывает в двоичном (непреобразованном) режиме. Вышеописанные
преобразования отключены.
fopen, _wfopen
freopen, _wfreopen
_fsopen, _wfsopen
Глобальные константы
FILENAME_MAX
Статья • 03.04.2023
Синтаксис
C
#include <stdio.h>
Глобальные константы
FOPEN_MAX , _SYS_OPEN
Статья • 03.04.2023
Синтаксис
C
#include <stdio.h>
Remarks
FOPEN_MAX и _SYS_OPEN максимальное количество файлов, которые могут быть
Синтаксис
C
#include <malloc.h>
Remarks
Эти константы представляют значения, назначенные _heapwalk подпрограммам
_useflag элементу _HEAPINFO структуры. Они показывают состояние записи кучи.
Глобальные константы
fseek , _lseek константы
Статья • 03.04.2023
Синтаксис
C
#include <stdio.h>
Remarks
Аргумент origin указывает начальную позицию и может быть одной из следующих
констант манифеста:
Константа Значение
_lseek, _lseeki64
Глобальные константы
Константы кучи
Статья • 03.04.2023
Синтаксис
C
#include <malloc.h>
Remarks
Эти константы предоставляют возвращаемое значение, отображающее состояние
кучи.
Константа Значение
_heapwalk
Глобальные константы
_HEAP_MAXREQ
Статья • 25.10.2022
Синтаксис
#include <malloc.h>
Remarks
Максимальный размер пользовательского запроса на выделение памяти, который
может быть удовлетворен.
calloc
Глобальные константы
HUGE_VAL , _HUGE
Статья • 03.04.2023
Синтаксис
C
#include <math.h>
Remarks
HUGE_VAL является максимальным представимым значением double. Это значение
Синтаксис
C
#include <locale.h>
Remarks
Категории языковых стандартов представляют собой константы манифеста, с
помощью которых подпрограммы локализации указывают, какую информацию о
языковом стандарте программы они будут использовать. Языковой стандарт
определяет расположение (или страну, или регион), для которого можно настроить
определенные аспекты программы. Например, языковой стандарт влияет на
форматирование дат и отображение денежных значений.
setlocale, _wsetlocale
Функции strcoll
Глобальные константы
_locking Константы
Статья • 03.04.2023
Синтаксис
C
#include <sys/locking.h>
Remarks
Аргумент mode в вызове _locking функции указывает выполняемую операцию
блокировки.
Значение Описание
Глобальные константы
Математические константы
Статья • 03.04.2023
Синтаксис
C++
#include <cmath>
#include <math.h>
Remarks
Определены символические обозначения для следующих величин:
M_E й 2.71828182845904523536
M_PI pi 3.14159265358979323846
Синтаксис
C
#include <math.h>
Remarks
Математические подпрограммы библиотеки времени выполнения могут
генерировать константы математических ошибок.
Константа Значение
Глобальные константы
_MAX_ENV
Статья • 03.04.2023
Синтаксис
C
#include <stdio.h>
Глобальные константы
MB_CUR_MAX
Статья • 03.04.2023
Синтаксис
C++
#include <stdlib.h>
Remarks
Контекст: функции преобразования для расширенных и многобайтовых символов
ANSI
См. также
_mbclen, mblen, _mblen_l
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
Стандартные типы
wcstombs, _wcstombs_l
wctomb, _wctomb_l
Глобальные константы
NULL (CRT)
Статья • 03.04.2023
Синтаксис
C++
#include <stdlib.h>
Remarks
Эти константы определяют максимальную длину пути и отдельных полей в пути.
Константа Значение
7 Примечание
Синтаксис
C
#include <stdlib.h>
Remarks
Константа RAND_MAX является максимальным значением, которое может
возвращаться функцией rand . RAND_MAX определяется как значение 0x7fff.
Глобальные константы
setvbuf Константы
Статья • 03.04.2023
Синтаксис
C
#include <stdio.h>
Remarks
Эти константы представляют тип буфера для setvbuf .
Константа Значение
Глобальные константы
Совместное использование констант
Статья • 03.04.2023
Синтаксис
C
#include <share.h>
Remarks
Аргумент shflag определяет режим общего доступа, состоящий из одной или
нескольких констант манифеста. Эти константы можно объединить с oflag
аргументами (см. константы файла).
Константа Значение
_fsopen, _wfsopen
Глобальные константы
signal Константы
Статья • 03.04.2023
Синтаксис
C
#include <signal.h>
Remarks
Аргумент sig должен представлять собой одну из констант манифеста,
определенных в SIGNAL.H (перечислены ниже).
Константа Описание
raise
Глобальные константы
signal константы действий
Статья • 03.04.2023
Синтаксис
C
#include <signal.h>
Remarks
Аргумент func должен содержать адрес функции или одну из констант манифеста,
определенных в SIGNAL.H (перечислены ниже).
Константа Описание
SIG_IGN Игнорирует сигнал прерывания. Это значение нельзя использовать для SIGFPE ,
так как в этом случае состояние процесса с плавающей запятой остается
неопределенным.
Глобальные константы
spawn Константы
Статья • 03.04.2023
Синтаксис
C
#include <process.h>
Remarks
Аргумент mode определяет действие, предпринимаемое процессом перед
операцией инициализации и в течение нее. Для mode возможны следующие
значения:
Константа Значение
Глобальные константы
_stat Константы полей структуры
st_mode
Статья • 03.04.2023
Синтаксис
C
#include <sys/stat.h>
Remarks
Эти константы используются для указания типа файла в st_mode поле _stat
структуры.
Константа Значение
_S_IFDIR Каталог
_S_IFREG Регулярно
Стандартные типы
Глобальные константы
stdin , stdout , stderr
Статья • 03.04.2023
Синтаксис
C
FILE *stdin;
FILE *stdout;
FILE *stderr;
#include <stdio.h>
Remarks
Глобальные stdin указатели констант , stdout и stderr являются стандартными
потоками для ввода, вывода и вывода ошибок.
Указатель STREAM
Глобальные константы
TMP_MAX , L_tmpnam
Статья • 03.04.2023
Синтаксис
C
#include <stdio.h>
Remarks
TMP_MAX — максимальное число уникальных имен файлов, которые функция tmpnam
Синтаксис
C
#include <fcntl.h>
Remarks
Константы _O_BINARY манифеста , _O_TEXT , _O_WTEXT , _O_U16TEXT и _O_U8TEXT
определяют режим преобразования для файлов ( _open и _sopen ) или режим
преобразования для потоков ( _setmode ).
Допустимые значения:
Значение Описание
_pipe
_sopen, _wsopen
_setmode
Глобальные константы
_TRUNCATE
Статья • 03.04.2023
Синтаксис
C
#include <stdlib.h>
Remarks
_TRUNCATE разрешает усечение, если передается в качестве параметра count этим
функциям:
mbstowcs_s, _mbstowcs_s_l
mbsrtowcs_s
wcstombs_s, _wcstombs_s_l
wcsrtombs_s
Если целевой буфер слишком мал для хранения всей строки, нормальное
поведение этих функций заключается в том, чтобы рассматривать его как ошибку
(см. раздел "Проверка параметров"). Однако, если разрешено усечение строки
путем передачи _TRUNCATE , эти функции копируют столько символов, сколько
возможно, завершая буфер нулевым символом, и успешно завершаются.
wcstombs_s, _wcstombs_s_l
mbstowcs_s, _mbstowcs_s_l
Пример
C
// crt_truncate.c
#include <stdlib.h>
#include <errno.h>
int main()
char dst[5];
if ( err == STRUNCATE )
Output
truncation occurred!
'1234'
Синтаксис
C
#include <limits.h>
Глобальные константы
_get_tzname
_WAIT_CHILD , _WAIT_GRANDCHILD
Статья • 03.04.2023
Синтаксис
C
#include <process.h>
Remarks
Функция _cwait может использоваться любым процессом для ожидания любого
другого процесса (если известен его идентификатор). Аргумент действия может
принимать одно из следующих значений:
Константа Значение
Глобальные константы
WCHAR_MAX
Статья • 03.04.2023
Синтаксис
C
#include <wchar.h>
Синтаксис
C
#include <wchar.h>
Типы данных
Сопоставления подпрограмм
текст
_MBCS не
defined defined
имя типа
данных определен)
Сопоставления подпрограмм
Сопоставления подпрограмм
locale :: "locale-name"
| "language[_country-region[. code-page]"
| "C"
| ""
| NULL
несогласованности поведения.
LC-ALL-specifier :: locale
_wsetlocale(LC_ALL, L"de-DE");
_wsetlocale(LC_ALL, L"LC_MONETARY=en-GB;LC_TIME=es-ES");
Поддержка UTF-8
Поддержка UTF-8 может быть включена с помощью кодовой страницы UTF-8 в
строке языкового стандарта. Дополнительные сведения см. в разделе поддержки
setlocaleUTF-8 .
_get_current_locale
setlocale, _wsetlocale
_create_locale, _wcreate_locale
Строки языка
american en-US
american-english en-US
australian en-AU
belgian nl-BE
canadian en-CA
chh zh-HK
chi zh-SG
chinese zh
chinese-hongkong zh-HK
chinese-simplified zh-CN
chinese-singapore zh-SG
chinese-traditional zh-TW
dutch-belgian nl-BE
Строка языка Соответствующее название языкового стандарта
english-american en-US
english-aus en-AU
english-belize en-BZ
english-can en-CA
english-caribbean en-029
english-ire en-IE
english-jamaica en-JM
english-nz en-NZ
english-uk en-GB
english-us en-US
english-usa en-US
french-belgian fr-BE
french-canadian fr-CA
french-luxembourg fr-LU
french-swiss fr-CH
german-austrian de-AT
german-lichtenstein de-LI
german-luxembourg de-LU
german-swiss de-CH
irish-english en-IE
italian-swiss it-CH
norwegian no
norwegian-bokmal nb-NO
Строка языка Соответствующее название языкового стандарта
norwegian-nynorsk nn-NO
portuguese-brazilian pt-BR
spanish-argentina es-AR
spanish-bolivia es-BO
spanish-chile es-CL
spanish-colombia es-CO
spanish-ecuador es-EC
spanish-guatemala es-GT
spanish-honduras es-HN
spanish-mexican es-MX
spanish-modern es-ES
spanish-nicaragua es-NI
spanish-panama es-PA
spanish-paraguay es-PY
spanish-peru es-PE
spanish-uruguay es-UY
spanish-venezuela es-VE
swedish-finland sv-FI
swiss de-CH
uk en-GB
us en-US
Строка языка Соответствующее название языкового стандарта
usa en-US
nz NZL en-NZ
uk GBR en-GB
us USA en-US
Строки языка
setlocale, _wsetlocale
_create_locale, _wcreate_locale
Общие сведения о семействе
функций
Статья • 03.04.2023
Функции _ismbb
Функции _ismbc
Функции для проверки многобайтового символа на наличие альфа-символа,
пустого символа, печатного символа и т. д.
Функции strcoll
Функции vprintf
_execl, _wexecl
_execv, _wexecv
_execle, _wexecle
_execve, _wexecve
_execlp, _wexeclp
_execvp, _wexecvp
_execlpe, _wexeclpe
_execvpe, _wexecvpe
_exec Описание
суффикс
функции
Комментарии
Каждая функция _exec загружает и выполняет новый процесс. Все _exec функции
используют одну и ту же функцию операционной системы (CreateProcess). Функции
_exec автоматически обрабатывают аргументы строки многобайтовых символов
соответствующим образом, распознавая последовательности многобайтовых
символов согласно многобайтовой кодовой странице, используемой в данный
момент. Функции _wexec — это версии функций _exec с расширенными
символами. Функции _wexec ведут себя идентично своим _exec семейным
аналогам, за исключением того, что они не обрабатывают многобайтовые строки
символов.
Параметр cmdname указывает файл, который будет выполняться как новый процесс.
Он может указывать полный путь (от корневого каталога), частичный путь (от
текущего рабочего каталога) или имя файла. Если cmdname не имеет расширения
имени файла или не заканчивается точкой (.), _exec функция выполняет поиск
именованного файла. Если поиск не дает результатов, функция пытается найти то
же основное имя с расширением COM, а затем с расширениями EXE, BAT и CMD.
Если параметр cmdname включает расширение файла, для поиска используется
только это расширение. Если cmdname заканчивается точкой, функция _exec
выполняет поиск cmdname без расширения файла. _execlp , _execlpe , _execvp и
_execvpe выполняют поиск cmdname (используя те же процедуры) в каталогах,
указанных переменной среды PATH . Если cmdname содержит описатель диска или
косую черту (то есть относительный путь), _exec вызов выполняет поиск только
указанного файла; путь не выполняется.
7 Примечание
) Важно!
_execvp и _execvpe ). По крайней мере один параметр , arg0 должен быть передан в
новый процесс; этот параметр относится argv[0] к новому процессу. Обычно этот
параметр является копией cmdname (Другое значение не приводит к ошибке.)
Пример
C
// crt_args.c
#include <stdio.h>
int count;
return;
// crt_exec.c
//
// Although CRT_EXEC.C can exec any program, you can verify how
// functions.
#include <stdio.h>
#include <conio.h>
#include <process.h>
"the EXEC=functions",
NULL
};
char *args[4];
int ch;
if( ac != 3 ){
return;
args[0] = av[1];
args[1] = "exec??";
args[2] = "two";
args[3] = NULL;
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
break;
case 8:
break;
default:
break;
exit( 0 );
Требования
Заголовка: process.h
См. также раздел
Управление процессами и средой
abort
atexit
_onexit, _onexit_m
system, _wsystem
Функции поиска имени файла
Статья • 03.04.2023
_findnext, _wfindnext
_findfirst, _wfindfirst
_findclose
Комментарии
Функция _findfirst предоставляет сведения о первом экземпляре имени файла,
соответствующем файлу, указанному в аргументе filespec . В filespec можно
использовать любые комбинации подстановочных знаков, которые
поддерживаются операционной системой.
unsigned attrib
Атрибут файла.
time_t time_create
Время создания файла ( -1L для файловых систем FAT). Это время хранится в
формате UTC. Для преобразования в местное время используйте функцию
localtime_s.
time_t time_access
Время последнего доступа к файлу ( -1L для файловых систем FAT). Это время
хранится в формате UTC. Для преобразования в местное время используйте
функцию localtime_s .
time_t time_write
Время последней записи в файл. Это время хранится в формате UTC. Для
преобразования в местное время используйте функцию localtime_s .
_fsize_t size
char name [ _MAX_PATH ] NULL — имя совпадающего файла или каталога без пути.
_A_ARCH
_A_HIDDEN
_A_NORMAL
_A_RDONLY
Только для чтения. Невозможно открыть файл для записи и создать файл с таким
же именем. Значение: 0x01 .
_A_SUBDIR
_A_SYSTEM
Пример
C
// crt_find.c
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <time.h>
intptr_t hFile;
else
printf( "RDO HID SYS ARC FILE DATE %25c SIZE\n", ' ' );
printf( "--- --- --- --- ---- ---- %25c ----\n", ' ' );
do {
char buffer[30];
_findclose( hFile );
Output
Listing of .c files
%[flags][width][.precision][size]type
) Важно!
*/
7 Примечание
В Visual Studio 2015 printf семейство функций и scanf было объявлено как
inline и перемещено в заголовки <stdio.h> и <conio.h> . Если вы переносите
более старый код, вы можете увидеть LNK2019 в связи с этими функциями.
Дополнительные сведения см. в статье Журнал изменений Visual C++ с 2003
по 2015.
7 Примечание
Для майкрософт:
x Целое число Шестнадцатеричное целое число без знака; использует " abcdef ".
X Целое число Шестнадцатеричное целое число без знака; использует " ABCDEF ".
Символ Аргумент Формат вывода
типа
Infinity inf
Любая из этих строк может иметь префикс со знаком . Если символ описателя
преобразования type с плавающей запятой является прописной буквой, выходные
данные форматируются также прописными буквами. Например, если
спецификатором формата является %F вместо %f , бесконечность форматируется
как INF вместо inf . Функции scanf также могут анализировать эти строки, поэтому
эти значения могут совершать круговой путь через функции printf и scanf .
Неопределенное (то же, что и не число без вызова Цифра .#IND случайные
исключения) цифры
7 Примечание
7 Примечание
) Важно!
%n Поскольку формат по своей сути небезопасный, он отключен по
Директивы флагов
Первое необязательное поле в спецификации преобразования содержит
директивы флага. Это поле содержит ноль или более символов флага, которые
указывают обоснование вывода и контрольные выходные данные знаков,
пробелов, начальных нулей, десятичных запятых, а также восьмеричных и
шестнадцатеричных префиксов. В спецификации преобразования может быть
указано несколько директив флагов, и символы флагов могут размещаться в любом
порядке.
Символы флагов
Спецификация ширины
В спецификации преобразования необязательное поле спецификации ширины
отображается после любых символов флага. Аргумент width представляет собой
неотрицательное десятичное целое число, определяющее минимальное
количество выходных символов. Если количество символов в выходном значении
меньше заданной ширины, к значениям слева или справа (в зависимости от того,
определен ли флаг выравнивания по левому краю ( - )) добавляются пробелы, в
количестве, необходимом для достижения минимальной ширины. Если width
имеет префикс 0, начальные нули добавляются к преобразованиям целочисленных
или с плавающей запятой до достижения минимальной ширины, за исключением
случаев, когда преобразование равно бесконечности или NaN .
Спецификация точности
В спецификации преобразования третье необязательное поле является
спецификацией точности. Он состоит из точки ( . ), за которой следует
неотрицательное десятичное целое число, которое в зависимости от типа
преобразования определяет количество строковых символов, количество
десятичных знаков или количество значимых цифр, которые должны быть
выведены.
char
hh d , i , o , u , x или X
unsigned char
short int
h d , i , o , u , x или X
short unsigned int
__int32
I32 d , i , o , u , x или X
unsigned __int32
__int64
I64 d , i , o , u , x или X
unsigned __int64
Чтобы указать Используемый префикс Со спецификатором типа
intmax_t
j или I64 d , i , o , u , x или X
uintmax_t
long int
l (строчная L) d , i , o , u , x или X
long unsigned int
7 Примечание
Каждое поле спецификации формата представляет собой один символ или число,
указывающее на определенный параметр формата. Символ type , который
указывается после последнего необязательного поля формата, определяет способ
интерпретации поля ввода: как символ, как строка или как число.
isleadbyte, _isleadbyte_l
Комментарии
Эти подпрограммы проверяют символы на соответствие заданным условиям.
U Внимание!
isalnum
isalpha
__isascii
isblank
iscntrl
__iscsym
__iscsymf
isdigit
isgraph
islower
ispunct
Знак препинания.
isspace
isupper
isxdigit
iswalnum
iswalpha
iswascii
iswblank
iswcntrl
__iswcsym
Любой расширенный символ, для которого функция isalnum имеет значение true,
или символ "_".
__iswcsymf
Любой расширенный символ, для которого функция iswalpha имеет значение true,
или символ "_".
iswctype
_ALPHA iswalpha(c)
_BLANK iswblank(c)
_CONTROL iswcntrl(c)
_DIGIT iswdigit(c)
_LOWER iswlower(c)
_PUNCT iswpunct(c)
_BLANK iswblank(c)
_SPACE iswspace(c)
_UPPER iswupper(c)
_HEX iswxdigit(c)
iswdigit
iswgraph
iswprint
iswpunct
iswspace
iswupper
iswxdigit
Пример
C
// crt_isfam.c
*/
#include <stdio.h>
#include <ctype.h>
int ch;
printf( ".\n" );
Выходные данные
Output
00 AS C .
01 AS C .
02 AS C .
03 AS C .
04 AS C .
05 AS C .
06 AS C .
07 AS C .
08 AS C .
09 AS C S .
0a AS C S .
0b AS C S .
0c AS C S .
0d AS C S .
0e AS C .
0f AS C .
10 AS C .
11 AS C .
12 AS C .
13 AS C .
14 AS C .
15 AS C .
16 AS C .
17 AS C .
18 AS C .
19 AS C .
1a AS C .
1b AS C .
1c AS C .
1d AS C .
1e AS C .
1f AS C .
20 AS S PR .
21 ! AS G PU PR .
22 " AS G PU PR .
23 # AS G PU PR .
24 $ AS G PU PR .
25 % AS G PU PR .
26 & AS G PU PR .
27 ' AS G PU PR .
28 ( AS G PU PR .
29 ) AS G PU PR .
2a * AS G PU PR .
2b + AS G PU PR .
2c , AS G PU PR .
2d - AS G PU PR .
2e . AS G PU PR .
2f / AS G PU PR .
30 0 AN AS CS D G PR X.
31 1 AN AS CS D G PR X.
32 2 AN AS CS D G PR X.
33 3 AN AS CS D G PR X.
34 4 AN AS CS D G PR X.
35 5 AN AS CS D G PR X.
36 6 AN AS CS D G PR X.
37 7 AN AS CS D G PR X.
38 8 AN AS CS D G PR X.
39 9 AN AS CS D G PR X.
3a : AS G PU PR .
3b ; AS G PU PR .
3c < AS G PU PR .
3d = AS G PU PR .
3e > AS G PU PR .
3f ? AS G PU PR .
40 @ AS G PU PR .
41 A AN A AS CS CSF G PR U X.
42 B AN A AS CS CSF G PR U X.
43 C AN A AS CS CSF G PR U X.
44 D AN A AS CS CSF G PR U X.
45 E AN A AS CS CSF G PR U X.
46 F AN A AS CS CSF G PR U X.
47 G AN A AS CS CSF G PR U .
48 H AN A AS CS CSF G PR U .
49 I AN A AS CS CSF G PR U .
4a J AN A AS CS CSF G PR U .
4b K AN A AS CS CSF G PR U .
4c L AN A AS CS CSF G PR U .
4d M AN A AS CS CSF G PR U .
4e N AN A AS CS CSF G PR U .
4f O AN A AS CS CSF G PR U .
50 P AN A AS CS CSF G PR U .
51 Q AN A AS CS CSF G PR U .
52 R AN A AS CS CSF G PR U .
53 S AN A AS CS CSF G PR U .
54 T AN A AS CS CSF G PR U .
55 U AN A AS CS CSF G PR U .
56 V AN A AS CS CSF G PR U .
57 W AN A AS CS CSF G PR U .
58 X AN A AS CS CSF G PR U .
59 Y AN A AS CS CSF G PR U .
5a Z AN A AS CS CSF G PR U .
5b [ AS G PU PR .
5c \ AS G PU PR .
5d ] AS G PU PR .
5e ^ AS G PU PR .
5f _ AS CS CSF G PU PR .
60 ` AS G PU PR .
61 a AN A AS CS CSF G L PR X.
62 b AN A AS CS CSF G L PR X.
63 c AN A AS CS CSF G L PR X.
64 d AN A AS CS CSF G L PR X.
65 e AN A AS CS CSF G L PR X.
66 f AN A AS CS CSF G L PR X.
67 g AN A AS CS CSF G L PR .
68 h AN A AS CS CSF G L PR .
69 i AN A AS CS CSF G L PR .
6a j AN A AS CS CSF G L PR .
6b k AN A AS CS CSF G L PR .
6c l AN A AS CS CSF G L PR .
6d m AN A AS CS CSF G L PR .
6e n AN A AS CS CSF G L PR .
6f o AN A AS CS CSF G L PR .
70 p AN A AS CS CSF G L PR .
71 q AN A AS CS CSF G L PR .
72 r AN A AS CS CSF G L PR .
73 s AN A AS CS CSF G L PR .
74 t AN A AS CS CSF G L PR .
75 u AN A AS CS CSF G L PR .
76 v AN A AS CS CSF G L PR .
77 w AN A AS CS CSF G L PR .
78 x AN A AS CS CSF G L PR .
79 y AN A AS CS CSF G L PR .
7a z AN A AS CS CSF G L PR .
7b { AS G PU PR .
7c | AS G PU PR .
7d } AS G PU PR .
7e ~ AS G PU PR .
7f AS C .
См. также
Классификация символов
Локаль
setlocale, _wsetlocale
Функции to
_ismbb Процедуры
Статья • 03.04.2023
_ismbbalnum, _ismbbalnum_l
_ismbbalpha, _ismbbalpha_l
_ismbbblank, _ismbbblank_l
_ismbbgraph, _ismbbgraph_l
_ismbbkalnum, _ismbbkalnum_l
_ismbbkana, _ismbbkana_l
_ismbbkprint, _ismbbkprint_l
_ismbbkpunct, _ismbbkpunct_l
_ismbblead, _ismbblead_l
_ismbbprint, _ismbbprint_l
_ismbbpunct, _ismbbpunct_l
_ismbbtrail, _ismbbtrail_l\
Комментарии
Каждая из подпрограмм семейства _ismbb проверяет заданное целочисленное
значение c на выполнение определенного условия. Результат проверки зависит от
действующей многобайтовой кодовой страницы. По умолчанию в качестве
многобайтовой кодовая страницы установлена кодовая страница ANSI, полученная
от операционной системы при запуске программы. Можно использовать для
_getmbcp запроса многобайтовой кодовой страницы, которая используется, или
_setmbcp для ее изменения.
_ismbbblank isblank(c)
текст пунктуация;
_ismbbalnum — x x — x x —
_ismbbalpha — — x — x x —
_ismbbblank x — — — — — —
Подпрограмма _BLANK _DIGIT LOWER _PUNCT UPPER Не ASCII
Не ASCII
текст пунктуация;
_ismbbgraph — x x x x x x
_ismbbkalnum — — — — — x —
_ismbbkprint — — — — — x x
_ismbbkpunct — — — — — — x
_ismbbprint x x x x x x x
_ismbbpunct — — — x — — x
_mbbtombc, _mbbtombc_l
_mbctombb, _mbctombb_l
_ismbc Процедуры
Статья • 03.04.2023
Комментарии
Результат тестирования каждой _ismbc подпрограммы зависит от используемой
многобайтовой кодовой страницы. Многобайтовые кодовые страницы содержат
однобайтовые буквенные символы. По умолчанию в качестве многобайтовой
кодовой страницы установлена стандартная системная кодовая страница ANSI,
полученная от операционной системы при запуске программы. Вы можете
запросить или изменить многобайтовую кодовую страницу, используемую с
_getmbcp или _setmbcpсоответственно.
_ismbb Процедуры
operator new (CRT)
Статья • 03.04.2023
Индексирование параметров
Если позиционное форматирование отсутствует, поведение позиционных функций
по умолчанию совпадает с поведением непозиционных. Позиционный параметр
для форматирования задается символами %n$ в начале описателя формата, где
n — это позиция форматируемого параметра в списке параметров. Первый
Output
November 10
Output
10 November
Output
10 times 10 is 100
Ширина и точность
С помощью *n$ можно указать позиционный параметр в качестве описателя
ширины или точности, где n обозначает позицию нужного параметра в списке
параметров. Позиция значения ширины или точности должна отображаться сразу
после символа *. Например, примененная к объекту директива
_printf_p("%1$*2$s","Hello", 10);
или
Пример
C
// positional_args.c
#include <stdio.h>
int main()
int i = 1,
j = 2,
k = 3;
double x = 0.1,
y = 2.22,
z = 333.3333;
*s2 = "def",
*s3 = "ghi";
Output
1 2 3
3 1 2
1 2 1
C
char string1[11], string2[9];
Поле width
Поле width является положительным десятичным целым числом, которое
управляет максимальным числом символов, считываемых для этого поля. Не более
чем width символы преобразуются и хранятся в соответствующих
argument символах. width Меньше символов может быть прочитано, если символ
char str[21];
width Если поле не используется, scanf_s пытается прочитать весь токен в строку.
Если указанный размер недостаточно велик для хранения всего токена, ничего не
записывается в целевую строку. width Если задано поле, первые width символы в
маркере записываются в целевую строку вместе с признаком конца NULL.
Префикс размера
Необязательные префиксы h , , hh , I64 l ll и L указывают размер argument
(длинный или короткий, однобайтовый или широкий символ в зависимости от
изменяемого символа типа). Эти символы спецификации формата используются с
символами типа в функциях scanf и wscanf для определения интерпретации
аргументов, как показано в следующей таблице. Префикс I64 типа является
расширением Майкрософт и несовместим со стандартом C. Символы типа и их
значения описаны в таблице "Type Characters for scanf functions" (Символы типов
для функций scanf) в scanf символах поля типа.
7 Примечание
double l e , E , f , g или G
char hh d , i , o , x или X
Чтобы указать Используемый Со спецификатором
префикс типа
unsigned char hh u
_spawnl, _wspawnl
_spawnle, _wspawnle
_spawnlp, _wspawnlp
_spawnlpe, _wspawnlpe
_spawnv, _wspawnv
_spawnve, _wspawnve
_spawnvp, _wspawnvp
_spawnvpe, _wspawnvpe
Письмо Variant
Комментарии
Каждая из функций _spawn создает и выполняет новый процесс. Такие функции
автоматически обрабатывают аргументы в виде многобайтовых строк требуемым
образом, распознавая многобайтовые последовательности символов в
соответствии с текущей многобайтовой кодовой страницей. Функции _wspawn
являются версиями расширенных символов _spawn функций; они не обрабатывают
многобайтовые строки. В противном случае функции _wspawn ведут себя точно так
же, как аналогичные функции _spawn .
Значение Описание
Если cmdname содержит описатель диска или какие-либо косые черты (то есть, если
это относительный путь), _spawn вызов выполняет поиск только по указанному
файлу; поиск пути не выполняется.
7 Примечание
7 Примечание
) Важно!
Пример
C
// crt_spawn.c
//
#include <stdio.h>
#include <process.h>
char *my_env[] =
"_SPAWNLE=and",
"_SPAWNLPE=and",
"_SPAWNVE=and",
"_SPAWNVPE=functions",
NULL
};
char *args[4];
args[0] = "child";
args[1] = "spawn??";
args[2] = "two";
args[3] = NULL;
if (argc <= 2)
exit( 1 );
case '1':
break;
case '2':
NULL, my_env );
break;
case '3':
break;
case '4':
NULL, my_env );
break;
case '5':
break;
case '6':
break;
case '7':
break;
case '8':
break;
default:
exit( 1 );
Output
from SPAWN!
abort
atexit
_flushall
_getmbcp
_onexit, _onexit_m
_setmbcp
system, _wsystem
Функции strcoll
Статья • 03.04.2023
Функции strcoll
Комментарии
Версии этих функций для однобайтовых символов (SBCS) ( strcoll , stricoll ,
_strncoll и _strnicoll ) сравнивают string1 и string2 согласно параметру
категории LC_COLLATE текущего языкового стандарта. Эти функции отличаются от
соответствующих функций strcmp тем, что функции strcoll используют сведения
кодовой страницы языкового стандарта, предоставляющие последовательности
сопоставления. Для сравнения строк в языковых стандартах, где порядок символов
в наборе отличается от лексикографического порядка, функции strcoll
необходимо использовать вместо соответствующих функций strcmp .
Дополнительные сведения о методе LC_COLLATE см. в разделе setlocale.
Для некоторых кодовых страниц и соответствующих наборов символов порядок
символов в наборе может отличаться от лексикографического порядка символов. В
языковом стандарте "C" это не так: порядок символов в наборе символов ASCII
совпадает с лексографическим порядком символов. Однако, в некоторых
европейских языковых стандартах, например, символ "a" (значение 0x61)
предшествует символу "ä" (значение 0xE4) в кодировке, но "ä" предшествует
символу "a" лексикографически. Чтобы выполнить лексикографическое сравнение
в таком случае, используйте strcoll вместо strcmp . Также можно использовать
функцию strxfrm для исходных строк, а затем использовать функцию strcmp для
результирующих строк.
Обработка строк
localeconv
setlocale, _wsetlocale
Комментарии
Каждая функция в семействе strto* преобразует строку, завершаемую значением
NULL, в числовое значение. Доступные функции перечислены в следующей
таблице.
Функция Описание
Локаль
__toascii
Комментарии
Ниже to приведены функции и преобразования макросов.
Пример
C
// crt_toupper.c
*/
#include <ctype.h>
#include <string.h>
char *p;
if( islower( *p ) )
putchar( _toupper( *p ) );
putchar( _tolower( *p ) );
else
putchar( *p );
Output
Локаль
_vcprintf, _vcwprintf
vfprintf, vfwprintf
vprintf, vwprintf
Комментарии
Функции vprintf выполняют те же действия, что и перечисленные в следующей
таблице аналоги. Но при этом каждая функция vprintf принимает указатель на
список аргументов, а их аналоги — сам список аргументов.
Эти функции форматируют данные для вывода в назначение, как описано ниже.
таблице выше.
buffer .
) Важно!
is_wctype iswctype
_unloaddll FreeLibrary
_getdllprocaddr GetProcAddress
_seterrormode SetErrorMode
_beep Beep
_sleep Sleep
_getsystime GetLocalTime
_setsystime SetLocalTime
_get_output_format Нет
_heapadd Нет
_heapset Нет
Устаревшая функция Альтернатива
_set_output_format Нет
_unlock
_cgets , _cgetws
Статья • 03.04.2023
) Важно!
Эти функции устарели. Начиная с Visual Studio 2015 они недоступны в CRT.
Безопасные версии этих функций, _cgets_s и _cgetws_s, по-прежнему доступны.
Сведения об этих альтернативных функциях см. в разделе_cgets_s , _cgetws_s.
) Важно!
Синтаксис
C
char *_cgets(
char *buffer
);
wchar_t *_cgetws(
wchar_t *buffer
);
char *_cgets(
char (&buffer)[size]
); // C++ only
wchar_t *_cgetws(
wchar_t (&buffer)[size]
); // C++ only
Параметры
buffer
Комментарии
Эти функции считывают строку символов из консоли и хранят строку и ее длину в
расположении, указанном buffer . Параметр buffer должен указывать на массив
символов. Первый элемент массива, buffer[0] , должен содержать максимальную
длину (в символах) строки для считывания. Массив должен содержать достаточно
элементов для хранения строки, завершающий символ NULL (\0) и 2
дополнительных байта. Функция читает символы до считывания сочетания
возврата каретки и перевода строки (CR-LF) или до считывания указанного числа
символов. Строка сохраняется начиная с buffer[2] . Когда функция считывает CR-
LF, они сохраняет нуль-символ ("\0"). Затем функция сохраняет фактическую длину
строки во втором элементе массива, buffer[1] .
Так как все клавиши редактирования активны при вызове _cgets или _cgetws в
окне консоли, нажатие клавиши F3 повторяет последнюю введенную запись.
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые
и безопасные аналоги этих функций. Дополнительные сведения см. в разделе
Безопасные перегрузки шаблонов.
Требования
Подпрограмма Обязательный заголовок
_cgets <conio.h>
Пример
C
// crt_cgets.c
#include <conio.h>
#include <stdio.h>
#include <errno.h>
char *result;
if (!result)
else
buffer[1], result );
Output
Line Length = 16
_getch, _getwch
_get_output_format
Статья • 03.04.2023
) Важно!
Эта функция является устаревшей. Начиная с Visual Studio 2015 она недоступна
в CRT.
Синтаксис
C
Возвращаемое значение
Текущее значение флага формата вывода.
Комментарии
Флаг формата вывода задает особенности форматированного ввода-вывода. Флаг
имеет два возможных значения: 0 и _TWO_DIGIT_EXPONENT . Если _TWO_DIGIT_EXPONENT
задано значение, число с плавающей запятой выводится только с двумя цифрами в
экспоненте, если только третья цифра не требуется для размера экспонента. Если
флаг равен нулю, то числа с плавающей запятой выводятся с тремя цифрами в
показателе степени; при необходимости значение дополняется до трех цифр
нулями.
Требования
Подпрограмма Обязательный заголовок
_get_output_format <stdio.h>
Дополнительные сведения о совместимости см. в разделе Compatibility во
введении.
_set_output_format
gets , _getws
Статья • 03.04.2023
) Важно!
Эти функции устарели. Начиная с Visual Studio 2015 они недоступны в CRT.
Безопасные версии этих функций и gets_s _getws_s по-прежнему доступны.
Сведения об этих альтернативных функциях см. в разделеgets_s . _getws_s
) Важно!
Синтаксис
C
char *gets(
char *buffer
);
wchar_t *_getws(
wchar_t *buffer
);
char *gets(
char (&buffer)[size]
); // C++ only
wchar_t *_getws(
wchar_t (&buffer)[size]
); // C++ only
Параметры
buffer
Комментарии
Функция gets считывает строку из стандартного потока ввода stdin и сохраняет ее
в буфере buffer . Строка состоит из всех символов до первого символа новой
строки ("\n"). Затем перед возвратом строки функция gets заменяет символ новой
строки нуль-символом ("\0"). Напротив, функция fgets сохраняет символ новой
строки. _getws — это версия функции gets для расширенных символов; ее аргумент
и возвращаемое значение являются строками расширенных символов.
) Важно!
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые
и безопасные аналоги этих функций. Дополнительные сведения см. в разделе
Безопасные перегрузки шаблонов.
gets <stdio.h>
Пример
C
// crt_gets.c
#include <stdio.h>
Output
fgets, fgetws
fputs, fputws
puts, _putws
_heapadd
Статья • 03.04.2023
) Важно!
Эта функция является устаревшей. Начиная с Visual Studio 2015 она недоступна
в CRT.
Синтаксис
C
int _heapadd(
void *memblock,
size_t size
);
Параметры
memblock
size
Возвращаемое значение
В случае успешного выполнения _heapadd возвращает 0; в противном случае
функция возвращает –1 и задает для errno значение ENOSYS .
Комментарии
Начиная с Visual C++ версии 4.0 базовая структура кучи перемещена в библиотеки
среды выполнения C для обеспечения поддержки новых функций отладки. В
результате _heapadd больше не поддерживается на какой-либо платформе,
основанной на Win32 API.
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
free
_heapchk
_heapmin
_heapset
_heapwalk
malloc
realloc
_heapset
Статья • 03.04.2023
) Важно!
Эта функция является устаревшей. Начиная с Visual Studio 2015 она недоступна
в CRT.
Синтаксис
C
int _heapset(
);
Параметры
fill
Заполняющий символ.
Возвращаемое значение
Функция _heapset возвращает одну из следующих целочисленных констант
манифеста, определенных в файле Malloc.h.
Значение Описание
Комментарии
Функция _heapset показывает расположения свободной памяти или узлы, которые
были непреднамеренно перезаписаны.
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
Пример
C
// crt_heapset.c
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
int heapstatus;
char *buffer;
exit( 0 ); // initialized
switch( heapstatus )
{
case _HEAPOK:
break;
case _HEAPEMPTY:
break;
case _HEAPBADBEGIN:
break;
case _HEAPBADNODE:
break;
free( buffer );
Output
OK - heap is fine
_heapadd
_heapchk
_heapmin
_heapwalk
inp , _inp , inpw , _inpw , _inpd
Статья • 03.04.2023
Входные данные из порта, байта ( inp , _inp ), слова ( inpw , _inpw ) или двойного
слова ( _inpd ).
) Важно!
Эти функции устарели. Начиная с Visual Studio 2015 они недоступны в CRT.
Синтаксис
C++
int _inp(
);
);
);
Параметры
port
Возвращаемое значение
Эти функции возвращают байт, слово или двойное слово, прочитанное из порта
port . Ошибка не возвращается.
Комментарии
Функции _inp , _inpw и _inpd считывают из указанного порта байт, слово и двойное
слово соответственно. Входное значение может быть любым беззнаковым
коротким целым числом в диапазоне от 0 до 65535.
Имена inp и inpw являются устаревшими именами для _inp функций и _inpw .
Дополнительные сведения см. в разделе Имена функций POSIX.
Требования
Подпрограмма Обязательный заголовок
_inp <conio.h>
_inpw <conio.h>
_inpd <conio.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Входные данные из порта, байта ( inp , _inp ), слова ( inpw , _inpw ) или двойного
слова ( _inpd ).
) Важно!
Эти функции устарели. Начиная с Visual Studio 2015 они недоступны в CRT.
Синтаксис
C++
int _inp(
);
);
);
Параметры
port
Возвращаемое значение
Эти функции возвращают байт, слово или двойное слово, прочитанное из порта
port . Ошибка не возвращается.
Комментарии
Функции _inp , _inpw и _inpd считывают из указанного порта байт, слово и двойное
слово соответственно. Входное значение может быть любым беззнаковым
коротким целым числом в диапазоне от 0 до 65535.
Имена inp и inpw являются устаревшими именами для _inp функций и _inpw .
Дополнительные сведения см. в разделе Имена функций POSIX.
Требования
Подпрограмма Обязательный заголовок
_inp <conio.h>
_inpw <conio.h>
_inpd <conio.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
) Важно!
Эта функция является устаревшей. Начиная с Visual Studio 2015 она недоступна
в CRT.
Синтаксис
C++
int locknum
);
Параметры
locknum
Комментарии
Если блокировка уже была получена, этот метод все равно получает блокировку и
вызывает внутреннюю ошибку среды выполнения языка C (CRT). Если метод не
может получить блокировку, он завершает работу со неустранимой ошибкой и
задает для него код _RT_LOCK ошибки.
Требования
Источник: mlock.c
_unlock
outp , outpw , _outp , _outpw , _outpd
Статья • 03.04.2023
Выводит на порт байт ( outp , _outp ), слово ( outpw , _outpw ) или двойное слово
( _outpd ).
) Важно!
Эти функции устарели. Начиная с Visual Studio 2015 они недоступны в CRT.
Синтаксис
C++
int _outp(
);
);
);
Параметры
port
Номер порта.
data_byte , data_word
Выходные значения.
Возвращаемое значение
Функции возвращают выходные данные. Ошибка не возвращается.
Комментарии
Функции _outp , _outpw и _outpd пишут байт, слово и двойное слово,
соответственно, на указанный порт вывода. Аргумент port может быть любым
целым числом без знака в диапазоне от 0 до 65 535. data_byte может быть любым
целым числом в диапазоне от 0 до 255. data_word может быть любым значением в
диапазоне целого числа, короткого целого числа без знака и длинного целого
числа без знака соответственно.
Имена outp и outpw являются более старыми и нерекомендуемые _outp имена для
функций и _outpw . Дополнительные сведения см. в разделе Имена функций POSIX.
Требования
Подпрограмма Обязательный заголовок
_outp <conio.h>
_outpw <conio.h>
_outpd <conio.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Выводит на порт байт ( outp , _outp ), слово ( outpw , _outpw ) или двойное слово
( _outpd ).
) Важно!
Эти функции устарели. Начиная с Visual Studio 2015 они недоступны в CRT.
Синтаксис
C++
int _outp(
);
);
);
Параметры
port
Номер порта.
data_byte , data_word
Выходные значения.
Возвращаемое значение
Функции возвращают выходные данные. Ошибка не возвращается.
Комментарии
Функции _outp , _outpw и _outpd пишут байт, слово и двойное слово,
соответственно, на указанный порт вывода. Аргумент port может быть любым
целым числом без знака в диапазоне от 0 до 65 535. data_byte может быть любым
целым числом в диапазоне от 0 до 255. data_word может быть любым значением в
диапазоне целого числа, короткого целого числа без знака и длинного целого
числа без знака соответственно.
Имена outp и outpw являются более старыми и нерекомендуемые _outp имена для
функций и _outpw . Дополнительные сведения см. в разделе Имена функций POSIX.
Требования
Подпрограмма Обязательный заголовок
_outp <conio.h>
_outpw <conio.h>
_outpd <conio.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
) Важно!
Эта функция является устаревшей. Начиная с Visual Studio 2015 она недоступна
в CRT.
Синтаксис
C
);
Параметры
format
Возвращаемое значение
Предыдущий формат вывода.
Комментарии
_set_output_format используется для настройки выходных данных
форматированных функций ввода-вывода, таких как printf_s. Единственное
соглашение о форматировании, которое может быть изменено этой функцией, —
это количество цифр, отображаемых в экспонентах в выходных данных чисел с
плавающей запятой.
Требования
Подпрограмма Обязательный заголовок
_set_output_format <stdio.h>
Пример
C
// crt_set_output_format.c
#include <stdio.h>
int main()
double x = 1.211E-5;
double y = 2.3056E-112;
printvalues(x, y);
old_exponent_format = _set_output_format(_TWO_DIGIT_EXPONENT);
printvalues(x, y);
_set_output_format( old_exponent_format );
printvalues(x, y);
Output
1.2110e-005 2.3056e-112
1.2110E-005 2.3056E-112
1.211e-005 2.306e-112
1.211E-005 2.306E-112
1.2110e-05 2.3056e-112
1.2110E-05 2.3056E-112
1.211e-05 2.306e-112
1.211E-05 2.306E-112
1.2110e-005 2.3056e-112
1.2110E-005 2.3056E-112
1.211e-005 2.306e-112
1.211E-005 2.306E-112
_get_output_format
_unlock
Статья • 03.04.2023
) Важно!
Эта функция является устаревшей. Начиная с Visual Studio 2015 она недоступна
в CRT.
Синтаксис
C++
int locknum
);
Параметры
locknum
Требования
Источник: mlock.c
_lock
Справочник по алфавитной функции
UCRT
Статья • 03.04.2023
Объект
abort
abs
_abs64
access
_access
_access_s
acos
acosf
acosh
acoshf
acoshl
acosl
_aligned_free
_aligned_free_dbg
_aligned_malloc
_aligned_malloc_dbg
_aligned_msize
_aligned_msize_dbg
_aligned_offset_malloc
_aligned_offset_malloc_dbg
_aligned_offset_realloc
_aligned_offset_realloc_dbg
_aligned_offset_recalloc
_aligned_offset_recalloc_dbg
_aligned_realloc
_aligned_realloc_dbg
_aligned_recalloc
_aligned_recalloc_dbg
_alloca
_amsg_exit
and
and_eq
asctime
asctime_s
asin
asinf
asinh
asinhf
asinhl
asinl
assert
_assert
_ASSERT
_ASSERT_EXPR
_ASSERTE
atan
atan2
atan2f
atan2l
atanf
atanh
atanhf
atanhl
atanl
atexit
_atodbl
_atodbl_l
atof
_atof_l
_atoflt
_atoflt_l
atoi
_atoi_l
_atoi64
_atoi64_l
atol
_atol_l
_atoldbl
_atoldbl_l
atoll
_atoll_l
B
_beginthread
_beginthreadex
bitand
bitor
bsearch
bsearch_s
btowc
_byteswap_uint64
_byteswap_ulong
_byteswap_ushort
C
_c_exit
c16rtomb
c32rtomb
_cabs
cabs
cabsf
cabsl
cacos
cacosf
cacosh
cacoshf
cacoshl
cacosl
_callnewh
calloc
_calloc_dbg
carg
cargf
cargl
casin
casinf
casinh
casinhf
casinhl
casinl
catan
catanf
catanh
catanhf
catanhl
catanl
cbrt
cbrtf
cbrtl
ccos
ccosf
ccosh
ccoshf
ccoshl
ccosl
ceil
ceilf
ceill
_cexit
cexp
cexpf
cexpl
cgets
_cgets_s
_cgetws_s
chdir
_chdir
_chdrive
_chgsign
_chgsignf
_chgsignl
chmod
_chmod
chsize
_chsize
_chsize_s
cimag
cimagf
cimagl
_clear87
clearerr
clearerr_s
_clearfp
clock
clog
clog10
clog10f
clog10l
clogf
clogl
close
_close
_commit
compl
_configthreadlocale
conj
conjf
conjl
_control87
__control87_2
_controlfp
_controlfp_s
copysign
_copysign
copysignf
_copysignf
copysignl
_copysignl
cos
cosf
cosh
coshf
coshl
cosl
_countof
cpow
cpowf
cpowl
cprintf
_cprintf
_cprintf_l
_cprintf_p
_cprintf_p_l
_cprintf_s
_cprintf_s_l
cproj
cprojf
cprojl
cputs
_cputs
_cputws
creal
crealf
creall
creat
_creat
_create_locale
_CrtCheckMemory
_CrtDbgBreak
_CrtDbgReport
_CrtDbgReportW
_CrtDoForAllClientObjects
_CrtDumpMemoryLeaks
_CrtGetAllocHook
_CrtGetDumpClient
_CrtGetReportHook
_CrtIsMemoryBlock
_CrtIsValidHeapPointer
_CrtIsValidPointer
_CrtMemCheckpoint
_CrtMemDifference
_CrtMemDumpAllObjectsSince
_CrtMemDumpStatistics
_CrtReportBlockType
_CrtSetAllocHook
_CrtSetBreakAlloc
_CrtSetDbgFlag
_CrtSetDebugFillThreshold
_CrtSetDumpClient
_CrtSetReportFile
_CrtSetReportHook
_CrtSetReportHook2
_CrtSetReportHookW2
_CrtSetReportMode
cscanf
_cscanf
_cscanf_l
_cscanf_s
_cscanf_s_l
csin
csinf
csinh
csinhf
csinhl
csinl
csqrt
csqrtf
csqrtl
ctan
ctanf
ctanh
ctanhf
ctanhl
ctanl
ctime
ctime_s
_ctime32
_ctime32_s
_ctime64
_ctime64_s
_cwait
cwait
_cwprintf
_cwprintf_l
_cwprintf_p
_cwprintf_p_l
_cwprintf_s
_cwprintf_s_l
_cwscanf
_cwscanf_l
_cwscanf_s
_cwscanf_s_l
_CxxThrowException
D
difftime
_difftime32
_difftime64
div
_dup
dup
_dup2
dup2
_dupenv_s
_dupenv_s_dbg
E
_ecvt
ecvt
_ecvt_s
_endthread
_endthreadex
eof
_eof
erf
erfc
erfcf
erfcl
erff
erfl
execl
_execl
execle
_execle
execlp
_execlp
execlpe
_execlpe
execv
_execv
execve
_execve
execvp
_execvp
execvpe
_execvpe
exit
_Exit
_exit
exp
exp2
exp2f
exp2l
_expand
_expand_dbg
expf
expm1
expm1f
expm1l
C
fabs
fabsf
fclose
_fclose_nolock
_fcloseall
fcloseall
_fcvt
fcvt
_fcvt_s
fdim
fdimf
fdiml
fdopen
_fdopen
feclearexcept
fegetenv
fegetexceptflag
fegetround
feholdexcept
feof
feraiseexcept
ferror
fesetenv
fesetexceptflag
fesetround
fetestexcept
feupdateenv
fflush
_fflush_nolock
fgetc
_fgetc_nolock
fgetchar
_fgetchar
fgetpos
fgets
fgetwc
_fgetwc_nolock
_fgetwchar
fgetws
filelength
_filelength
_filelengthi64
fileno
_fileno
_findclose
_findfirst
_findfirst32
_findfirst32i64
_findfirst64
_findfirst64i32
_findfirsti64
_findnext
_findnext32
_findnext32i64
_findnext64
_findnext64i32
_findnexti64
_finite
_finitef
floor
floorf
floorl
flushall
_flushall
fma
fmaf
fmal
fmax
fmaxf
fmaxl
fmin
fminf
fminl
fmod
fmodf
fopen
fopen_s
_fpclass
_fpclassf
fpclassify
_fpieee_flt
_fpreset
fprintf
_fprintf_l
_fprintf_p
_fprintf_p_l
fprintf_s
_fprintf_s_l
fputc
_fputc_nolock
fputchar
_fputchar
fputs
fputwc
_fputwc_nolock
_fputwchar
fputws
fread
_fread_nolock
_fread_nolock_s
fread_s
free
_free_dbg
_free_locale
_freea
freopen
freopen_s
frexp
fscanf
_fscanf_l
fscanf_s
_fscanf_s_l
fseek
_fseek_nolock
_fseeki64
_fseeki64_nolock
fsetpos
_fsopen
_fstat
_fstat32
_fstat32i64
_fstat64
_fstat64i32
_fstati64
ftell
_ftell_nolock
_ftelli64
_ftelli64_nolock
_ftime
_ftime_s
_ftime32
_ftime32_s
_ftime64
_ftime64_s
_fullpath
_fullpath_dbg
_futime
_futime32
_futime64
fwide
fwprintf
_fwprintf_l
_fwprintf_p
_fwprintf_p_l
fwprintf_s
_fwprintf_s_l
fwrite
_fwrite_nolock
fwscanf
_fwscanf_l
fwscanf_s
_fwscanf_s_l
G
gcvt
_gcvt
_gcvt_s
_get_current_locale
_get_daylight
_get_doserrno
_get_dstbias
_get_errno
_get_FMA3_enable
_get_fmode
_get_heap_handle
_get_invalid_parameter_handler
_get_osfhandle
_get_pgmptr
_get_printf_count_output
_get_terminate
_get_thread_local_invalid_parameter_handler
_get_timezone
_get_tzname
_get_unexpected
_get_wpgmptr
getc
_getc_nolock
getch
_getch
_getch_nolock
getchar
_getchar_nolock
getche
_getche
_getche_nolock
getcwd
_getcwd
_getcwd_dbg
_getdcwd
_getdcwd_dbg
_getdcwd_nolock
_getdiskfree
_getdrive
_getdrives
getenv
getenv_s
_getmaxstdio
_getmbcp
_getpid
getpid
gets_s
_getw
getw
getwc
_getwc_nolock
_getwch
_getwch_nolock
getwchar
_getwchar_nolock
_getwche
_getwche_nolock
_getws_s
gmtime
gmtime_s
_gmtime32
_gmtime32_s
_gmtime64
_gmtime64_s
H
_heapchk
_heapmin
_heapwalk
hypot
_hypot
hypotf
_hypotf
hypotl
_hypotl
I
_i64toa
_i64toa_s
_i64tow
_i64tow_s
ilogb
ilogbf
ilogbl
imaxabs
imaxdiv
_initterm
_initterm_e
_invalid_parameter
_invalid_parameter_noinfo
_invalid_parameter_noinfo_noreturn
_invoke_watson
isalnum
_isalnum_l
isalpha
_isalpha_l
isascii
__isascii
_isatty
isatty
isblank
_isblank_l
iscntrl
_iscntrl_l
__iscsym
iscsym
_iscsym_l
__iscsymf
iscsymf
_iscsymf_l
_isctype
_isctype_l
isdigit
_isdigit_l
isfinite
isgraph
_isgraph_l
isgreater
isgreaterequal
isinf
isleadbyte
_isleadbyte_l
isless
islessequal
islessgreater
islower
_islower_l
_ismbbalnum
_ismbbalnum_l
_ismbbalpha
_ismbbalpha_l
_ismbbblank
_ismbbblank_l
_ismbbgraph
_ismbbgraph_l
_ismbbkalnum
_ismbbkalnum_l
_ismbbkana
_ismbbkana_l
_ismbbkprint
_ismbbkprint_l
_ismbbkpunct
_ismbbkpunct_l
_ismbblead
_ismbblead_l
_ismbbprint
_ismbbprint_l
_ismbbpunct
_ismbbpunct_l
_ismbbtrail
_ismbbtrail_l
_ismbcalnum
_ismbcalnum_l
_ismbcalpha
_ismbcalpha_l
_ismbcblank
_ismbcblank_l
_ismbcdigit
_ismbcdigit_l
_ismbcgraph
_ismbcgraph_l
_ismbchira
_ismbchira_l
_ismbckata
_ismbckata_l
_ismbcl0
_ismbcl0_l
_ismbcl1
_ismbcl1_l
_ismbcl2
_ismbcl2_l
_ismbclegal
_ismbclegal_l
_ismbclower
_ismbclower_l
_ismbcprint
_ismbcprint_l
_ismbcpunct
_ismbcpunct_l
_ismbcspace
_ismbcspace_l
_ismbcsymbol
_ismbcsymbol_l
_ismbcupper
_ismbcupper_l
_ismbslead
_ismbslead_l
_ismbstrail
_ismbstrail_l
isnan
_isnan
_isnanf
isnormal
isprint
_isprint_l
ispunct
_ispunct_l
isspace
_isspace_l
isunordered
isupper
_isupper_l
iswalnum
_iswalnum_l
iswalpha
_iswalpha_l
iswascii
iswblank
_iswblank_l
iswcntrl
_iswcntrl_l
__iswcsym
_iswcsym_l
__iswcsymf
_iswcsymf_l
iswctype
_iswctype_l
iswdigit
_iswdigit_l
iswgraph
_iswgraph_l
iswlower
_iswlower_l
iswprint
_iswprint_l
iswpunct
_iswpunct_l
iswspace
_iswspace_l
iswupper
_iswupper_l
iswxdigit
_iswxdigit_l
isxdigit
_isxdigit_l
itoa
_itoa
_itoa_s
_itow
_itow_s
J
_j0
j0
_j1
j1
_jn
jn
K
_kbhit
kbhit
L
labs
ldexp
ldiv
_lfind
lfind
_lfind_s
lgamma
lgammaf
lgammal
llabs
lldiv
llrint
llrintf
llrintl
llround
llroundf
llroundl
localeconv
localtime
localtime_s
_localtime32
_localtime32_s
_localtime64
_localtime64_s
_lock_file
locking
_locking
log
log10
log10f
log1p
log1pf
log1pl
log2
log2f
log2l
logb
_logb
logbf
_logbf
logbl
logf
longjmp
lrint
lrintf
lrintl
_lrotl
_lrotr
lround
lroundf
lroundl
_lsearch
lsearch
_lsearch_s
lseek
_lseek
_lseeki64
ltoa
_ltoa
_ltoa_s
_ltow
_ltow_s
M
_makepath
_makepath_s
malloc
_malloc_dbg
_malloca
_matherr
__max
_mbbtombc
_mbbtombc_l
_mbbtype
_mbbtype_l
_mbccpy
_mbccpy_l
_mbccpy_s
_mbccpy_s_l
_mbcjistojms
_mbcjistojms_l
_mbcjmstojis
_mbcjmstojis_l
_mbclen
_mbclen_l
_mbctohira
_mbctohira_l
_mbctokata
_mbctokata_l
_mbctolower
_mbctolower_l
_mbctombb
_mbctombb_l
_mbctoupper
_mbctoupper_l
mblen
_mblen_l
mbrlen
mbrtoc16
mbrtoc32
mbrtowc
_mbsbtype
_mbsbtype_l
_mbscat
_mbscat_s
_mbscat_s_l
_mbschr
_mbschr_l
_mbscmp
_mbscmp_l
_mbscoll
_mbscoll_l
_mbscpy
_mbscpy_s
_mbscpy_s_l
_mbscspn
_mbscspn_l
_mbsdec
_mbsdec_l
_mbsdup
_mbsicmp
_mbsicmp_l
_mbsicoll
_mbsicoll_l
_mbsinc
_mbsinc_l
mbsinit
_mbslen
_mbslen_l
_mbslwr
_mbslwr_l
_mbslwr_s
_mbslwr_s_l
_mbsnbcat
_mbsnbcat_l
_mbsnbcat_s
_mbsnbcat_s_l
_mbsnbcmp
_mbsnbcmp_l
_mbsnbcnt
_mbsnbcnt_l
_mbsnbcoll
_mbsnbcoll_l
_mbsnbcpy
_mbsnbcpy_l
_mbsnbcpy_s
_mbsnbcpy_s_l
_mbsnbicmp
_mbsnbicmp_l
_mbsnbicoll
_mbsnbicoll_l
_mbsnbset
_mbsnbset_l
_mbsnbset_s
_mbsnbset_s_l
_mbsncat
_mbsncat_l
_mbsncat_s
_mbsncat_s_l
_mbsnccnt
_mbsnccnt_l
_mbsncmp
_mbsncmp_l
_mbsncoll
_mbsncoll_l
_mbsncpy
_mbsncpy_l
_mbsncpy_s
_mbsncpy_s_l
_mbsnextc
_mbsnextc_l
_mbsnicmp
_mbsnicmp_l
_mbsnicoll
_mbsnicoll_l
_mbsninc
_mbsninc_l
_mbsnlen
_mbsnlen_l
_mbsnset
_mbsnset_l
_mbsnset_s
_mbsnset_s_l
_mbspbrk
_mbspbrk_l
_mbsrchr
_mbsrchr_l
_mbsrev
_mbsrev_l
mbsrtowcs
mbsrtowcs_s
_mbsset
_mbsset_l
_mbsset_s
_mbsset_s_l
_mbsspn
_mbsspn_l
_mbsspnp
_mbsspnp_l
_mbsstr
_mbsstr_l
_mbstok
_mbstok_l
_mbstok_s
_mbstok_s_l
mbstowcs
_mbstowcs_l
mbstowcs_s
_mbstowcs_s_l
_mbstrlen
_mbstrlen_l
_mbstrnlen
_mbstrnlen_l
_mbsupr
_mbsupr_l
_mbsupr_s
_mbsupr_s_l
mbtowc
_mbtowc_l
memccpy
_memccpy
memchr
memcmp
memcpy
memcpy_s
memicmp
_memicmp
_memicmp_l
memmove
memmove_s
memset
__min
mkdir
_mkdir
_mkgmtime
_mkgmtime32
_mkgmtime64
mktemp
_mktemp
_mktemp_s
mktime
_mktime32
_mktime64
modf
modff
_msize
_msize_dbg
Нет
nan
nanf
nanl
nearbyint
nearbyintf
nearbyintl
nextafter
_nextafter
nextafterf
_nextafterf
nextafterl
nexttoward
nexttowardf
nexttowardl
norm
normf
norml
not
not_eq
O
offsetof
_onexit
_onexit_m
open
_open
_open_osfhandle
or
or_eq
P
_pclose
perror
_pipe
_popen
pow
powf
powl
printf
_printf_l
_printf_p
_printf_p_l
printf_s
_printf_s_l
_purecall
putc
_putc_nolock
putch
_putch
_putch_nolock
putchar
_putchar_nolock
putenv
_putenv
_putenv_s
puts
putw
_putw
putwc
_putwc_nolock
_putwch
_putwch_nolock
putwchar
_putwchar_nolock
_putws
Q
qsort
qsort_s
_query_new_handler
_query_new_mode
quick_exit
R
raise
rand
rand_s
read
_read
realloc
_realloc_dbg
_recalloc
_recalloc_dbg
remainder
remainderf
remainderl
remove
remquo
remquof
remquol
rename
_resetstkoflw
rewind
rint
rintf
rintl
rmdir
_rmdir
rmtmp
_rmtmp
_rotl
_rotl64
_rotr
_rotr64
round
roundf
roundl
_RPT
_RPTF
_RPTFW
_RPTW
_RTC_GetErrDesc
_RTC_NumErrors
_RTC_SetErrorFunc
_RTC_SetErrorFuncW
_RTC_SetErrorType
S
_scalb
scalbln
scalblnf
scalblnl
scalbn
scalbnf
scalbnl
scanf
_scanf_l
scanf_s
_scanf_s_l
_scprintf
_scprintf_l
_scprintf_p
_scprintf_p_l
_scwprintf
_scwprintf_l
_scwprintf_p
_scwprintf_p_l
_searchenv
_searchenv_s
__security_init_cookie
_seh_filter_dll
_seh_filter_exe
_set_abort_behavior
_set_controlfp
_set_doserrno
_set_errno
_set_error_mode
_set_FMA3_enable
_set_fmode
_set_invalid_parameter_handler
_set_new_handler
_set_new_mode
_set_printf_count_output
_set_purecall_handler
_set_se_translator
_set_SSE2_enable
set_terminate
_set_thread_local_invalid_parameter_handler
set_unexpected
setbuf
setjmp
setlocale
_setmaxstdio
_setmbcp
setmode
_setmode
setvbuf
signal
signbit
sin
sinf
sinh
sinhf
sinhl
sinl
snprintf
_snprintf
_snprintf_l
_snprintf_s
_snprintf_s_l
_snscanf
_snscanf_l
_snscanf_s
_snscanf_s_l
_snwprintf
_snwprintf_l
_snwprintf_s
_snwprintf_s_l
_snwscanf
_snwscanf_l
_snwscanf_s
_snwscanf_s_l
sopen
_sopen
_sopen_s
spawnl
_spawnl
spawnle
_spawnle
spawnlp
_spawnlp
spawnlpe
_spawnlpe
spawnv
_spawnv
spawnve
_spawnve
spawnvp
_spawnvp
spawnvpe
_spawnvpe
_splitpath
_splitpath_s
sprintf
_sprintf_l
_sprintf_p
_sprintf_p_l
sprintf_s
_sprintf_s_l
sqrt
sqrtf
sqrtl
srand
sscanf
_sscanf_l
sscanf_s
_sscanf_s_l
_stat
_stat32
_stat32i64
_stat64
_stat64i32
_stati64
_STATIC_ASSERT
_status87
_statusfp
_statusfp2
strcat
strcat_s
strchr
strcmp
strcmpi
strcoll
_strcoll_l
strcpy
strcpy_s
strcspn
_strdate
_strdate_s
_strdec
_strdup
strdup
_strdup_dbg
strerror
_strerror
strerror_s
_strerror_s
strftime
_strftime_l
_stricmp
stricmp
_stricmp_l
_stricoll
_stricoll_l
_strinc
strlen
_strlwr
strlwr
_strlwr_l
_strlwr_s
_strlwr_s_l
strncat
_strncat_l
strncat_s
_strncat_s_l
strncmp
_strncnt
_strncoll
_strncoll_l
strncpy
_strncpy_l
strncpy_s
_strncpy_s_l
_strnextc
_strnicmp
strnicmp
_strnicmp_l
_strnicoll
_strnicoll_l
_strninc
strnlen
strnlen_s
_strnset
strnset
_strnset_l
_strnset_s
_strnset_s_l
strpbrk
strrchr
_strrev
strrev
_strset
strset
_strset_l
_strset_s
_strset_s_l
strspn
_strspnp
strstr
_strtime
_strtime_s
strtod
_strtod_l
strtof
_strtof_l
_strtoi64
_strtoi64_l
strtoimax
_strtoimax_l
strtok
_strtok_l
strtok_s
_strtok_s_l
strtol
_strtol_l
strtold
_strtold_l
strtoll
_strtoll_l
_strtoui64
_strtoui64_l
strtoul
_strtoul_l
strtoull
_strtoull_l
strtoumax
_strtoumax_l
_strupr
strupr
_strupr_l
_strupr_s
_strupr_s_l
strxfrm
_strxfrm_l
swab
_swab
swprintf
_swprintf_l
__swprintf_l
_swprintf_p
_swprintf_p_l
swprintf_s
_swprintf_s_l
swscanf
_swscanf_l
swscanf_s
_swscanf_s_l
system
T
tan
tanf
tanh
tanhf
tanhl
tanl
tell
_tell
_telli64
tempnam
_tempnam
_tempnam_dbg
terminate
tgamma
tgammaf
tgammal
time
_time32
_time64
timespec_get
_timespec32_get
_timespec64_get
tmpfile
tmpfile_s
tmpnam
tmpnam_s
__toascii
toascii
tolower
_tolower
_tolower_l
toupper
_toupper
_toupper_l
towctrans
towlower
_towlower_l
towupper
_towupper_l
trunc
truncf
truncl
tzset
_tzset
U
_ui64toa
_ui64toa_s
_ui64tow
_ui64tow_s
ultoa
_ultoa
_ultoa_s
_ultow
_ultow_s
umask
_umask
_umask_s
__uncaught_exception
unexpected
ungetc
_ungetc_nolock
ungetch
_ungetch
_ungetch_nolock
ungetwc
_ungetwc_nolock
_ungetwch
_ungetwch_nolock
unlink
_unlink
_unlock_file
_utime
_utime32
_utime64
V
va_arg
va_copy
va_end
va_start
_vcprintf
_vcprintf_l
_vcprintf_p
_vcprintf_p_l
_vcprintf_s
_vcprintf_s_l
_vcwprintf
_vcwprintf_l
_vcwprintf_p
_vcwprintf_p_l
_vcwprintf_s
_vcwprintf_s_l
vfprintf
_vfprintf_l
_vfprintf_p
_vfprintf_p_l
vfprintf_s
_vfprintf_s_l
vfscanf
vfscanf_s
vfwprintf
_vfwprintf_l
_vfwprintf_p
_vfwprintf_p_l
vfwprintf_s
_vfwprintf_s_l
vfwscanf
vfwscanf_s
vprintf
_vprintf_l
_vprintf_p
_vprintf_p_l
vprintf_s
_vprintf_s_l
vscanf
vscanf_s
_vscprintf
_vscprintf_l
_vscprintf_p
_vscprintf_p_l
_vscwprintf
_vscwprintf_l
_vscwprintf_p
_vscwprintf_p_l
vsnprintf
_vsnprintf
_vsnprintf_l
vsnprintf_s
_vsnprintf_s
_vsnprintf_s_l
_vsnwprintf
_vsnwprintf_l
_vsnwprintf_s
_vsnwprintf_s_l
vsprintf
_vsprintf_l
_vsprintf_p
_vsprintf_p_l
vsprintf_s
_vsprintf_s_l
vsscanf
vsscanf_s
vswprintf
_vswprintf_l
__vswprintf_l
_vswprintf_p
_vswprintf_p_l
vswprintf_s
_vswprintf_s_l
vswscanf
vswscanf_s
vwprintf
_vwprintf_l
_vwprintf_p
_vwprintf_p_l
vwprintf_s
_vwprintf_s_l
vwscanf
vwscanf_s
W
_waccess
_waccess_s
_wasctime
_wasctime_s
_wassert
_wchdir
_wchmod
_wcreat
_wcreate_locale
wcrtomb
wcrtomb_s
wcscat
wcscat_s
wcschr
wcscmp
wcscoll
_wcscoll_l
wcscpy
wcscpy_s
wcscspn
_wcsdec
_wcsdup
wcsdup
_wcsdup_dbg
_wcserror
__wcserror
_wcserror_s
__wcserror_s
wcsftime
_wcsftime_l
_wcsicmp
wcsicmp
_wcsicmp_l
_wcsicoll
wcsicoll
_wcsicoll_l
_wcsinc
wcslen
_wcslwr
wcslwr
_wcslwr_l
_wcslwr_s
_wcslwr_s_l
wcsncat
_wcsncat_l
wcsncat_s
_wcsncat_s_l
wcsncmp
_wcsncnt
_wcsncoll
_wcsncoll_l
wcsncpy
_wcsncpy_l
wcsncpy_s
_wcsncpy_s_l
_wcsnextc
_wcsnicmp
wcsnicmp
_wcsnicmp_l
_wcsnicoll
_wcsnicoll_l
_wcsninc
wcsnlen
wcsnlen_s
_wcsnset
wcsnset
_wcsnset_l
_wcsnset_s
_wcsnset_s_l
wcspbrk
wcsrchr
_wcsrev
wcsrev
wcsrtombs
wcsrtombs_s
_wcsset
wcsset
_wcsset_l
_wcsset_s
_wcsset_s_l
wcsspn
_wcsspnp
wcsstr
wcstod
_wcstod_l
wcstof
_wcstof_l
_wcstoi64
_wcstoi64_l
wcstoimax
_wcstoimax_l
wcstok
_wcstok_l
wcstok_s
_wcstok_s_l
wcstol
_wcstol_l
wcstold
_wcstold_l
wcstoll
_wcstoll_l
wcstombs
_wcstombs_l
wcstombs_s
_wcstombs_s_l
_wcstoui64
_wcstoui64_l
wcstoul
_wcstoul_l
wcstoull
_wcstoull_l
wcstoumax
_wcstoumax_l
_wcsupr
wcsupr
_wcsupr_l
_wcsupr_s
_wcsupr_s_l
wcsxfrm
_wcsxfrm_l
_wctime
_wctime_s
_wctime32
_wctime32_s
_wctime64
_wctime64_s
wctob
wctomb
_wctomb_l
wctomb_s
_wctomb_s_l
wctrans
wctype
_wdupenv_s
_wdupenv_s_dbg
_wexecl
_wexecle
_wexeclp
_wexeclpe
_wexecv
_wexecve
_wexecvp
_wexecvpe
_wfdopen
_wfindfirst
_wfindfirst32
_wfindfirst32i64
_wfindfirst64
_wfindfirst64i32
_wfindfirsti64
_wfindnext
_wfindnext32
_wfindnext32i64
_wfindnext64
_wfindnext64i32
_wfindnexti64
_wfopen
_wfopen_s
_wfreopen
_wfreopen_s
_wfsopen
_wfullpath
_wfullpath_dbg
_wgetcwd
_wgetcwd_dbg
_wgetdcwd
_wgetdcwd_dbg
_wgetdcwd_nolock
_wgetenv
_wgetenv_s
_wmakepath
_wmakepath_s
wmemchr
wmemcmp
wmemcpy
wmemcpy_s
wmemmove
wmemmove_s
wmemset
_wmkdir
_wmktemp
_wmktemp_s
_wopen
_wperror
_wpopen
wprintf
_wprintf_l
_wprintf_p
_wprintf_p_l
wprintf_s
_wprintf_s_l
_wputenv
_wputenv_s
_wremove
_wrename
_write
write
_wrmdir
wscanf
_wscanf_l
wscanf_s
_wscanf_s_l
_wsearchenv
_wsearchenv_s
_wsetlocale
_wsopen
_wsopen_s
_wspawnl
_wspawnle
_wspawnlp
_wspawnlpe
_wspawnv
_wspawnve
_wspawnvp
_wspawnvpe
_wsplitpath
_wsplitpath_s
_wstat
_wstat32
_wstat32i64
_wstat64
_wstat64i32
_wstati64
_wstrdate
_wstrdate_s
_wstrtime
_wstrtime_s
_wsystem
_wtempnam
_wtempnam_dbg
_wtmpnam
_wtmpnam_s
_wtof
_wtof_l
_wtoi
_wtoi_l
_wtoi64
_wtoi64_l
_wtol
_wtol_l
_wtoll
_wtoll_l
_wunlink
_wutime
_wutime32
_wutime64
X
xor
xor_eq
Да
_y0
y0
_y1
y1
_yn
yn
7 Примечание
Синтаксис
C
Возвращаемое значение
abort не возвращает управление вызывающему процессу. По умолчанию он
проверяет наличие обработчика прерывания сигнала и вызывает SIGABRT , если он
задан. Затем abort завершает текущий процесс и возвращает код выхода для
родительского процесса.
Примечания
Блок, относящийся только к системам Microsoft
Требования
Подпрограмма Обязательный заголовок
Пример
Следующая программа пытается открыть файл и прерывается, если попытка
завершается неудачей.
// crt_abort.c
#include <stdio.h>
#include <stdlib.h>
errno_t err = 0;
abort();
else
fclose( stream );
Output
Функция
raise
signal
_set_abort_behavior
abs , labs , llabs , _abs64
Статья • 03.04.2023
Синтаксис
C
C++
Параметры
n
Числовое значение.
Возвращаемое значение
Функции abs и llabs , labs а _abs64 также возвращают абсолютное значение
параметра n . Ошибка не возвращается.
Комментарии
Так как C++ допускает перегрузку, можно вызывать перегрузки abs , которые
принимают и возвращают значения long , long long , float , double и long double .
Эти перегрузки определяются в заголовке <cmath> . В программе abs C всегда
принимает и возвращает значение int .
Для конкретной корпорации Майкрософт диапазон отрицательных целых чисел,
представленных в любом целочисленном типе, больше диапазона положительных
целых чисел, представляемых в этом типе. Таким образом, можно указать аргумент
для этих функций, которые нельзя преобразовать. Если абсолютное значение
аргумента не может быть представлено типом возвращаемого значения, abs
функции возвращают значение аргумента без изменений. В частности abs(INT_MIN)
возвращает INT_MIN , labs(LONG_MIN) возвращает LONG_MIN , llabs(LLONG_MIN)
возвращает LLONG_MIN , а _abs64(_I64_MIN) возвращает _I64_MIN . Фактически
функции abs нельзя использовать для гарантии положительного значения.
Требования
Подпрограмма Обязательный заголовок Обязательный заголовок C++
C
abs , labs , llabs <math.h> или <stdlib.h> <cmath> , <cstdlib> , <stdlib.h> или <math.h>
Пример
Эта программа вычисляет и отображает абсолютные значения несколько чисел.
// crt_abs.c
// several numbers.
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <limits.h>
int ix = -4;
long lx = -41567L;
__int64 wx = -1;
_abs64(wx));
Output
См. также:
Преобразование данных
imaxabs
access (CRT)
Статья • 03.04.2023
Определяет, доступен ли файл только для чтения или нет. Доступны более
безопасные версии; see _access_s, _waccess_s.
Синтаксис
C
int _access(
int mode
);
int _waccess(
);
Параметры
path
mode
Возвращаемое значение
Если файл имеет заданный режим, все функции возвращают значение 0. Функция
возвращает значение -1, если именованный файл не существует или не имеет
заданного режима; в этом случае устанавливается, errno как показано в
следующей таблице.
Значение Описание
Комментарии
При использовании с файлами функция _access определяет, существует ли
указанный файл или каталог и имеет ли он атрибуты, указанные в значении mode .
При использовании с каталогами _access определяет, существует ли указанный
каталог; в операционных системах Windows 2000 и более поздних версий все
каталоги имеют доступ на чтение и запись.
00 Существование
02 Только на запись
06 Чтение и запись
Эта функция проверяет, доступен ли файл и каталог только для чтения или нет, он
не проверяет параметры безопасности файловой системы. Для этого требуется
токен доступа. Дополнительные сведения о безопасности файловой системы см. в
разделе "Маркеры доступа". Для предоставления этой функции существует класс
ATL; См CAccessToken . класс.
Эта функция проверяет свои параметры. Если path режим NULL является
допустимым или mode не указан, вызывается обработчик недопустимых
параметров, как описано в разделе "Проверка параметров". Если выполнение
может быть продолжено, функция устанавливает параметр errno в значение
EINVAL и возвращает –1.
Требования
Подпрограмма Обязательный заголовок Необязательные заголовки
Пример
Следующий пример используется _access для проверки именованного
crt_ACCESS.C файла, чтобы узнать, существует ли он и разрешено ли запись.
// crt_access.c
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
Output
File crt_ACCESS.C exists.
_chmod, _wchmod
_open, _wopen
Синтаксис
C
errno_t _access_s(
int mode
);
errno_t _waccess_s(
);
Параметры
path
mode
Настройка разрешений.
Возвращаемое значение
Если файл имеет заданный режим, все функции возвращают значение 0. Функция
возвращает код ошибки, если именованный файл не существует или недоступен в
заданном режиме. Код ошибки выбирается из набора описанным ниже образом и
присваивает errno такое же значение.
Значение Условие
errno
Комментарии
При использовании с файлами функция _access_s определяет, существует ли
указанный файл и можно ли получить к нему доступ согласно значению mode . При
использовании с каталогами функция _access_s определяет, существует ли
указанный каталог. В операционных системах Windows 2000 и более поздних
версий все каталоги имеют доступ на чтение и запись.
00 Существование.
02 Разрешение на запись.
04 Разрешение на чтение.
Эти функции проверяют свои параметры. Если path параметр имеет NULL значение
или mode не указывает допустимый режим, вызывается обработчик недопустимых
параметров, как описано в разделе Проверка параметров. Если выполнение может
быть продолжено, эти функции устанавливают параметр errno в значение EINVAL и
возвращают значение EINVAL .
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
Пример
В этом примере для проверки файла с именем crt_access_s.на существование и
возможность записи используется _access_s .
// crt_access_s.c
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
errno_t err = 0;
"write permission.\n" );
else
"write permission.\n" );
else
Output
_access, _waccess
_chmod, _wchmod
_open, _wopen
Вычисляет арккосинус.
Синтаксис
C
Параметры
x
Возвращаемое значение
Функция acos возвращает арккосинус x в диапазоне от 0 до радиан π.
Комментарии
Поскольку C++ допускает перегрузки, можно вызывать перегрузки функции acos ,
принимающие и возвращающие типы float и long double . В программе C, если вы
не используете <tgmath.h> макрос для вызова этой функции, acos всегда
принимает и возвращает . double
Требования
Подпрограмма Обязательный заголовок Необязательные заголовки
Пример
Эта программа предлагает ввести значение в диапазоне от -1 до 1. Входные
значения вне этого диапазона вызывают сообщения об ошибке _DOMAIN . Если
введено допустимое значение, программа выводит на экран арксинус и арккосинус
этого значения.
// crt_asincos.c
// arguments: 0
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
double x,
y;
errno_t err;
// argument checking
if (ac != 2)
av[0]);
return 1;
"double value.\n");
return 1;
// Arcsine of X
y = asin( x );
// Arccosine of X
y = acos( x );
Output
_matherr
Синтаксис
C
Параметры
x
Возвращаемое значение
Функции acosh возвращают обратный гиперболический косинус (гиперболический
козинус дуги) из x . Эти функции допустимы в домене значений x ≥ 1. Если x
меньше 1, errno для параметра задано значение EDOM , а результатом является
тихий naN. Если x является несигнальным значением NaN, неопределенным или
бесконечным, возвращается то же значение.
Комментарии
При использовании C++ можно вызывать перегрузки acosh , которые принимают
и возвращают значения float или long double . В программе на языке C, если вы
не используете <макрос tgmath.h> для вызова этой функции, acosh всегда
принимает и возвращает . double
Требования
Компонент Заголовок C Заголовок C++
Пример
C
// crt_acosh.c
#include <math.h>
#include <stdio.h>
double pi = 3.1415926535;
double x, y;
x = cosh( pi / 4 );
y = acosh( x );
Output
cosh( 0.785398 ) = 1.324609
Синтаксис
C
void _aligned_free (
void *memblock
);
Параметры
memblock
Комментарии
Функция _aligned_free помечена как __declspec(noalias) ; это означает, что
функция гарантировано не изменяет глобальные переменные. Для получения
дополнительной информации см. noalias.
Эта функция не проверяет его параметр, в отличие от других _aligned функций CRT.
Если memblock представляет собой указатель NULL , эта функция просто не
выполняет никаких действий. Он не изменяется errno и не вызывает обработчик
недопустимых параметров. Если в функции произошла ошибка, так как _aligned
функции не использовались для выделения блока памяти или неправильного
распределения памяти возникает из-за непредвиденного бедствия, функция
создает отчет об отладке из _RPTмакросов , _RPTF_RPTW_RPTFW а также макросов.
Требования
Подпрограмма Обязательный заголовок
_aligned_free <malloc.h>
Пример
Для получения дополнительной информации см. _aligned_malloc.
См. также
Выравнивание данных
_aligned_free_dbg
Статья • 03.04.2023
Синтаксис
C
void _aligned_free_dbg(
void *memblock
);
Параметры
memblock
Комментарии
Функция _aligned_free_dbg является отладочной версией _aligned_free функции.
Если _DEBUG параметр не определен, каждый вызов _aligned_free_dbg сводится к
вызову _aligned_free . И _aligned_free , и _aligned_free_dbg освобождают блок
памяти в основной куче, однако _aligned_free_dbg включает возможность отладки:
возможность хранить освободившиеся блоки в связанном списке кучи для
моделирования условий недостатка памяти.
Требования
Подпрограмма Обязательный заголовок
_aligned_free_dbg <crtdbg.h>
Синтаксис
C
void * _aligned_malloc(
size_t size,
size_t alignment
);
Параметры
size
alignment
Возвращаемое значение
Указатель на выделенный блок памяти или значение NULL в случае сбоя операции.
Указатель делится на alignment .
Комментарии
Функция _aligned_malloc основана на функции malloc.
Эта функция задает для errno значение ENOMEM в случае сбоя выделения памяти
или если запрошенный размер был больше _HEAP_MAXREQ . Дополнительные
сведения о errno см. в разделе errno, _doserrno, _sys_errlistи _sys_nerr. Кроме того,
_aligned_malloc проверяет свои параметры. Если alignment значение не равно 2
Требования
Подпрограмма Обязательный заголовок C Заголовок C++
Пример
C
// crt_aligned_malloc.c
#include <malloc.h>
#include <stdio.h>
int main() {
void *ptr;
size_t alignment,
off_set;
alignment = 16;
off_set = 5;
// Using _aligned_malloc
if (ptr == NULL)
return -1;
ptr, alignment);
else
ptr, alignment);
// Using _aligned_realloc
ptr, alignment);
else
ptr, alignment);
_aligned_free(ptr);
// Using _aligned_offset_malloc
if (ptr == NULL)
return -1;
else
printf_s( "This pointer, %p, does not satisfy offset %zu "
// Using _aligned_offset_realloc
if (ptr == NULL)
return -1;
else
printf_s( "This pointer, %p, does not satisfy offset %zu and "
_aligned_free(ptr);
Output
This pointer, 3280880, is aligned on 16
Синтаксис
C
void * _aligned_malloc_dbg(
size_t size,
size_t alignment,
int linenumber
);
Параметры
size
alignment
filename
linenumber
Возвращаемое значение
Указатель на выделенный блок памяти или значение NULL в случае сбоя операции.
Комментарии
_aligned_malloc_dbg — отладочная версия _aligned_malloc функции. Если _DEBUG
Требования
Подпрограмма Обязательный заголовок
_aligned_malloc_dbg <crtdbg.h>
Синтаксис
C
size_t _aligned_msize(
void *memblock,
size_t alignment,
size_t offset
);
Параметры
memblock
alignment
offset
Возвращаемое значение
Возвращает размер (в байтах) как целое число без знака.
Комментарии
Функция _aligned_msize возвращает размер (в байтах) блока памяти, выделенного
вызовом _aligned_malloc или _aligned_realloc. Значения alignment и offset должны
совпадать со значениями, которые были переданы функции, выделившей блок.
Требования
Подпрограмма Обязательный заголовок
_aligned_msize <malloc.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Синтаксис
C
size_t _aligned_msize_dbg(
void *memblock,
size_t alignment,
size_t offset
);
Параметры
memblock
alignment
offset
Возвращаемое значение
Возвращает размер (в байтах) как целое число без знака.
Комментарии
Значения alignment и offset должны совпадать со значениями, которые были
переданы функции, выделившей блок.
Эта функция проверяет свои параметры. Если memblock является пустым указателем
или alignment не имеет значения 2, _msize вызывает обработчик недопустимых
параметров, как описано в разделе Проверка параметров. Если ошибка
обработана, функция задает для параметра errno значение EINVAL и возвращает
-1.
Требования
Подпрограмма Обязательный заголовок
_aligned_msize_dbg <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Синтаксис
C
void * _aligned_offset_malloc(
size_t size,
size_t alignment,
size_t offset
);
Параметры
size
alignment
offset
Возвращаемое значение
Указатель на выделенный блок памяти или значение NULL в случае сбоя операции.
Комментарии
_aligned_offset_malloc можно использовать в ситуациях, когда необходимо
Эта функция задает для errno значение ENOMEM в случае сбоя выделения памяти
или если запрошенный размер был больше _HEAP_MAXREQ . Дополнительные
сведения о errno , см. в разделе errno, , _doserrno_sys_errlistи _sys_nerr. Кроме того,
_aligned_offset_malloc проверяет свои параметры. Если alignment значение не
равно 2 или offset не равно нулю и больше или равно size , эта функция вызывает
обработчик недопустимых параметров, как описано в разделе "Проверка
параметров". Если продолжение выполнения разрешено, эта функция возвращает
NULL и задает для errno значение EINVAL .
Требования
Подпрограмма Обязательный заголовок
_aligned_offset_malloc <malloc.h>
Пример
Для получения дополнительной информации см. _aligned_malloc.
См. также
Выравнивание данных
_aligned_offset_malloc_dbg
Статья • 03.04.2023
Синтаксис
C
void * _aligned_offset_malloc_dbg(
size_t size,
size_t alignment,
size_t offset,
int linenumber
);
Параметры
size
alignment
offset
filename
linenumber
Возвращаемое значение
Указатель на выделенный блок памяти или значение NULL в случае сбоя операции.
Комментарии
_aligned_offset_malloc_dbg — отладочная версия _aligned_offset_malloc функции.
Эта функция задает для errno значение ENOMEM в случае сбоя выделения памяти
или если запрошенный размер был больше _HEAP_MAXREQ . Дополнительные
сведения о errno см. в разделе errno, _doserrno, _sys_errlistи _sys_nerr. Кроме того,
_aligned_offset_malloc проверяет свои параметры. Если alignment значение не
равно 2 или offset значение не равно нулю и больше или равно size , эта функция
вызывает обработчик недопустимых параметров, как описано в разделе Проверка
параметров. Если продолжение выполнения разрешено, эта функция возвращает
NULL и задает для errno значение EINVAL .
_aligned_offset_malloc_dbg <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Синтаксис
C
void * _aligned_offset_realloc(
void *memblock,
size_t size,
size_t alignment,
size_t offset
);
Параметры
memblock
size
alignment
offset
Возвращаемое значение
_aligned_offset_realloc возвращает указатель void на перераспределенный (и,
возможно, перемещенный) блок памяти. Возвращаемое значение — NULL если
размер равен нулю, а аргумент буфера — нет NULL , или если недостаточно
доступной памяти для расширения блока до заданного размера. В первом случае
исходный блок освобождается. Во втором случае исходный блок не изменяется.
Возвращаемое значение указывает на дисковое пространство, подходящее для
хранения любого типа объекта. Чтобы получить указатель на тип, отличный от
void , используйте приведение типов для возвращаемого значения.
Комментарии
Например _aligned_offset_malloc, _aligned_offset_realloc позволяет выровнять
структуру по смещениям в структуре.
Эта функция задает для errno значение ENOMEM в случае сбоя выделения памяти
или если запрошенный размер был больше _HEAP_MAXREQ . Дополнительные
сведения о , см. в errno разделе errno, _doserrnoи _sys_nerr_sys_errlist. Кроме того,
_aligned_offset_realloc проверяет свои параметры. Если alignment значение не
равно 2 или offset не равно нулю size , эта функция вызывает обработчик
недопустимых параметров, как описано в разделе "Проверка параметров". Если
продолжение выполнения разрешено, эта функция возвращает NULL и задает для
errno значение EINVAL .
Требования
Подпрограмма Обязательный заголовок
_aligned_offset_realloc <malloc.h>
Пример
Для получения дополнительной информации см. _aligned_malloc.
См. также
Выравнивание данных
_aligned_offset_realloc_dbg
Статья • 03.04.2023
Синтаксис
C
void * _aligned_offset_realloc_dbg(
void *memblock,
size_t size,
size_t alignment,
size_t offset,
int linenumber
);
Параметры
memblock
size
alignment
offset
filename
linenumber
Комментарии
_aligned_offset_realloc_dbg — отладочная версия _aligned_offset_realloc функции.
Если _DEBUG параметр не определен, каждый вызов _aligned_offset_realloc_dbg
сводится к вызову _aligned_offset_realloc . И _aligned_offset_realloc , и
_aligned_offset_realloc_dbg перераспределять блок памяти в базовой куче, но
_aligned_offset_realloc_dbg вмещает несколько функций отладки: буферы по обе
Эта функция задает для errno значение ENOMEM в случае сбоя выделения памяти
или если запрошенный размер был больше _HEAP_MAXREQ . Дополнительные
сведения о errno см. в разделе errno, _doserrno, _sys_errlistи _sys_nerr. Кроме того,
_aligned_offset_realloc_dbg проверяет свои параметры. Если alignment значение
не равно 2 или значение offset не равно нулю и больше или равно size , эта
функция вызывает обработчик недопустимых параметров, как описано в разделе
Проверка параметров. Если продолжение выполнения разрешено, эта функция
возвращает NULL и задает для errno значение EINVAL .
Требования
Подпрограмма Обязательный заголовок
_aligned_offset_realloc_dbg <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Синтаксис
C
void * _aligned_offset_recalloc(
void *memblock,
size_t num,
size_t size,
size_t alignment,
size_t offset
);
Параметры
memblock
number
Число элементов.
size
alignment
offset
Возвращаемое значение
_aligned_offset_recalloc возвращает указатель void на перераспределенный (и,
Комментарии
Например _aligned_offset_malloc, _aligned_offset_recalloc позволяет выровнять
структуру по смещениям в структуре.
Эта функция задает для errno значение ENOMEM в случае сбоя выделения памяти, а
также если запрошенный размер ( number * size ) был больше _HEAP_MAXREQ .
Дополнительные сведения о , см. в errno разделе errno, _doserrnoи
_sys_nerr_sys_errlist. Кроме того, _aligned_offset_recalloc проверяет свои
параметры. Если alignment значение не равно 2 или offset не равно нулю и
больше запрошенного size , эта функция вызывает обработчик недопустимых
параметров, как описано в разделе "Проверка параметров". Если продолжение
выполнения разрешено, эта функция возвращает NULL и задает для errno значение
EINVAL .
Требования
Подпрограмма Обязательный заголовок
_aligned_offset_recalloc <malloc.h>
См. также раздел
Выравнивание данных
_recalloc
_aligned_recalloc
_aligned_offset_recalloc_dbg
Статья • 03.04.2023
Синтаксис
C
void * _aligned_offset_recalloc_dbg(
void *memblock,
size_t num,
size_t size,
size_t alignment,
size_t offset,
int linenumber
);
Параметры
memblock
number
Число элементов.
size
alignment
offset
filename
Указатель на имя исходного файла, который запросил операцию realloc или NULL .
linenumber
Номер строки в исходном файле, в котором была запрошена операция realloc, или
NULL .
Возвращаемое значение
_aligned_offset_recalloc_dbg возвращает указатель void на перераспределенный
Комментарии
_aligned_offset_realloc_dbg — отладочная версия _aligned_offset_recalloc функции.
Если _DEBUG параметр не определен, каждый вызов _aligned_offset_recalloc_dbg
сводится к вызову _aligned_offset_recalloc . И _aligned_offset_recalloc , и
_aligned_offset_recalloc_dbg перераспределять блок памяти в базовой куче, но
Требования
Подпрограмма Обязательный заголовок
_aligned_offset_recalloc_dbg <malloc.h>
Синтаксис
C
void * _aligned_realloc(
void *memblock,
size_t size,
size_t alignment
);
Параметры
memblock
size
alignment
Возвращаемое значение
_aligned_realloc возвращает указатель void на перераспределенный (и, возможно,
перемещенный) блок памяти. Возвращаемое значение — NULL если размер равен
нулю, а аргумент буфера — нет NULL , или если недостаточно доступной памяти для
расширения блока до заданного размера. В первом случае исходный блок
освобождается. Во втором случае исходный блок не изменяется. Возвращаемое
значение указывает на дисковое пространство, подходящее для хранения любого
типа объекта. Чтобы получить указатель на тип, отличающийся от void, используйте
приведение типа для возвращаемого значения.
Эта функция задает для errno значение ENOMEM в случае сбоя выделения памяти
или если запрошенный размер был больше _HEAP_MAXREQ . Дополнительные
сведения о , см. в errno разделе errno, _doserrnoи _sys_nerr_sys_errlist. Кроме того,
_aligned_realloc проверяет свои параметры. Если alignment значение не равно 2,
Требования
Подпрограмма Обязательный заголовок
_aligned_realloc <malloc.h>
Пример
Для получения дополнительной информации см. _aligned_malloc.
См. также
Выравнивание данных
_aligned_realloc_dbg
Статья • 03.04.2023
Синтаксис
C
void * _aligned_realloc_dbg(
void *memblock,
size_t size,
size_t alignment,
int linenumber
);
Параметры
memblock
size
alignment
filename
linenumber
Возвращаемое значение
_aligned_realloc_dbg возвращает указатель void на перераспределенный (и,
возможно, перемещенный) блок памяти. Возвращаемое значение равно NULL ,
если размер равен нулю, а аргумент буфера не NULL равен , или если недостаточно
доступной памяти для расширения блока до заданного размера. В первом случае
исходный блок освобождается. Во втором случае исходный блок не изменяется.
Возвращаемое значение указывает на дисковое пространство, подходящее для
хранения объектов любого типа. Чтобы получить указатель на тип, отличающийся
от void, используйте приведение типа для возвращаемого значения.
Комментарии
_aligned_realloc_dbg — отладочная версия _aligned_realloc функции. Если _DEBUG
больше пространства, чем запрошено newSize . newSize может быть больше или
меньше размера первоначально выделенного блока памяти. Дополнительное
пространство используется диспетчером кучи отладки для связывания блоков
памяти отладки и предоставления приложению сведений о заголовке отладки и
перезаписи буферов. Перераспределение может как переместить исходный блок
памяти в другое место в куче, так и изменить размер блока памяти. Если блок
памяти перемещен, содержимое исходного блока перезаписывается.
Требования
Подпрограмма Обязательный заголовок
_aligned_realloc_dbg <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Синтаксис
C
void * _aligned_recalloc(
void *memblock,
size_t num,
size_t size,
size_t alignment
);
Параметры
memblock
number
Число элементов.
size
alignment
Возвращаемое значение
_aligned_recalloc возвращает указатель void на перераспределенный (и,
возможно, перемещенный) блок памяти. Возвращаемое значение заключается в
том NULL , что размер равен нулю, а аргумент буфера не NULL равен или если
недостаточно доступной памяти для расширения блока до заданного размера. В
первом случае исходный блок освобождается. Во втором случае исходный блок не
изменяется. Возвращаемое значение указывает на дисковое пространство,
подходящее для хранения любого типа объекта. Чтобы получить указатель на тип,
отличающийся от void, используйте приведение типа для возвращаемого значения.
Комментарии
Функция _aligned_recalloc основана на функции malloc . Дополнительные
сведения об использовании _aligned_offset_malloc см. в разделе malloc.
Эта функция задает для errno значение ENOMEM в случае сбоя выделения памяти
или если запрошенный размер был больше _HEAP_MAXREQ . Дополнительные
сведения о errno , см. в разделе errno, , _doserrno_sys_errlistи _sys_nerr. Кроме того,
_aligned_recalloc проверяет свои параметры. Если alignment значение не равно 2,
Требования
Подпрограмма Обязательный заголовок
_aligned_recalloc <malloc.h>
_recalloc
_aligned_offset_recalloc
_aligned_recalloc_dbg
Статья • 03.04.2023
Синтаксис
C
void * _aligned_recalloc_dbg(
void * memblock,
size_t num,
size_t size,
size_t alignment,
int linenumber
);
Параметры
memblock
number
Число элементов.
size
alignment
filename
linenumber
Комментарии
_aligned_recalloc_dbg — отладочная версия _aligned_recalloc функции. Если _DEBUG
больше пространства, чем запрошено ( number * size ), что может быть больше или
меньше размера первоначально выделенного блока памяти. Дополнительное
пространство используется диспетчером кучи отладки для связывания блоков
памяти отладки и предоставления приложению сведений о заголовке отладки и
перезаписи буферов. Перераспределение может как переместить исходный блок
памяти в другое место в куче, так и изменить размер блока памяти.
Пользовательская часть блока заполняется значением 0xCD, а буферы перезаписи
заполняются 0xFD.
Требования
Подпрограмма Обязательный заголовок
_aligned_recalloc_dbg <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Выделение памяти в стеке. Эта функция устарела, так как доступна более
безопасная версия; см. раздел _malloca.
Синтаксис
C
void *_alloca(
size_t size
);
Параметры
size
Возвращаемое значение
Подпрограмма _alloca возвращает void указатель на выделенное пространство,
которое подходит для хранения любого типа объекта. Если значение size равно 0,
_alloca выделяет элемент нулевой длины и возвращает допустимый указатель на
этот элемент.
Комментарии
_alloca выделяет байты size из стека программ. Выделенное пространство
) Важно!
Требования
Подпрограмма Обязательный заголовок
_alloca <malloc.h>
Пример
C
// crt_alloca.c
#include <windows.h>
#include <stdio.h>
#include <malloc.h>
int main()
int errcode = 0;
__try {
// stack overflow.
size, pData);
else
printf_s("_alloca failed!\n");
errcode = _resetstkoflw();
_exit(1);
};
Output
Allocated 1000 bytes of stack at 0x0012FB50
calloc
malloc
realloc
_resetstkoflw
_malloca
_amsg_exit
Статья • 03.04.2023
Синтаксис
C++
Параметры
rterrnum
Комментарии
Эта функция выдает сообщение stderr об ошибке среды выполнения для
консольных приложений или отображает сообщение в окне сообщения для
приложений Windows. В режиме отладки перед выходом можно вызвать отладчик.
Требования
Подпрограмма Обязательный заголовок
_amsg_exit internal.h
and
Статья • 03.04.2023
Синтаксис
C
Remarks
Макрос возвращает оператор &&.
Пример
C++
// iso646_and.cpp
#include <iostream>
#include <iso646.h>
int main( )
boolalpha(cout);
result= a && b;
result= a and b;
Output
false
false
Требования
Заголовка:< iso646.h>
and_eq
Статья • 03.04.2023
Синтаксис
C
Remarks
Макрос возвращает оператор &=.
Пример
C++
// iso646_and_eq.cpp
#include <iostream>
#include <iso646.h>
int main( )
int a = 3, b = 2, result;
result= a &= b;
result= a and_eq b;
Output
Требования
Заголовка:< iso646.h>
asctime , _wasctime
Статья • 03.04.2023
Синтаксис
C
char *asctime(
);
wchar_t *_wasctime(
);
Параметры
timeptr
Структура даты/времени.
Возвращаемое значение
asctime возвращает указатель на результирующую строку символов; _wasctime
Комментарии
Доступны более безопасные версии этих функций; См. разделasctime_s ,
_wasctime_s.
Эти функции проверяют свои параметры. Если timeptr является пустым указателем
или содержит значения вне диапазона, вызывается обработчик недопустимых
параметров, как описано в разделе Проверка параметров. Если выполнение может
быть продолжено, функция возвращает NULL и устанавливает для параметра errno
значение EINVAL .
Требования
Подпрограмма Обязательный заголовок
asctime <time.h>
Пример
Эта программа помещает системное время в длинное целое число aclock ,
преобразует его в структуру newtime , а затем преобразует в строковую форму для
вывода с помощью asctime функции .
// crt_asctime.c
#include <time.h>
#include <stdio.h>
struct tm *newTime;
time_t szClock;
time( &szClock );
Output
_tzset
asctime_s, _wasctime_s
asctime_s , _wasctime_s
Статья • 03.04.2023
Синтаксис
C
errno_t asctime_s(
char* buffer,
size_t numberOfElements,
);
errno_t _wasctime_s(
wchar_t* buffer,
size_t numberOfElements
);
errno_t asctime_s(
char (&buffer)[size],
); // C++ only
errno_t _wasctime_s(
wchar_t (&buffer)[size],
); // C++ only
Параметры
buffer
numberOfElements
tmSource
Возвращаемое значение
Нуль при успешном завершении. В случае сбоя вызывается обработчик
недопустимых параметров, как описано в разделе Проверка параметров. Если
выполнение может быть продолжено, функция возвращает код ошибки. Коды
ошибок определенны в ERRNO.H. Дополнительные сведения см. в разделе errno
Константы. Фактические коды ошибок, возвращаемые для каждого условия
ошибки, приведены в следующей таблице.
Условия ошибок
7 Примечание
Комментарии
Функция asctime преобразует время, хранящееся в виде структуры, в символьную
строку. Значение tmSource обычно получается из вызова gmtime или localtime . Обе
функции могут использоваться для заполнения структуры tm , как определено в
файле TIME.H.
Член Значение
timeptr
tm_isdst Положительный результат, если летнее время действует; 0, если летнее время не
действует; отрицательное значение, если состояние летнего времени неизвестно.
Библиотека времени выполнения C принимает правила США для реализации
проверки на летнее время (DST).
Требования
Подпрограмма Обязательный заголовок
asctime_s <time.h>
Безопасность
Если указатель буфера не NULL указан, а указатель не указывает на допустимый
буфер, функция перезапишет все, что находится в расположении. Эта ошибка
также может привести к нарушению доступа.
Пример
Эта программа помещает системное время в длинное целое число aclock ,
преобразует его в структуру newtime , а затем преобразует его в строковую форму
для вывода с помощью asctime_s функции .
C
// crt_asctime_s.c
#include <time.h>
#include <stdio.h>
struct tm newtime;
__time32_t aclock;
char buffer[32];
errno_t errNum;
if (errNum)
return 1;
return 0;
Output
_tzset
asin , asinf , asinl
Статья • 03.04.2023
Вычисляет арксинус.
Синтаксис
C
Параметры
x
Возвращаемое значение
Функция asin возвращает арксинус (обратную функцию синуса) в x диапазоне
-π/2 до π/2 радиан.
Комментарии
Так как C++ допускает перегрузку, вы можете вызвать перегрузки asin с помощью
значений float и long double . В программе C, если вы не используете <tgmath.h>
макрос для вызова этой функции, asin всегда принимает и возвращает . double
Требования
Подпрограмма Обязательный заголовок (C) Обязательный заголовок (C++)
Пример
Дополнительные сведения см. в разделеacos , acosf, acosl.
_matherr
Синтаксис
C
Параметры
x
Возвращаемое значение
Функции asinh возвращают обратный гиперболический синус (гиперболический
синус дуги) из x . Эта функция допустима для домена чисел с плавающей запятой.
Если x является несигнальным значением NaN, неопределенным или
бесконечным, возвращается то же значение.
Комментарии
При использовании C++ можно вызывать перегрузки asinh , которые принимают
и возвращают значения float или long double . В программе на языке C, если вы
не используете <макрос tgmath.h> для вызова этой функции, asinh всегда
принимает и возвращает . double
Если вы используете <макрос tgmath.h> asinh() , тип аргумента определяет, какая
версия функции выбрана. Дополнительные сведения см. в статье Обобщенная
математика типов.
Требования
Компонент Обязательный заголовок C Обязательный заголовок C++
Пример
C
// crt_asinh.c
#include <math.h>
#include <stdio.h>
double pi = 3.1415926535;
double x, y;
x = sinh( pi / 4 );
y = asinh( x );
Output
Синтаксис
C
assert(
expression
);
void _assert(
unsigned line
);
void _wassert(
unsigned line
);
Параметры
expression
message
Отображаемое сообщение.
filename
line
Комментарии
Макрос assert обычно используется для выявления ошибок логики во время
разработки программы. Используйте его для остановки выполнения программы
при возникновении непредвиденных условий. Для этого реализуйте аргумент
expression так, чтобы он принимал значение false только в том случае, если
программа работает неправильно. Проверки утверждения можно отключить во
время компиляции, определив макрос NDEBUG . Макрос можно отключить assert ,
не изменяя исходные файлы, с помощью параметра командной /DNDEBUG строки.
Макрос assert можно отключить в исходном коде с помощью директивы #define
NDEBUG перед <assert.h> включением.
Требования
Подпрограмма Обязательный заголовок
// crt_assert.c
#include <stdio.h>
#include <assert.h>
#include <string.h>
analyze_string( test1 );
analyze_string( test2 );
analyze_string( test3 );
Output
A problem caused the program to stop working correctly. Windows will close
the program and notify you if a solution is available.
Если отладчик установлен, нажмите кнопку Отладка , чтобы запустить его, или
кнопку Закрыть программу , чтобы выйти.
abort
raise
signal
_DEBUG
_ASSERT , _ASSERTE , _ASSERT_EXPR
макросы
Статья • 03.04.2023
Синтаксис
C
// Typical usage:
_ASSERT( booleanExpression );
_ASSERTE( booleanExpression );
Параметры
booleanExpression
message
Комментарии
Макросы _ASSERT_EXPR , _ASSERT и _ASSERTE представляют собой простой и четкий
механизм, с помощью которого приложение может проверять условия во время
процесса отладки. Они гибкие, так как их не нужно заключать в #ifdef инструкции,
чтобы предотвратить их вызов в розничной сборке приложения. Эта гибкость
достигается с помощью макроса _DEBUG . Макросы _ASSERT_EXPR , _ASSERT и
_ASSERTE доступны только тогда, когда макрос _DEBUG определен во время
файла вывода.
_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_WNDW);
отладке.
Requirements (Требования)
Макрос Обязательный заголовок
Пример
В этой программе макросы _ASSERT и _ASSERTE вызываются для проверки условия
string1 == string2 . Если условие не выполняется, эти макросы выводят
диагностическое сообщение. Группа макросов _RPT и _RPTF также используется в
этой программе — в качестве альтернативы функции printf .
// crt_ASSERT_macro.c
//
//
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <crtdbg.h>
int main()
// or report macro.
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT);
_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDOUT);
_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT);
p1 = (char *)malloc(10);
p2 = (char *)malloc(10);
_RPT0(_CRT_WARN,
_RPTF2(_CRT_WARN, "\n Will _ASSERT find '%s' == '%s' ?\n", p1, p2);
_ASSERT(p1 == p2);
p1, p2);
_ASSERTE(p1 == p2);
free(p2);
free(p1);
return 0;
Output
Use the assert macros to evaluate the expression p1 == p2.
crt_ASSERT_macro.c(54) :
crt_ASSERT_macro.c(58) :
Синтаксис
C
Параметры
x, y
Все числа.
Возвращаемое значение
atan возвращает арктангенс x в диапазоне -π/2 в π/2 радианы. atan2 возвращает
арктангенс y / x в диапазоне -π для π радианы. Если значение x равно 0, atan
возвращает 0. Если оба параметра atan2 равны 0, функция возвращает значение 0.
Все результаты даются в радианах.
Комментарии
Функция atan вычисляет арктангенс (функцию обратного тангенса) x . atan2
вычисляет арктангенс y / x (если x равно 0; atan2 возвращает π/2; если y
положительно, -π/2, если y отрицательно, или 0, если y равно 0).
Так как C++ допускает перегрузку, можно вызывать перегрузки atan и atan2 ,
которые принимают float аргументы или long double . В программе на языке C,
если вы не используете <tgmath.h> макрос для вызова этой функции и atan2 atan
всегда принимаете double аргументы и возвращаете double .
Требования
Подпрограмма Обязательный Обязательный заголовок
заголовок (C) (C++)
Пример
C
// crt_atan.c
// arguments: 5 0.5
#include <math.h>
#include <stdio.h>
#include <errno.h>
double x, y, theta;
if( ac != 3 ){
return 1;
x = atof( av[1] );
theta = atan( x );
y = atof( av[2] );
theta = atan2( y, x );
return 0;
Output
_matherr
_CIatan
_CIatan2
atanh , atanhf , atanhl
Статья • 03.04.2023
Синтаксис
C
Параметры
x
Возвращаемое значение
Функции atanh возвращают обратный гиперболический тангенс (гиперболический
тангенс дуги) объекта x . Если x значение больше 1 или меньше -1, errno то для
параметра задано значение EDOM , а результатом будет неявное значение NaN. Если
x равняется 1 или -1, возвращается положительная или отрицательная
X ≥ 1; x ≤ -1 нет нет
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки atanh , которые
принимают и возвращают значения float или long double . В программе на языке
C, если вы не используете <макрос tgmath.h> для вызова этой функции, atanh
всегда принимает и возвращает . double
Требования
Компонент Заголовок C Заголовок C++
Пример
C
// crt_atanh.c
//
#include <math.h>
#include <stdio.h>
double pi = 3.1415926535;
double x, y;
x = tanh( pi / 4 );
y = atanh( x );
Output
tanh( 0.785398 ) = 0.655794
Синтаксис
C
int atexit(
);
Параметры
func
Возвращаемое значение
atexit возвращает 0 в случае успеха или ненулевое значение в случае ошибки.
Комментарии
Функция atexit передается адрес функции func , вызываемой при обычном
завершении программы. Последовательные вызовы функции atexit создают
регистр функций, которые выполняются в порядке LIFO (последним поступил —
первым обслужен). Переданные функции atexit не могут принимать параметры.
Для хранения регистра функций atexit и _onexit используют кучу. В связи с этим
количество функций, которое можно зарегистрировать, ограничивается только
памятью кучи.
atexit <stdlib.h>
Пример
Это программа отправляет четыре функции в стек функций, которые должны
выполняться при вызове atexit . При завершении работы программы эти
программы выполняются в обратном порядке.
// crt_atexit.c
#include <stdlib.h>
#include <stdio.h>
atexit( fn1 );
atexit( fn2 );
atexit( fn3 );
atexit( fn4 );
void fn1()
printf( "next.\n" );
void fn2()
void fn3()
void fn4()
Output
abort
_onexit, _onexit_m
_atodbl , _atodbl_l , _atoldbl ,
_atoldbl_l , _atoflt , _atoflt_l
Статья • 03.04.2023
Синтаксис
C
Параметры
value
str
locale
Возвращаемое значение
Возвращает 0 в случае успеха. Возможные коды ошибок,
_UNDERFLOW _OVERFLOW которые определены в файле <заголовка math.h>.
Комментарии
Эти функции преобразуют строку в значение с плавающей запятой. Разница между
этими функциями и atof семейством функций заключается в том, что эти функции
не создают код с плавающей запятой и не вызывают аппаратных исключений.
Вместо этого условия ошибок помечаются как коды ошибок.
Требования
Подпрограммы Обязательный заголовок
Пример
C
// crt_atodbl.c
#include <stdlib.h>
#include <stdio.h>
int main()
_CRT_DOUBLE dblval;
_CRT_FLOAT fltval;
int retval;
// Overflow.
return 0;
Output
Return value: 0
Return value: 0
Return value: 0
Return value: 3
Синтаксис
C
double atof(
);
double _atof_l(
_locale_t locale
);
double _wtof(
);
double _wtof_l(
_locale_t locale
);
Параметры
str
locale
Возвращаемое значение
Каждая функция возвращает значение double , которое создается за счет
интерпретации входных символов как числа. Возвращаемое значение равно 0,0,
если входные данные не могут быть преобразованы в значение этого типа.
Комментарии
Эти функции преобразуют строку символов в значение двойной точности с
плавающей запятой.
atof , _atof_l C: <math.h> или <stdlib.h> C++: <cstdlib> , <stdlib.h> или <cmath> <math.h>
_wtof , _wtof_l C: <stdlib.h> или <wchar.h> C++: <cstdlib> , <stdlib.h> или <wchar.h>
Пример
Эта программа показывает, как числа, хранящиеся в виде строки, можно
преобразовать в числовые значения с помощью функции atof и _atof_l .
// crt_atof.c
//
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
int main(void)
double value = 0;
value = atof(str);
str = "3.1412764583E210";
value = atof(str);
value = atof(str);
Output
См. также:
Преобразование данных
_ecvt
_fcvt
_gcvt
setlocale, _wsetlocale
Синтаксис
C
int atoi(
);
int _wtoi(
);
int _atoi_l(
_locale_t locale
);
int _wtoi_l(
_locale_t locale
);
Параметры
str
locale
Возвращаемое значение
Каждая функция возвращает значение int , которое создается за счет
интерпретации входных символов как числа. Возвращаемое значение равно 0 для
atoi и _wtoi , если входные данные не могут быть преобразованы в значение этого
типа.
Комментарии
Эти функции преобразуют символьную строку в целое значение ( atoi и _wtoi ).
Входная строка представляет собой последовательность символов, которые могут
обрабатываться как числовое значение указанного типа. Функция прекращает
чтение входной строки на первом символе, который она не может распознать как
часть числа. Этот символ может быть нуль-символом ("\0" или L"\0"), которым
завершается строка.
несколько цифр.
Требования
Подпрограммы Обязательный заголовок
atoi <stdlib.h>
Пример
Эта программа показывает, как числа, хранящиеся в виде строки, можно
преобразовать в числовые значения с помощью функции atoi .
// crt_atoi.c
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
int value = 0;
str = "31412764";
str = "3336402735171707160320";
if (errno == ERANGE)
Output
Function: atoi( " -2309 " ) = -2309
См. также:
Преобразование данных
_ecvt
_fcvt
_gcvt
setlocale, _wsetlocale
Синтаксис
C
__int64 _atoi64(
);
__int64 _wtoi64(
);
__int64 _atoi64_l(
_locale_t locale
);
__int64 _wtoi64_l(
_locale_t locale
);
Параметры
str
locale
Возвращаемое значение
Каждая функция возвращает значение __int64 , которое создается за счет
интерпретации входных символов как числа. Возвращаемое значение равно 0,
если _atoi64 входные данные не могут быть преобразованы в значение этого типа.
Комментарии
Эти функции преобразуют символьную строку в 64-разрядное целое значение.
цифрами.
Требования
Подпрограммы Обязательный заголовок
Пример
Эта программа показывает, как числа, хранящиеся в виде строки, можно
преобразовать в числовые значения с помощью функции _atoi64 .
// crt_atoi64.c
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
__int64 value = 0;
str = "314127.64";
str = "3336402735171707160320";
if (errno == ERANGE)
Output
См. также:
Преобразование данных
_ecvt
_fcvt
_gcvt
setlocale, _wsetlocale
Синтаксис
C
long atol(
);
long _atol_l(
_locale_t locale
);
long _wtol(
);
long _wtol_l(
_locale_t locale
);
Параметры
str
locale
Возвращаемое значение
Каждая функция возвращает значение long , которое создается за счет
интерпретации входных символов как числа. Возвращаемое значение
предназначено 0L для atol того, если входные данные не могут быть
преобразованы в значение этого типа.
Комментарии
Эти функции преобразуют символьную строку в длинное целое значение ( atol ).
цифрами.
Требования
Подпрограммы Обязательный заголовок
atol <stdlib.h>
Пример
Эта программа показывает, как числа, хранящиеся в виде строки, можно
преобразовать в числовые значения с помощью функции atol .
// crt_atol.c
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
long value = 0;
str = "314127.64";
str = "3336402735171707160320";
if (errno == ERANGE)
Output
См. также:
Преобразование данных
_ecvt
_fcvt
_gcvt
setlocale, _wsetlocale
Синтаксис
C
);
);
_locale_t locale
);
_locale_t locale
);
Параметры
str
locale
Возвращаемое значение
Каждая функция возвращает значение long long , которое создается за счет
интерпретации входных символов как числа. Возвращаемое значение равно atoll
0, если входные данные не могут быть преобразованы в значение этого типа.
Комментарии
Эти функции преобразуют символьную строку в целое значение long long .
цифрами.
Требования
Подпрограммы Обязательный заголовок
Пример
Эта программа показывает, как преобразовывать числа, хранящиеся в виде строк, в
числовые значения с помощью функции atoll .
// crt_atoll.c
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
int main(void)
value = atoll(str);
str = "314127.64";
value = atoll(str);
str = "3336402735171707160320";
value = atoll(str);
if (errno == ERANGE)
Output
См. также:
Преобразование данных
_ecvt
_fcvt
_gcvt
setlocale, _wsetlocale
Создает поток.
Синтаксис
C++
unsigned stack_size,
void *arglist
);
unsigned stack_size,
void *arglist
);
void *security,
unsigned stack_size,
void *arglist,
unsigned initflag,
unsigned *thrdaddr
);
void *security,
unsigned stack_size,
void *arglist,
unsigned initflag,
unsigned *thrdaddr
);
Параметры
start_address
arglist
Security
initflag
thrdaddr
Возвращаемое значение
В случае успеха каждая из этих функций возвращает дескриптор во вновь
созданный поток; однако если вновь созданный поток выполняет выход слишком
быстро, _beginthread может не возвращать допустимый дескриптор. (См.
обсуждение в разделе "Примечания".) При ошибке _beginthread возвращает
значение -1L и errno устанавливается значение EAGAIN , если слишком много
потоков, если EINVAL аргумент недопустим или размер стека неправильный, или
EACCES если недостаточно ресурсов (например, памяти). При возникновении
ошибки _beginthreadex возвращает 0, а errno и _doserrno заданы.
Комментарии
Функция _beginthread создает поток, который начинает выполнение процедуры в
start_address . В процедуре start_address необходимо использовать __cdecl (для
машинного кода) или соглашение о вызовах __clrcall (для управляемого кода);
там не должно быть возвращаемого значения. Когда поток возвращается из этой
подпрограммы, он завершается автоматически. Дополнительные сведения о
потоках см. в статье о поддержке многопоточности для более старого кода (Visual
C++).
потока.
7 Примечание
этих функций. Кроме того, аргумент stack_size может быть 0, в случае чего
операционная система использует то же значение, что и стек, указанный для
основного потока.
arglist — это параметр для передачи только что созданному потоку. Как правило,
это адрес элемента данных, например символьной строки. arglist может быть
NULL , если оно не требуется, но _beginthread _beginthreadex должно быть
предоставлено некоторое значение для передачи в новый поток. Все потоки
завершаются, если какой-либо поток вызывает метод abort, exit , _exit или
ExitProcess .
Для /clr кода _beginthread и _beginthreadex каждая из них имеет две перегрузки.
Один принимает собственный указатель функции соглашения о вызовах, а другой
— __clrcall указатель функции. Первая перегрузка не является безопасной для
домена приложения и никогда не будет. При написании /clr кода необходимо
убедиться, что новый поток входит в правильный домен приложения, прежде чем
он будет обращаться к управляемым ресурсам. Это можно сделать, например, с
помощью call_in_appdomain. Вторая перегрузка является доменобезопасной;
только что созданный поток всегда завершается в домене приложения
вызывающего объекта _beginthread или _beginthreadex .
Требования
Подпрограмма Обязательный заголовок
_beginthread <process.h>
_beginthreadex <process.h>
Библиотеки
Только многопоточные версии библиотек времени выполнения языка C .
Примеры
В следующем примере используются _beginthread и _endthread .
C
// crt_BEGTHRD.C
// processor: x86
#include <windows.h>
#include <stddef.h>
#include <stdlib.h>
#include <conio.h>
int main()
int param = 0;
param++;
Sleep( 1000L );
_getch();
//
CHAR_INFO ci;
DWORD result;
SMALL_RECT region;
cellsize.X = cellsize.Y = 1;
origin.X = origin.Y = 0;
srand( _threadid );
while (repeat)
Sleep( 100L );
// Blank out our old position on the screen, and draw new letter.
oldcoord.X = region.Left;
oldcoord.Y = region.Top;
else
continue;
_endthread();
сигнальное состояние.
C++
// crt_begthrdex.cpp
#include <windows.h>
#include <stdio.h>
#include <process.h>
unsigned Counter;
Counter++;
_endthreadex( 0 );
return 0;
int main()
HANDLE hThread;
unsigned threadID;
// Wait until second thread terminates. If you comment out the line
// below, Counter will not be correct because the thread has not
// 1000000 yet.
Output
In second thread...
Синтаксис
C
double _j0(
double x
);
double _j1(
double x
);
double _jn(
int n,
double x
);
double _y0(
double x
);
double _y1(
double x
);
double _yn(
int n,
double x
);
Параметры
x
Возвращаемое значение
Каждая из этих процедур возвращает функцию Бесселя x . Если x имеет
отрицательное значение в функции _y0 , _y1 или _yn , процедура устанавливает
errno в значение EDOM , выводит сообщение об ошибке _DOMAIN в stderr и
Комментарии
Процедуры _j0 , _j1 и _jn возвращают функции Бесселя первого типа: порядка 0, 1
и n соответственно.
Процедуры _y0 , _y1 и _yn возвращают функции Бесселя второго типа: порядка 0, 1
и n соответственно.
±0 ZERODIVIDE _SING
Требования
Подпрограмма Обязательный заголовок
_j0 , _j1 , _jn , _y0 , _y1 , _yn <cmath> (C++), <math.h> (C, C++)
Пример
C
// crt_bessel1.c
#include <math.h>
#include <stdio.h>
double x = 2.387;
int n = 3, c;
Output
Синтаксис
C
Remarks
Макрос создает оператор
Пример
C++
// iso646_bitand.cpp
#include <iostream>
#include <iso646.h>
int main( )
int a = 1, b = 2, result;
result = a & b;
result= a bitand b;
Output
Требования
Заголовка:< iso646.h>
bitor
Статья • 03.04.2023
Альтернатива оператору | .
Синтаксис
C
#define bitor |
Remarks
Макрос возвращает оператор | .
Пример
C++
// iso646_bitor.cpp
#include <iostream>
#include <iso646.h>
int main( )
int a = 1, b = 2, result;
result = a | b;
result= a bitor b;
Output
Требования
Заголовка:< iso646.h>
bsearch
Статья • 03.04.2023
Синтаксис
C
void *bsearch(
size_t num,
size_t width,
);
Параметры
key
base
number
Число элементов.
width
Ширина элементов.
compare
Возвращаемое значение
Функция bsearch возвращает указатель на вхождение key в массиве, на который
указывает base . Если key не найдено, функция возвращает . NULL Если массив не
находится в порядке сортировки по возрастанию или содержит повторяющиеся
записи с идентичными ключами, результат будет непредсказуемым.
Комментарии
Функция bsearch выполняет двоичный поиск по отсортированному массиву,
состоящему из number элементов размером width байт каждый. Значение base —
это указатель на начало массива, в котором должен производиться поиск, а key —
искомое значение. Параметр compare — это указатель на предоставленную
пользователем подпрограмму, которая сравнивает запрошенный ключ с
элементом массива. Он возвращает одно из следующих значений, указывающих их
связь:
Эта функция проверяет свои параметры. Если compare значение равно или
key number равно или ненулевое base NULL number NULL значение или width равно
Требования
Подпрограмма Обязательный заголовок
Пример
Программа сортирует массив строк с помощью qsort, а затем использует bsearch
для поиска слова "cat".
// crt_bsearch.c
#include <search.h>
#include <string.h>
#include <stdio.h>
char **result;
int i;
if( result )
else
Output
_lfind
_lsearch
qsort
bsearch_s
Статья • 03.04.2023
Синтаксис
C
void *bsearch_s(
size_t number,
size_t width,
int ( __cdecl *compare ) ( void *, const void *key, const void *datum),
void * context
);
Параметры
key
base
number
Число элементов.
width
Ширина элементов.
compare
context
Условия ошибок
Комментарии
Функция bsearch_s выполняет двоичный поиск по отсортированному массиву,
состоящему из number элементов размером width байт каждый. Значение base —
это указатель на начало массива, в котором должен производиться поиск, а key —
искомое значение. Параметр compare — это указатель на предоставляемую
пользователем подпрограмму, которая сравнивает заданный ключ с элементом
массива и возвращает одно из следующих значений, показывающих, как
соотносятся значения ключа и элемента массива:
Требования
Подпрограмма Обязательный заголовок
Пример
Эта программа сортирует строковый массив, qsort_sа затем использует bsearch_s
для поиска слова "cat".
C++
// crt_bsearch_s.cpp
#include <stdlib.h>
#include <stdio.h>
#include <search.h>
#include <process.h>
#include <locale.h>
#include <locale>
#include <windows.h>
// The sort order is dependent on the code page. Use 'chcp' at the
// the command prompt codepage must match the codepage used here:
#define CODEPAGE_850
#ifdef CODEPAGE_850
#endif
#ifdef CODEPAGE_1252
#endif
s1, s1+strlen(s1),
s2, s2+strlen(s2) );
char **result;
int i;
qsort_s( arr,
sizeof(arr)/sizeof(arr[0]),
sizeof( char * ),
&locale(ENGLISH_LOCALE) );
arr,
sizeof(arr)/sizeof(arr[0]),
sizeof( char * ),
&locale(ENGLISH_LOCALE) );
if( result )
else
Output
_lfind
_lsearch
qsort
btowc
Статья • 03.04.2023
Синтаксис
C
wint_t btowc(
int character
);
Параметры
character
Возвращаемое значение
Возвращает представление символа в виде расширенного символа, если целое
число представляет допустимый однобайтовый символ в начальном состоянии
сдвига. Возвращает значение WEOF , если целое число является EOF допустимым
однобайтовый символ в начальном состоянии сдвига. Выходные данные этой
функции зависят от текущего языкового стандарта LC_TYPE .
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Сведения об изменении этого поведения см. в разделе "Глобальное состояние" в
CRT.
Требования
Подпрограмма Обязательный заголовок
Синтаксис
C
Параметры
val
Требования
Подпрограмма Обязательный заголовок
_byteswap_ushort <stdlib.h>
_byteswap_ulong <stdlib.h>
_byteswap_uint64 <stdlib.h>
Пример
C
// crt_byteswap.c
#include <stdlib.h>
int main()
Output
Синтаксис
C
size_t c16rtomb(
char *mbchar,
char16_t wchar,
mbstate_t *state
);
size_t c32rtomb(
char *mbchar,
char32_t wchar,
mbstate_t *state
);
Параметры
mbchar
wchar
state
Возвращаемое значение
Число байтов, сохраняемых в объекте массива mbchar , включая все
последовательности сдвигов. Если wchar не является допустимым расширенным
символом, возвращается значение ( size_t -1) и errno EILSEQ значение state не
указано.
Комментарии
Функция c16rtomb преобразует символ wchar UTF-16 LE в эквивалентную
многобайтовую узкую последовательность символов UTF-8. Если mbchar не
является пустым указателем, функция сохраняет преобразованную
последовательность в объекте массива, на который указывает mbchar . До
MB_CUR_MAX байтов сохраняется в mbchar , а state устанавливается в итоговое
состояние многобайтового сдвига.
Требования
Подпрограмма Обязательный заголовок
См. также:
Преобразование данных
Локаль
mbrtoc16, mbrtoc32
wcrtomb
wcrtomb_s
cabs , cabsf , cabsl
Статья • 03.04.2023
Синтаксис
C
double cabs(
_Dcomplex z
);
float cabs(
_Fcomplex z
); // C++ only
_Lcomplex z
); // C++ only
float cabsf(
_Fcomplex z
);
_Lcomplex z
);
Параметры
z
Комплексное число.
Возвращаемое значение
Абсолютное значение параметра z .
Комментарии
Так как C++ допускает перегрузку, можно вызывать перегрузки cabs , которые
принимают значения _Fcomplex или _Lcomplex и возвращают значения float или
long double . В программе на языке C cabs всегда принимает значение _Dcomplex и
возвращает значение double .
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
double _cabs(
struct _complex z
);
Параметры
z
Комплексное число.
Возвращаемое значение
При успешном выполнении функция _cabs возвращает абсолютное значение
своего аргумента. При переполнении _cabs возвращает HUGE_VAL и задает errno в
ERANGE . Вы можете изменить обработку ошибок с помощью _matherr.
Комментарии
Функция _cabs вычисляет абсолютное значение комплексного числа, которое
должно быть структурой типа _complex. Структура z состоит из вещественной
части x и мнимой части y . Вызов, который _cabs создает значение, эквивалентное
выражению sqrt( z.x * z.x + z.y * z.y ) .
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
_cabs <math.h>
Пример
C
// crt_cabs.c
#include <math.h>
#include <stdio.h>
double d;
d = _cabs( number );
number.x, number.y, d );
Output
Синтаксис
C
C++
Параметры
z
Возвращаемое значение
Арка косиана z , в радианах. Результат несвязан вдоль мнимой оси и ограничен
интервалом [0, π] вдоль реальной оси. Если z не попадает в интервал [−1, +1],
возникает ошибка домена.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки cacos , которые
принимают и возвращают значения _Fcomplex и _Lcomplex . В программе на языке
C cacos всегда принимает и возвращает значение _Dcomplex .
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
_Dcomplex cacosh(
_Dcomplex z
);
_Fcomplex cacosh(
_Fcomplex z
); // C++ only
_Lcomplex cacosh(
_Lcomplex z
); // C++ only
_Fcomplex cacoshf(
_Fcomplex z
);
_Lcomplex cacoshl(
_Lcomplex z
);
Параметры
z
Возвращаемое значение
Обратный гиперболический косинус аргумента z в радианах. Результат
необязательный и неотрицательный вдоль реальной оси и в интервале [-iπ, +iπ]
вдоль мнимой оси.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки cacosh ,
которые принимают и возвращают значения _Fcomplex и _Lcomplex . В программе
на языке C cacosh всегда принимает и возвращает значение _Dcomplex .
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C++
int _callnewh(
size_t size
Параметры
size
Возвращаемое значение
Значение Описание
Исключения
Эта функция вызывает bad_alloc исключение, new если не удается найти
обработчик.
Комментарии
Обработчик new вызывается, если операторуnew не удается выделить память.
Затем new обработчик может инициировать какое-либо соответствующее
действие, например освободить память, чтобы последующие выделения были
успешными.
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, см. статью Глобальное состояние в CRT.
Требования
Подпрограмма Обязательный заголовок
_callnewh internal.h
_set_new_mode
calloc
Статья • 03.04.2023
Синтаксис
C
void *calloc(
size_t number,
size_t size
);
Параметры
number
Число элементов.
size
Возвращаемое значение
calloc возвращает указатель на выделенную память. Пространство хранилища, на
которое указывает возвращаемое значение, хорошо выравнивается для хранения
объектов любого типа. Чтобы получить указатель на тип, отличный от void ,
используйте приведение типов для возвращаемого значения.
Комментарии
Функция calloc выделяет пространство для хранения массива из number
элементов, каждый из которых имеет размер size . Каждый элемент
инициализируется значением 0.
Функция calloc задает для параметра errno в значение ENOMEM , если выделение
памяти завершается сбоем или количество запрошенной памяти превышает
_HEAP_MAXREQ . Сведения об этом и других кодах ошибок см. в разделе errno,
_doserrno, _sys_errlistи _sys_nerr.
В реализации Майкрософт, если number или size равно нулю, calloc возвращает
указатель на выделенный блок ненулевых размеров. Попытка чтения или записи с
помощью возвращаемого указателя приводит к неопределенному поведению.
_set_new_mode(1);
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_calloc.c
#include <stdio.h>
#include <malloc.h>
long *buffer;
else
free( buffer );
Output
free
malloc
realloc\
_calloc_dbg
Статья • 03.04.2023
Синтаксис
C
void *_calloc_dbg(
size_t num,
size_t size,
int blockType,
int linenumber
);
Параметры
number
size
blockType
filename
linenumber
Комментарии
_calloc_dbg — отладочная версия calloc функции. Если _DEBUG параметр не
_calloc_dbg задает для errno значение ENOMEM в случае сбоя выделения памяти;
значение EINVAL возвращается, если необходимый объем памяти (включая ранее
упомянутую нагрузку) превышает _HEAP_MAXREQ . Сведения об этом и других кодах
ошибок см. в разделе errno, _doserrno, _sys_errlistи _sys_nerr.
Требования
Подпрограмма Обязательный заголовок
_calloc_dbg <crtdbg.h>
Пример
C
// crt_callocd.c
#include <stdio.h>
#include <malloc.h>
#include <crtdbg.h>
else
free( bufferN );
Output
calloc
_malloc_dbg
_DEBUG
carg , cargf , cargl
Статья • 03.04.2023
Синтаксис
C
double carg(
_Dcomplex z
);
float carg(
_Fcomplex z
); // C++ only
_Lcomplex z
); // C++ only
float cargf(
_Fcomplex z
);
_Lcomplex z
);
Параметры
z
Комплексное число.
Возвращаемое значение
Аргумент (или "этап") функции z . Результатом является интервал [-π, +π].
Комментарии
Так как C++ допускает перегрузку, можно вызывать перегрузки carg , которые
принимают значения _Fcomplex или _Lcomplex и возвращают значения float или
long double . В программе C, если вы не используете <макрос tgmath.h> для вызова
этой функции, carg всегда принимает _Dcomplex значение и возвращает double
значение.
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
_Dcomplex casin(
_Dcomplex z
);
_Fcomplex casin(
_Fcomplex z
); // C++ only
_Lcomplex casin(
_Lcomplex z
); // C++ only
_Fcomplex casinf(
_Fcomplex z
);
_Lcomplex casinl(
_Lcomplex z
);
Параметры
z
Возвращаемое значение
Арксинус z в радианах. Результат несвязан вдоль мнимой оси и в интервале [-π/2,
+π/2] вдоль реальной оси.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки casin , которые
принимают и возвращают значения _Fcomplex и _Lcomplex . В программе на языке
C casin всегда принимает и возвращает значение _Dcomplex .
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
_Dcomplex casinh(
_Dcomplex z
);
_Fcomplex casinh(
_Fcomplex z
); // C++ only
_Lcomplex casinh(
_Lcomplex z
); // C++ only
_Fcomplex casinhf(
_Fcomplex z
);
_Lcomplex casinhl(
_Lcomplex z
);
Параметры
z
Возвращаемое значение
Обратный гиперболический синус аргумента z в радианах. Результат несвязан
вдоль реальной оси и в интервале [-iπ/2, +iπ/2] вдоль мнимой оси.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки casinh ,
которые принимают и возвращают значения _Fcomplex и _Lcomplex . В программе
на языке C casinh всегда принимает и возвращает значение _Dcomplex .
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
C++
Параметры
z
Возвращаемое значение
Арктангенс z в радианах. Результат несвязан вдоль мнимой оси и в интервале [-
π/2; +π/2] вдоль реальной оси.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки catan , которые
принимают и возвращают значения _Fcomplex и _Lcomplex . В программе на языке
C catan всегда принимает и возвращает значение _Dcomplex .
Требования
Подпрограмма Заголовок C Заголовок C++
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
_Dcomplex catanh(
_Dcomplex z
);
_Fcomplex catanh(
_Fcomplex z
); // C++ only
_Lcomplex catanh(
_Lcomplex z
); // C++ only
_Fcomplex catanhf(
_Fcomplex z
);
_Lcomplex catanhl(
_Lcomplex z
);
Параметры
z
Возвращаемое значение
Обратный гиперболический тангенс аргумента z в радианах. Результат несвязан
вдоль реальной оси и в интервале [-iπ/2; +iπ/2] вдоль мнимой оси. Если z не
попадает в интервал [−1, +1], возникает ошибка домена. Если z имеет значение −1
или +1, возникает ошибка полюса.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки catanh ,
которые принимают и возвращают значения _Fcomplex и _Lcomplex . В программе
на языке C catanh всегда принимает и возвращает значение _Dcomplex .
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
double cbrt(
double x
);
float cbrt(
float x
); // C++ only
long double x
); // C++ only
float cbrtf(
float x
);
long double x
);
Параметры
x
Возвращаемое значение
Функции cbrt возвращают кубический корень x .
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки cbrt , которые
принимают типы float или long double . В программе на языке C, если вы не
используете <макрос tgmath.h> для вызова этой функции, cbrt всегда принимает и
возвращает . double
Требования
Компонент Заголовок C Заголовок C++
Пример
C
// crt_cbrt.c
#include <math.h>
#include <stdio.h>
double answer;
answer = cbrt(question);
Output
Синтаксис
C
Параметры
real
imaginary
Возвращаемое значение
, _Dcomplex или _Lcomplex структура, представляющая комплексное число ( real *
imaginary i) для значений указанного типа с плавающей _Fcomplex запятой.
Комментарии
_FCbuild Функции _Cbuild и _LCbuild функции упрощают создание сложных типов.
Используйте функции , creallcrealfчтобы получить реальные и воображаемые части
представленных сложных чисел.crealcimagcimagfcimagl
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
_Dcomplex ccos(
_Dcomplex z
);
_Fcomplex ccos(
_Fcomplex z
); // C++ only
_Lcomplex ccos(
_Lcomplex z
); // C++ only
_Fcomplex ccosf(
_Fcomplex z
);
_Lcomplex ccosl(
_Lcomplex z
);
Параметры
z
Возвращаемое значение
Косинус z в радианах.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки ccos , которые
принимают и возвращают значения _Fcomplex и _Lcomplex . В программе на языке
C ccos всегда принимает и возвращает значение _Dcomplex .
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
_Dcomplex ccosh(
_Dcomplex z
);
_Fcomplex ccosh(
_Fcomplex z
); // C++ only
_Lcomplex ccosh(
_Lcomplex z
); // C++ only
_Fcomplex ccoshf(
_Fcomplex z
);
_Lcomplex ccoshl(
_Lcomplex z
);
Параметры
z
Возвращаемое значение
Гиперболический косинус аргумента z в радианах.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки ccosh , которые
принимают и возвращают значения _Fcomplex и _Lcomplex . В программе на языке
C ccosh всегда принимает и возвращает значение _Dcomplex .
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
double ceil(
double x
);
float ceil(
float x
); // C++ only
long double x
); // C++ only
float ceilf(
float x
);
long double x
);
Параметры
x
Возвращаемое значение
Функции ceil возвращают значение с плавающей запятой, которое представляет
наименьшее целое число, большее или равное x . Ошибка не возвращается.
Требования
Подпрограмма Обязательный заголовок
Пример
См. пример для floor.
fmod, fmodf
Синтаксис
C
Remarks
Функция _cexit вызывает функции, зарегистрированные atexit и _onexit , в
обратном порядке. Перед возвратом _cexit очищает все буферы ввода-вывода и
закрывает все открытые потоки. Функция _c_exit аналогична функции _exit , но
возвращается к вызывающему процессу без обработки atexit или _onexit либо
очистки буферов потоков. Поведение exit , _exit _cexit и _c_exit показано в
следующей таблице.
Функция Поведение
При вызове _cexit или _c_exit функции деструкторы для любых временных или
автоматических объектов, существующих во время вызова, не вызываются.
Автоматический объект — это объект, определенный в функции, в которой объект
не объявлен как статический. Временный объект — это объект, созданный
компилятором. Чтобы удалить автоматический объект перед вызовом _cexit или
_c_exit , явным образом вызовите деструктор объекта следующим образом:
C++
myObject.myClass::~myClass( );
Требования
Подпрограмма Обязательный заголовок
_cexit <process.h>
_c_exit <process.h>
abort
atexit
_onexit, _onexit_m
system, _wsystem
cexp , cexpf , cexpl
Статья • 03.04.2023
Синтаксис
C
Параметры
z
Возвращаемое значение
Значение e , возведенное в степень z .
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки cexp , которые
принимают и возвращают значения _Fcomplex и _Lcomplex . В программе на языке
C cexp всегда принимает и возвращает значение _Dcomplex .
Требования
Подпрограмма Заголовок C Заголовок C++
) Важно!
) Важно!
Синтаксис
C
errno_t _cgets_s(
char *buffer,
size_t numberOfElements,
size_t *pSizeRead
);
errno_t _cgetws_s(
wchar_t *buffer
size_t numberOfElements,
size_t *pSizeRead
);
errno_t _cgets_s(
char (&buffer)[size],
size_t *pSizeRead
); // C++ only
errno_t _cgetws_s(
wchar_t (&buffer)[size],
size_t *pSizeRead
); // C++ only
Параметры
buffer
pSizeRead
Возвращаемое значение
При успешном выполнении возвращается ноль, в противном случае возвращается
код ошибки.
Условия ошибок
Комментарии
_cgets_s и _cgetws_s читают строки из консоли и копируют ее (с нулевым
Версии библиотек отладки этих функций сначала заполняют буфер 0xFE. Чтобы
отключить это поведение, используйте _CrtSetDebugFillThreshold.
Требования
Подпрограмма Обязательный заголовок
_cgets_s <conio.h>
_getch, _getwch
chdir
Статья • 03.04.2023
) Важно!
Синтаксис
C
int _chdir(
);
int _wchdir(
);
Параметры
dirname
Возвращаемое значение
В случае успешного выполнения эти функции возвращают значение 0.
Возвращаемое значение -1 указывает на сбой. Если не удалось найти указанный
путь, errno задается значение ENOENT . В dirname противном NULL случае вызывается
обработчик недопустимых параметров, как описано в разделе "Проверка
параметров". Если выполнение может быть продолжено, параметр errno
устанавливается в значение EINVAL и функция возвращает –1.
Комментарии
Функция _chdir изменяет текущий рабочий каталог на каталог, указанный в
dirname . Параметр dirname должен ссылаться на существующий каталог. Эта
_chdir("c:\\temp");
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
Пример
C
// crt_chdir.c
// arguments: C:\WINDOWS
#include <direct.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
if(_chdir( argv[1] ) )
switch (errno)
case ENOENT:
break;
case EINVAL:
break;
default:
else
Output
Directory of c:\windows
_mkdir, _wmkdir
_rmdir, _wrmdir
system, _wsystem
_chdrive
Статья • 03.04.2023
) Важно!
Синтаксис
C
int _chdrive(
int drive
);
Параметры
drive
Возвращаемое значение
Ноль (0), если текущий рабочий диск был успешно изменен; в противном случае
возвращается −1.
Комментарии
Если drive значение не находится в диапазоне от 1 до 26, обработчик
недопустимых параметров вызывается, как описано в разделе "Проверка
параметров". Если выполнение разрешено продолжить, _chdrive функция
возвращает значение -1, errno имеет значение EACCES , и _doserrno имеет значение
ERROR_INVALID_DRIVE .
Функция _chdrive не является потокобезопасной, так как она зависит от
SetCurrentDirectory функции, которая сама по себе не является потокобезопасной.
Чтобы безопасно использовать _chdrive в многопотоковом приложении,
необходимо обеспечить собственную синхронизацию потоков. Для получения
дополнительной информации см. SetCurrentDirectory.
Требования
Подпрограмма Обязательный заголовок
_chdrive <direct.h>
Пример
См. пример для _getdrive.
_chdir, _wchdir
_fullpath, _wfullpath
_getcwd, _wgetcwd
_getdrive
_mkdir, _wmkdir
_rmdir, _wrmdir
system, _wsystem
_chgsign , _chgsignf , _chgsignl
Статья • 03.04.2023
Синтаксис
C
double _chgsign(
double x
);
float _chgsignf(
float x
);
long double x
);
Параметры
x
Возвращаемое значение
Функции _chgsign возвращают значение, равное аргументу с плавающей запятой
x , но с противоположным знаком. Ошибка не возвращается.
Требования
Подпрограмма Обязательный заголовок
_chgsign <float.h>
Синтаксис
C
Параметры
filename
pmode
Возвращаемое значение
Эти функции возвращают 0, если параметр разрешений успешно изменен.
Возвращаемое значение -1 указывает на сбой. Если не удалось найти указанный
файл, errno задано значение ENOENT ; если параметр недопустим, errno задано
значение EINVAL .
Комментарии
Функция _chmod изменяет параметр разрешений для файла, указанный с помощью
функции filename . Параметр разрешений управляет чтением и записью в файл.
Целочисленное выражение pmode содержит одну или обе из следующих констант
манифеста, определенных в файле SYS\Stat.h.
pmode Значение
Эта функция проверяет свои параметры. Если pmode не является сочетанием одной
из констант манифеста или включает альтернативный набор констант, функция
просто игнорирует их. В filename противном NULL случае вызывается обработчик
недопустимых параметров, как описано в разделе "Проверка параметров". Если
выполнение может быть продолжено, параметр errno устанавливается в значение
EINVAL и функция возвращает –1.
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
// crt_chmod.c
//
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
switch (errno)
case EINVAL:
break;
case ENOENT:
break;
default:
else
if (mask == _S_IREAD)
fflush(stderr);
Output
A line of text.
Output
Access is denied.
_access, _waccess
_creat, _wcreat
_open, _wopen
Синтаксис
C
int _chsize(
int fd,
long size
);
Параметры
fd
size
Возвращаемое значение
_chsize возвращает значение 0, если размер файла успешно изменен.
Возвращаемое значение -1 указывает на ошибку: errno задано значение EACCES ,
если указанный файл доступен только для чтения или указанный файл
заблокирован для доступа, если EBADF дескриптор недопустим, ENOSPC если на
устройстве не осталось места или EINVAL size меньше нуля.
Комментарии
Функция _chsize расширяет или усекает файл, связанный с fd , до длины,
указанной size . Файл должен быть открыт в режиме, позволяющем выполнять
запись. Если файл доступен для расширения, к нему добавляются нули ('\0'). Если
файл усекается, все данные в конце сокращенного файла усекаются до длины
исходного файла.
Эта функция проверяет свои параметры. Если size значение меньше нуля или fd
является недопустимым дескриптором файла, вызывается обработчик
недопустимых параметров, как описано в разделе "Проверка параметров".
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
Пример
C
// crt_chsize.c
#include <io.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <share.h>
// Open a file
_S_IREAD | _S_IWRITE ) == 0 )
else
_close( fh );
Output
_close
_sopen, _wsopen
_open, _wopen
_chsize_s
Статья • 03.04.2023
Синтаксис
C
errno_t _chsize_s(
int fd,
__int64 size
);
Параметры
fd
size
Возвращаемое значение
_chsize_s возвращает значение 0, если размер файла успешно изменен. Ненулевое
Комментарии
Функция _chsize_s расширяет или усекает файл, связанный с fd , до длины,
указанной size . Файл должен быть открыт в режиме, позволяющем выполнять
запись. Если файл доступен для расширения, к нему добавляются нули ('\0'). Если
файл усекается, все данные в конце сокращенного файла усекаются до длины
исходного файла.
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
_chsize
_close
_creat, _wcreat
_open, _wopen
cimag , cimagf , cimagl
Статья • 03.04.2023
Синтаксис
C
Параметры
z
Комплексное число.
Возвращаемое значение
Мнимая часть z .
Комментарии
Так как C++ допускает перегрузку, можно вызывать перегрузки cimag , которые
принимают значения _Fcomplex или _Lcomplex и возвращают значения float или
long double . В программе C, если вы не используете <макрос tgmath.h> для вызова
этой функции, cimag всегда принимает _Dcomplex значение и возвращает double
значение.
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
Возвращаемое значение
Биты в возвращаемом значении указывают состояние модуля операций с
плавающей запятой до вызова функций _clear87 и _clearfp . Полные определения
битов, возвращаемых функцией _clear87 , см. в файле Float.h. Многие
математические библиотечные функции изменяют слово состояния 8087/80287 с
непредсказуемыми результатами. Чем меньше операций с плавающей запятой
выполняется между известными значениями слова состояния модуля операций с
плавающей запятой, тем надежнее возвращаемые из функций _clear87 и
_status87 значения.
Комментарии
Функция _clear87 очищает флаги исключения в слове состояния операций с
плавающей запятой, устанавливает бит занятости в 0 и возвращает слово
состояния. Слово состояния — это сочетание слова состояния 8087/80287 и других
условий, обнаруженных обработчиком исключений 8087/80287, таких как
переполнение стека или потеря точности.
Требования
Подпрограмма Обязательный заголовок
_clear87 <float.h>
_clearfp <float.h>
Пример
C
// crt_clear87.c
//
#include <stdio.h>
#include <float.h>
double a = 1e-40, b;
float x, y;
y = a;
// y is denormal:
b = y;
Output
Сбрасывает индикатор ошибки для потока. Доступна более безопасная версия этой
функции; см clearerr_s.
Синтаксис
C
void clearerr(
FILE *stream
);
Параметры
stream
Комментарии
Функция clearerr сбрасывает индикатор ошибки и индикатор конечного файла
для stream . Индикаторы ошибок не очищаются автоматически; После установки
индикатора ошибки для указанного потока операции с этим потоком продолжают
возвращать значение ошибки до тех пор, fsetpos пока clearerr fseekне вызывается
или rewind не вызывается.
Требования
Подпрограмма Обязательный заголовок
clearerr <stdio.h>
Пример
C
// crt_clearerr.c
#include <stdio.h>
int c;
clearerr( stdin );
c = getc( stdin );
clearerr( stdin );
else
Входные данные
Input
Вывод
Output
No read error
См. также
Обработка ошибок
Потоковый ввод-вывод
_eof
feof
ferror
perror, _wperror
clearerr_s
Статья • 03.04.2023
Синтаксис
C
errno_t clearerr_s(
FILE *stream
);
Параметры
stream
Возвращаемое значение
Ноль в случае успешного выполнения; EINVAL If stream is NULL .
Комментарии
Функция clearerr_s сбрасывает индикатор ошибки и индикатор конечного файла
для stream . Индикаторы ошибок не очищаются автоматически; После установки
индикатора ошибки для указанного потока операции с этим потоком продолжают
возвращать значение ошибки до тех пор, пока clearerr_s , clearerr , fseekили
rewind fsetpos не вызывается.
Требования
Подпрограмма Обязательный заголовок
clearerr_s <stdio.h>
Пример
C
// crt_clearerr_s.c
#include <stdio.h>
int c;
errno_t err;
if (err != 0)
abort();
c = getc( stdin );
if (err != 0)
abort();
Входные данные
Input
Вывод
Output
См. также
Обработка ошибок
Потоковый ввод-вывод
clearerr
_eof
feof
ferror
perror, _wperror
clock
Статья • 03.04.2023
Синтаксис
C
Возвращаемое значение
Время, прошедшее с момента инициализации CRT в начале процесса,
составляющее CLOCKS_PER_SEC единиц в секунду. Если прошедшее время
недоступно или превышает максимальное положительное время, которое может
быть записано как тип clock_t , функция возвращает значение (clock_t)(-1) .
Комментарии
Функция clock сообщает реальное время, прошедшее с момента инициализации
CRT при запуске процесса. Эта функция не соответствует стандарту ISO C, который
указывает чистое время ЦП в качестве возвращаемого значения. Чтобы получить
время ЦП, используйте функцию Win32 GetProcessTimes . Чтобы определить
прошедшее время в секундах, разделите значение, возвращаемое функцией clock ,
на макрос CLOCKS_PER_SEC .
Требования
Подпрограмма Обязательный заголовок
clock <time.h>
Пример
C
// crt_clock.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
clock_t goal;
long i = num_loops;
double duration;
printf( "Done!\n" );
start = clock();
while( i-- )
finish = clock();
Output
Done!
Синтаксис
C
_Dcomplex clog(
_Dcomplex z
);
_Fcomplex clog(
_Fcomplex z
); // C++ only
_Lcomplex clog(
_Lcomplex z
); // C++ only
_Fcomplex clogf(
_Fcomplex z
);
_Lcomplex clogl(
_Lcomplex z
);
Параметры
z
Основание логарифма.
Возвращаемое значение
Натуральный логарифм числа z . Результат несвязан по реальной оси и в интервале
[-iπ, +iπ] вдоль мнимой оси.
Ноль -INF
Параметр z Возвращаемое значение
Не число Не число
+ INF + INF
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки clog , которые
принимают и возвращают значения _Fcomplex и _Lcomplex . В программе на языке
C clog всегда принимает и возвращает значение _Dcomplex .
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
C++
Параметры
z
Основание логарифма.
Возвращаемое значение
Возможны следующие возвращаемые значения:
Ноль -INF
Не число Не число
+ INF + INF
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки clog10 ,
которые принимают и возвращают значения _Fcomplex и _Lcomplex . В программе
на языке C clog10 всегда принимает и возвращает значение _Dcomplex .
Требования
Подпрограмма Заголовок C Заголовок C++
Закрывает файл.
Синтаксис
C
int _close(
int fd
);
Параметры
fd
Возвращаемое значение
Функция _close возвращает 0, если файл был успешно закрыт. Возвращаемое
значение -1 указывает на ошибку.
Комментарии
Функция _close закрывает файл, связанный с fd .
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
Пример
См. пример для _open.
_chsize
_creat, _wcreat
_dup, _dup2
_open, _wopen
_unlink, _wunlink
close
Статья • 03.04.2023
Синтаксис
C
Параметры
x
Возвращаемое значение
, _Dcomplex или _Lcomplex структура, представляющая сложный продукт сложных
чисел x и y . _Fcomplex
Комментарии
Так как встроенные арифметические операторы не работают над реализацией
сложных типов, _Cmulcc _FCmulcc функций и _LCmulcc функций Майкрософт
упрощают умножение сложных типов.
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
Параметры
x
Возвращаемое значение
Структура _Dcomplex , _Fcomplex или _Lcomplex , представляющая комплексное
произведение комплексного числа x и числа y с плавающей запятой.
Комментарии
Так как встроенные арифметические операторы не работают с реализацией
сложных типов Майкрософт, _Cmulcr функции , _FCmulcr и _LCmulcr упрощают
умножение сложных типов на типы с плавающей запятой.
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
int _commit(
int fd
);
Параметры
fd
Возвращаемое значение
Функция _commit возвращает 0, если файл был успешно записан на диск.
Возвращаемое значение -1 указывает на ошибку.
Комментарии
Функция _commit вынуждает операционную систему записать файл, связанный с
fd , на диск. Этот вызов гарантирует, что указанный файл будет записан
_creat, _wcreat
_open, _wopen
_read
_write
compl
Статья • 03.04.2023
Альтернатива оператору ~.
Синтаксис
C
#define compl ~
Remarks
Макрос создает оператор ~.
Пример
C++
// iso646_compl.cpp
#include <iostream>
#include <iso646.h>
int main( )
int a = 1, result;
result = ~a;
result= compl(a);
Output
-2
-2
Требования
Заголовка:< iso646.h>
_configthreadlocale
Статья • 03.04.2023
Синтаксис
C
Параметры
per_thread_locale_type
Возвращаемое значение
Предыдущее состояние языкового стандарта отдельного потока
( _DISABLE_PER_THREAD_LOCALE или _ENABLE_PER_THREAD_LOCALE ) или –1 при сбое.
Комментарии
Функция _configthreadlocale используется для управления использованием
языковых стандартов, относящихся к конкретным потокам. Используйте один из
этих per_thread_locale_type параметров, чтобы указать или определить состояние
языкового стандарта для каждого потока:
Параметр Описание
Требования
Подпрограмма Обязательный заголовок
_configthreadlocale '<locale.h>'
Пример
C++
// crt_configthreadlocale.cpp
//
#include <locale.h>
#include <mbctype.h>
#include <process.h>
#include <windows.h>
#include <stdio.h>
#include <time.h>
// locale's format.
__time64_t ltime;
struct tm thetime;
_time64(<ime);
_gmtime64_s(&thetime, <ime);
printf("strftime failed!\n");
return -1;
return 0;
_configthreadlocale(_ENABLE_PER_THREAD_LOCALE);
_setmbcp(_MB_CP_ANSI);
setlocale(LC_ALL, "German"));
if (get_time(str) == 0)
_endthreadex( 0 );
return 0;
int main()
HANDLE hThread;
unsigned threadID;
_configthreadlocale(_ENABLE_PER_THREAD_LOCALE);
setlocale(LC_ALL, "English"));
NULL, 0, &threadID );
if (get_time(str) == 0)
Output
_beginthread, _beginthreadex
Локаль
Синтаксис
C
_Dcomplex conj(
_Dcomplex z
);
_Fcomplex conj(
_Fcomplex z
); // C++ only
_Lcomplex conj(
_Lcomplex z
); // C++ only
_Fcomplex conjf(
_Fcomplex z
);
_Lcomplex conjl(
_Lcomplex z
);
Параметры
z
Комплексное число.
Возвращаемое значение
Сложный сопряжение z . Результат имеет такую же действительную и мнимую
части, как у z , но с противоположным знаком.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки conj , которые
принимают и возвращают значения _Fcomplex и _Lcomplex . В программе C, если
вы не используете <макрос tgmath.h> для вызова этой функции, conj всегда
принимает и возвращает _Dcomplex значение.
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
);
);
int __control87_2(
);
Параметры
new
mask
x86_cw
sse2_cw
Возвращаемое значение
Для _control87 и _controlfp биты возвращаемого значения показывают состояние
управления блоком операций с плавающей запятой. Полное определение битов,
возвращаемых _control87 , см. в разделе FLOAT.H .
Комментарии
Функция _control87 получает и задает управляющее слово блока операций с
плавающей запятой. Слово управления с плавающей запятой позволяет программе
изменять режимы точности, округления и бесконечности в зависимости от
платформы. Можно также использовать функцию _control87 для маскирования и
демаскирования исключений, связанных с операциями с плавающей запятой. Если
значение для mask равно 0, функция _control87 получает управляющее слово
блока операций с плавающей запятой. Если значение mask отлично от нуля,
задается новое значение управляющего слова: для любого включенного бита (то
есть, равного 1) в параметре mask соответствующий бит в параметре new
используется для обновления управляющего слова. Другими словами, fpcntrl =
((fpcntrl & ~mask) | (new & mask)) где fpcntrl находится контрольное слово с
плавающей запятой.
7 Примечание
_controlfp(_DN_SAVE, _MCW_DN);
_controlfp(_DN_FLUSH, _MCW_DN);
// and x64 processors with SSE2 support. Ignored on other x86 platforms.
Если вы используете для __control87_2 задания разных значений для слов элемента
управления с плавающей запятой, может _control87 _controlfp быть невозможно
вернуть одно контрольное слово для представления состояния обоих единиц с
плавающей запятой. В таком случае эти функции устанавливают EM_AMBIGUOUS флаг
в возвращаемом целочисленном значении, чтобы указать несоответствие между
двумя словами элемента управления. Флаг EM_AMBIGUOUS является
предупреждением о том, что возвращаемое контрольное слово не может точно
представлять состояние обоих слов управления с плавающей запятой.
7 Примечание
Эти функции игнорируются при использовании /clr (компиляция среды CLR) для
компиляции . Среда CLR поддерживает только точность с плавающей запятой по
умолчанию.
денормализацией)
_DN_FLUSH 0x01000000
Mask Шестнадцатеричное Константа Шестнадцатеричное
значение значение
прерывания)
_EM_DENORMAL
0x00080000
_EM_ZERODIVIDE
0x00000008
_EM_OVERFLOW
0x00000004
_EM_UNDERFLOW
0x00000002
_EM_INEXACT 0x00000001
бесконечностью)
_IC_PROJECTIVE 0x00000000
(Не поддерживается на
платформах ARM или x64.)
округлением)
_RC_UP
0x00000200
_RC_DOWN
0x00000100
_RC_NEAR 0x00000000
точностью) бита)
0x00010000
_PC_64 (64
бита)
Требования
Подпрограмма Обязательный заголовок
// crt_cntrl87.c
// processor: x86
// the default.
#include <stdio.h>
#include <float.h>
double a = 0.1;
int result;
Output
Original: 0x0009001f
_controlfp_s
_controlfp_s
Статья • 03.04.2023
Синтаксис
C
errno_t _controlfp_s(
);
Параметры
currentControl
newControl
mask
Возвращаемое значение
Нуль в случае успешного выполнения или код ошибки errno .
Комментарии
Функция _controlfp_s — это независимая от платформы и более безопасная
версия функции _control87 , которая получает управляющее слово с плавающей
запятой в адрес, хранящийся в currentControl , и задает его с помощью newControl .
Биты в значениях показывают состояние элемента управления блоком операций с
плавающей запятой. Состояние элемента управления блока операций с плавающей
запятой позволяет программе изменять режимы точности, округления и
бесконечности в пакете математических операций с числами с плавающей запятой
в зависимости от платформы. Можно также использовать функцию _controlfp_s
для маскирования и демаскирования исключений, связанных с операциями с
плавающей запятой.
7 Примечание
// and x64 processors with SSE2 support. Ignored on other x86 platforms.
Эта функция игнорируется при использовании /clr (компиляция среды CLR), так как
среда CLR поддерживает только точность с плавающей запятой по умолчанию.
денормализацией)
_DN_FLUSH 0x01000000
прерывания)
_EM_DENORMAL
0x00080000
_EM_ZERODIVIDE
0x00000008
_EM_OVERFLOW
0x00000004
_EM_UNDERFLOW
0x00000002
_EM_INEXACT 0x00000001
бесконечностью)
_IC_PROJECTIVE 0x00000000
(Не поддерживается на
платформах ARM или x64.)
Mask Шестнадцатеричное Константа Шестнадцатеричное
значение значение
округлением)
_RC_UP
0x00000200
_RC_DOWN
0x00000100
_RC_NEAR 0x00000000
точностью) бита)
0x00010000
_PC_64 (64
бита)
Требования
Подпрограмма Обязательный заголовок
_controlfp_s <float.h>
Пример
C
// crt_contrlfp_s.c
// processor: x86
// the default.
#include <stdio.h>
#include <float.h>
double a = 0.1;
int err;
Output
Original: 0x9001f
24-bit: 0xa001f
Default: 0x9001f
Синтаксис
C
double copysign(
double x,
double y
);
float copysign(
float x,
float y
); // C++ only
long double x,
long double y
); // C++ only
float copysignf(
float x,
float y
); // C++ only
long double x,
long double y
); // C++ only
double _copysign(
double x,
double y
);
long double y
);
Параметры
x
Возвращаемое значение
Функции copysign возвращают значение с плавающей запятой, которое
объединяет абсолютное значение x и знак y . Ошибка не возвращается.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки copysign ,
которые принимают и возвращают значения float или long double . Если вы не
используете <макрос tgmath.h> в программе C для вызова этой функции, copysign
всегда принимает и возвращает значение double .
Требования
Подпрограмма Обязательный заголовок
_copysign <float.h>
См. также
fabs, fabsf, fabsl
Вычисляет косинус.
Синтаксис
C
Параметры
x
Угол в радианах.
Возвращаемое значение
Косинус x . Если x значение больше или равно 263 или меньше или равно -263,
происходит потеря значимости в результате.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки cos , которые
принимают и возвращают значения float или long double . В программе C, если вы
не используете <макрос tgmath.h> для вызова этой функции, cos всегда
принимает и возвращает double .
Если вы используете <макрос tgmath.h> cos() , тип аргумента определяет, какая
версия функции выбрана. Дополнительные сведения см. в статье Обобщенная
математика типов.
Требования
Подпрограмма Обязательный заголовок C Обязательный заголовок C++
Пример
См. пример в sin, sinf, sinl.
_matherr
Синтаксис
C
Параметры
x
Угол в радианах.
Возвращаемое значение
Гиперболический косинус x .
По умолчанию, если результат вызова cosh , coshf или coshl слишком велик,
функция возвращает HUGE_VAL и присваивает errno значение ERANGE .
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки cosh , которые
принимают и возвращают значения float или long double . В программе C, если вы
не используете <tgmath.h> макрос для вызова этой функции, cosh всегда
принимает и возвращает . double
Требования
Подпрограмма Обязательный заголовок (C) Обязательный заголовок (C++)
Пример
См. пример в sinh, sinhf, sinhl.
Синтаксис
C
Параметры
array
Имя массива.
Возвращаемое значение
Количество элементов в массиве, выраженное как size_t .
Комментарии
_countof реализуется как макрос препроцессора, похожий на функцию. Версия
C++ имеет дополнительные механизмы шаблонов для обнаружения во время
компиляции, если указатель передается вместо статического объявленного
массива.
Requirements (Требования)
Макрос Обязательный заголовок
Макрос Обязательный заголовок
_countof <stdlib.h>
Пример
C++
// crt_countof.cpp
#define _UNICODE
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
// unlike sizeof, _countof works here for both narrow- and wide-character
strings
Output
sizeof(arr) = 40 bytes
_countof(arr) = 20 elements
Синтаксис
C
_Dcomplex cpow(
_Dcomplex x, _Dcomplex y
);
_Fcomplex cpow(
_Fcomplex x, _Fcomplex y
); // C++ only
_Lcomplex cpow(
_Lcomplex x, _Lcomplex y
); // C++ only
_Fcomplex cpowf(
_Fcomplex x, _Fcomplex y
);
_Lcomplex cpowl(
_Lcomplex x, _Lcomplex y
);
Параметры
x
База.
Экспонента.
Возвращаемое значение
Значение x , возведенное в степень y , с ветвью, вырезанной для x вдоль
отрицательной части реальной оси.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки cpow , которые
принимают и возвращают значения _Fcomplex и _Lcomplex . В программе на языке
C cpow всегда принимает и возвращает значение _Dcomplex .
Требования
Подпрограмма Заголовок C Заголовок C++
) Важно!
) Важно!
Синтаксис
C
int _cprintf(
);
int _cprintf_l(
);
int _cwprintf(
);
int _cwprintf_l(
);
Параметры
format
argument_list
Возвращаемое значение
Число отображаемых символов.
Комментарии
Эти функции форматируют и выводят последовательности символов и значений
напрямую на консоль, используя функцию _putch ( _putwch для _cwprintf ) для
вывода символов. Каждый аргумент в argument_list (при наличии) преобразуется
и выводится в соответствии с соответствующей спецификацией формата в format .
Аргумент format использует синтаксис спецификации формата для функций printf и
wprintf. fprintf В отличие от функций printf и sprintf функций _cprintf и
_cwprintf не преобразовывайте символы строкового канала в комбинации
_cprintf проверяет параметр format . Если format это пустой указатель, функция
) Важно!
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_cprintf.c
// compile with: /c
#include <conio.h>
int i = -16,
h = 29;
unsigned u = 62511;
char c = 'A';
//
Output
) Важно!
Синтаксис
C
int _cprintf_p(
argument] ...
);
int _cprintf_p_l(
argument] ...
);
int _cwprintf_p(
argument] ...
);
int _cwprintf_p_l(
_locale_t locale [,
argument] ...
);
Параметры
format
Дополнительные параметры.
locale
Возвращаемое значение
Число выведенных символов или отрицательное значение в случае ошибки.
Комментарии
Эти функции форматируют и выводят последовательности символов и значений
напрямую на консоль, используя функции _putch и _putwch для вывода символов.
Каждый argument (если он есть) преобразуется и выводится согласно
соответствующей спецификацией формата в format . Формат имеет ту же форму и
функцию, что format и параметр для printf_p функции. Различие между функциями
_cprintf_p и cprintf_s заключается в том, что функция _cprintf_p поддерживает
Требования
Подпрограмма Обязательный заголовок
// crt_cprintf_p.c
#include <conio.h>
int i = -16,
h = 29;
unsigned u = 62511;
char c = 'A';
h, i, u, c, s );
Output
) Важно!
Синтаксис
C
int _cprintf_s(
argument] ...
);
int _cprintf_s_l(
argument] ...
);
int _cwprintf_s(
argument] ...
);
int _cwprintf_s_l(
_locale_t locale [,
argument] ...
);
Параметры
format
Дополнительные параметры.
locale
Возвращаемое значение
Число отображаемых символов.
Комментарии
Эти функции форматируют и выводят последовательности символов и значений
напрямую на консоль, используя функцию _putch ( _putwch для _cwprintf_s ) для
вывода символов. Каждый argument (если он есть) преобразуется и выводится
согласно соответствующей спецификацией формата в format . Формат имеет ту же
форму и функцию, что format и параметр для printf_s функции. fprintf_s В отличие
от функций и sprintf_s printf_s функций и _cprintf_s _cwprintf_s не преобразуйте
символы строкового канала в сочетания возвращаемых строк каретки (CR-LF) при
выводе.
) Важно!
Требования
Подпрограмма Обязательный заголовок
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_cprintf_s.c
// compile with: /c
#include <conio.h>
unsigned u = 62511;
char c = 'A';
*/
Output
Синтаксис
C
_Dcomplex cproj(
_Dcomplex z
);
_Fcomplex cproj(
_Fcomplex z
); // C++ only
_Lcomplex cproj(
_Lcomplex z
); // C++ only
_Fcomplex cprojf(
_Fcomplex z
);
_Lcomplex cprojl(
_Lcomplex z
);
Параметры
z
Комплексное число.
Возвращаемое значение
Проекция z на сферу Римана.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки cproj , которые
принимают и возвращают значения _Fcomplex и _Lcomplex . В программе C, если
вы не используете <макрос tgmath.h> для вызова этой функции, cproj всегда
принимает и возвращает _Dcomplex значение.
При использовании <макроса tgmath.h> cproj() тип аргумента определяет, какая
версия функции выбрана. Дополнительные сведения см. в описании
универсальной математики типов .
Требования
Подпрограмма Заголовок C Заголовок C++
) Важно!
) Важно!
Синтаксис
C
int _cputs(
);
int _cputws(
);
Параметры
str
Выходная строка.
Возвращаемое значение
В случае успеха _cputs возвращает 0. Если функция завершается с ошибкой,
возвращается ненулевое значение.
Комментарии
Функция _cputs записывает строку, заканчивающуюся нулевым байтом и
определенную параметром str , непосредственно в консоль. Комбинация канала
возврата каретки (CR-LF) не добавляется в строку автоматически.
Эта функция проверяет свои параметры. В противном str случае NULL вызывается
обработчик недопустимых параметров, как описано в разделе "Проверка
параметров". Если выполнение разрешено продолжать, errno устанавливается
значение EINVAL -1 и возвращается значение -1.
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_cputs.c
// compile with: /c
#include <conio.h>
#include <errno.h>
int retval;
if (retval)
if (errno == EINVAL)
else
int retval;
if (retval)
if (errno == EINVAL)
else
int main()
print_to_console(buffer);
wprint_to_console( wbuffer );
Output
_putch, _putwch
creal , crealf , creall
Статья • 03.04.2023
Синтаксис
C
Параметры
z
Комплексное число.
Возвращаемое значение
Реальная часть z .
Комментарии
Так как C++ допускает перегрузку, можно вызывать перегрузки creal , которые
принимают значения _Fcomplex или _Lcomplex и возвращают значения float или
long double . В программе C, если вы не используете <макрос tgmath.h> для вызова
этой функции, creal всегда принимает _Dcomplex значение и возвращает double
значение.
Требования
Подпрограмма Заголовок C Заголовок C++
Создает новый файл. _creat и _wcreat устарели; вместо этого используйте _sopen_s.
_wsopen_s
Синтаксис
C
int _creat(
int pmode
);
int _wcreat(
int pmode
);
Параметры
filename
pmode
Настройка разрешений.
Возвращаемое значение
Эти функции при успешном завершении возвращают дескриптор созданного
файла. В противном случае функции возвращают значение -1 и задаются errno ,
как показано в следующей таблице.
Значение Описание
errno
Комментарии
Функция _creat создает новый файл или открывает и обрезает существующий.
_wcreat — это версия _creat с расширенными символами; аргумент filename для
_wcreat — строка расширенных символов. Поведение _wcreat и _creat идентично
в противном случае.
Значение Определение
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
Пример
C
// crt_creat.c
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
int fh;
if( fh == -1 )
else
_close( fh );
Output
_chmod, _wchmod
_chsize
_close
_dup, _dup2
_open, _wopen
_sopen, _wsopen
_umask
_create_locale , _wcreate_locale
Статья • 03.04.2023
Синтаксис
C
_locale_t _create_locale(
int category,
);
_locale_t _wcreate_locale(
int category,
);
Параметры
category
Категория.
locale
Возвращаемое значение
Если задано допустимое locale значение, category функции возвращают
указанные параметры языкового _locale_t стандарта в виде объекта. Текущие
параметры языкового стандарта программы не изменяются.
Комментарии
Функция _create_locale позволяет создать объект, представляющий определенные
параметры конкретного региона, для использования в локальных версиях многих
функций CRT (функций с суффиксом _l ). Она ведет себя так же, как setlocale ,
однако вместо применения указанных параметров языкового стандарта к текущей
среде параметры сохраняются в возвращаемой структуре _locale_t . Структура
_locale_t должна быть освобождена, _free_locale если она больше не нужна.
_wcreate_locale — это версия _create_locale с расширенными символами;
Требования
Подпрограмма Обязательный заголовок
_create_locale <locale.h>
Пример
C
// crt_create_locale.c
// function.
#include <stdio.h>
#include <locale.h>
#include <time.h>
int main(void)
time_t ltime;
struct tm thetime;
_locale_t locale;
time (<ime);
_gmtime64_s(&thetime, <ime);
printf("_strftime_l failed!\n");
else
_free_locale(locale);
time(<ime);
_gmtime64_s(&thetime, <ime);
printf("_strftime_l failed!\n");
else
_free_locale(locale);
Output
Строки языка
_free_locale
_configthreadlocale
setlocale
Локаль
localeconv
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
_setmbcp
setlocale, _wsetlocale
Функции strcoll
wcstombs, _wcstombs_l
wctomb, _wctomb_l
_CrtCheckMemory
Статья • 03.04.2023
Синтаксис
C
Возвращаемое значение
В случае успешного _CrtCheckMemory выполнения возвращает TRUE ; в противном
случае функция возвращает FALSE .
Комментарии
Функция _CrtCheckMemory проверяет память, выделенную диспетчеру отладочной
кучи, проверяя основную кучу и каждый блок памяти. Если несогласованность
памяти или ошибка возникают в базовой куче, сведениях о заголовке отладки или
буферах перезаписи, _CrtCheckMemory создает отчет об отладке с информацией,
описывающей условие возникновения ошибки. Если _DEBUG параметр не
определен, вызовы удаляются _CrtCheckMemory во время предварительной
обработки.
Так как эта функция возвращает TRUE или FALSE , ее можно передать в один из
_ASSERT макросов, чтобы создать базовый механизм обработки ошибок отладки.
Следующий пример вызывает сбой утверждения, если в куче обнаружено
повреждение.
_ASSERTE( _CrtCheckMemory( ) );
Требования
Подпрограмма Обязательный заголовок
_CrtCheckMemory <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Пример
Пример использования _CrtCheckMemory см. в разделе crt_dbg1 .
_crtDbgFlag
_CrtSetDbgFlag
_CrtDbgBreak
Статья • 03.04.2023
Синтаксис
C
Возвращаемое значение
Возвращаемое значение отсутствует.
Комментарии
Функция _CrtDbgBreak задает точку останова отладки в той строке кода, где
находится функция. Она используется только в режиме отладки и зависит от
определенного ранее параметра _DEBUG .
Требования
Подпрограмма Обязательный заголовок
_CrtDbgBreak <CRTDBG.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
См. также раздел
Подпрограммы отладки
__debugbreak
_CrtDbgReport , _CrtDbgReportW
Статья • 03.04.2023
Синтаксис
C
int _CrtDbgReport(
int reportType,
int linenumber,
argument] ...
);
int _CrtDbgReportW(
int reportType,
int linenumber,
argument] ...
);
Параметры
reportType
filename
lineNumber
Номер строки в исходном файле, в которой возникло утверждение или отчет, либо
значение NULL .
moduleName
Указатель на имя модуля (EXE или DLL), в котором возникло утверждение или отчет.
format
argument
Возвращаемое значение
Для всех назначений отчетов и _CrtDbgReportW возвращает значение -1,
_CrtDbgReport если возникает ошибка, и 0, если ошибки не обнаружены. Однако
Комментарии
_CrtDbgReport и _CrtDbgReportW может отправлять отчет об отладке в три разных
назначения: файл отчета об отладке, монитор отладки (отладчик Visual Studio) или
окно сообщения отладки. Две функции конфигурации, _CrtSetReportMode и
_CrtSetReportFile, используются для указания назначения или назначения для
каждого типа отчета. Эти функции позволяют управлять назначением или
назначениями для каждого типа отчета по отдельности. Например, можно указать,
что объект reportType _CRT_WARN из относится только к монитору отладки, а объект
reportType — к окну сообщения отладки _CRT_ASSERT и пользовательскому файлу
отчета.
В таблице ниже приведен список доступных вариантов для режима или режимов
отчета и файла, а также поведение, которое является результатом функций
_CrtDbgReport и _CrtDbgReportW . Эти параметры определяются как битовые флаги в
<crtdbg.h>.
Этот отчет можно отправить в одно, два или три назначения (или ни в одно из
назначений). Дополнительные сведения об указании режима отчета или режимов
и файла отчета см. в _CrtSetReportMode разделе Функции и _CrtSetReportFile .
Дополнительные сведения об использовании отладочных макросов и функций
создания отчетов см. в разделе Макросы для создания отчетов.
Если приложению требуется больше гибкости, чем при использовании
_CrtDbgReport и _CrtDbgReportW , можно написать собственную функцию отчетов и
подключить ее к механизму создания отчетов библиотеки времени выполнения C с
помощью _CrtSetReportHook функции .
Требования
Подпрограмма Обязательный заголовок
_CrtDbgReport <crtdbg.h>
_CrtDbgReportW <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Пример
C
// crt_crtdbgreport.c
#include <crtdbg.h>
#ifdef _DEBUG
#endif
_CrtSetReportMode
_CrtSetReportFile
_DEBUG
_CrtDoForAllClientObjects
Статья • 03.04.2023
Синтаксис
C
void _CrtDoForAllClientObjects(
void *context
);
Параметры
pfn
context
Комментарии
Функция _CrtDoForAllClientObjects выполняет поиск блоков памяти с типом
_CLIENT_BLOCK в связанном списке кучи и вызывает функцию, предоставляемую
приложением, если удается найти блок этого типа. Найденный блок и параметр
context передаются как аргументы в функцию, предоставляемую приложением. Во
время отладки приложение может отследить определенную группу выделений,
явно вызывая функции отладочной кучи для выделения памяти и указывая, что
блокам должен назначаться тип _CLIENT_BLOCK . Эти блоки затем могут
отслеживаться по отдельности и включаться в разные отчеты об обнаружении
утечки и состоянии памяти.
Если битовое _CRTDBG_ALLOC_MEM_DF поле флага _crtDbgFlag не включено,
_CrtDoForAllClientObjects немедленно возвращается. Если _DEBUG параметр не
определен, вызовы удаляются _CrtDoForAllClientObjects во время
предварительной обработки.
Требования
Подпрограмма Обязательный заголовок
_CrtSetDbgFlag
_CrtReportBlockType
_CrtDumpMemoryLeaks
Статья • 03.04.2023
Сбрасывает все блоки памяти в отладочной куче в случае утечки памяти (только в
отладочной версии).
Синтаксис
C
Возвращаемое значение
_CrtDumpMemoryLeaks возвращает значение TRUE , если обнаружена утечка памяти. В
Комментарии
Функция _CrtDumpMemoryLeaks определяет, произошла ли утечка памяти после
начала выполнения программы. При обнаружении утечки данные заголовка
отладки для всех объектов в куче записываются в форме, которую пользователь
может прочитать. Если _DEBUG параметр не определен, вызовы удаляются
_CrtDumpMemoryLeaks во время предварительной обработки.
Требования
Подпрограмма Обязательный заголовок
_CrtDumpMemoryLeaks <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Пример
Пример использования _CrtDumpMemoryLeaks см. в разделе crt_dbg1 .
Синтаксис
C
Возвращаемое значение
Возвращает определенную в данный момент функцию выделения памяти.
Комментарии
_CrtGetAllocHook извлекает текущую определяемую клиентом функцию выделения
памяти для процесса выделения памяти отладочной библиотеке в среде
выполнения.
Требования
Подпрограмма Обязательный заголовок
_CrtGetAllocHook <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
_CrtSetAllocHook
_CrtGetDumpClient
Статья • 03.04.2023
Синтаксис
C
Возвращаемое значение
Возвращает текущую подпрограмму дампа.
Комментарии
Функция _CrtGetDumpClient извлекает текущую функцию перехватчика для дампа
объектов, хранящихся в блоках _CLIENT_BLOCK памяти.
Требования
Подпрограмма Обязательный заголовок
_CrtGetDumpClient <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
См. также раздел
Подпрограммы отладки
_CrtReportBlockType
_CrtSetDumpClient
_CrtGetReportHook
Статья • 03.04.2023
Синтаксис
C
Возвращаемое значение
Возвращает текущую определяемую клиентом функцию отчетов.
Комментарии
_CrtGetReportHook позволяет приложению извлекать текущую функцию отчетов для
процесса создания отчетов отладочной библиотеки в среде выполнения языка C.
Требования
Подпрограмма Обязательный заголовок
_CrtGetReportHook <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Пример
Пример использования _CrtSetReportHook см. в разделе report .
_CrtSetReportHook
_CrtIsMemoryBlock
Статья • 03.04.2023
Синтаксис
C
int _CrtIsMemoryBlock(
long *requestNumber,
char **filename,
int *lineNumber
);
Параметры
userData
size
requestNumber
filename
lineNumber
Возвращаемое значение
_CrtIsMemoryBlock возвращает TRUE , если указанный блок памяти находится в
локальной куче и имеет допустимый идентификатор типа блока отладочной кучи; в
противном случае функция возвращает FALSE .
Комментарии
Функция _CrtIsMemoryBlock проверяет, находится ли указанный блок памяти в
локальной куче и имеет ли он допустимый идентификатор типа блока. Эту
функцию можно также использовать для получения порядкового номера
распределения объекта, а также имени или номера строки исходного файла,
содержащего исходный запрос на выделение блока памяти. NULL Если в параметре
, или lineNumber передается значение, не являющееся значением requestNumber ,
передаваемым в параметре _CrtIsMemoryBlock , filename то при обнаружении блока
в локальной куче для параметра устанавливается значение в отладочном заголовке
блока памяти. Если _DEBUG параметр не определен, вызовы удаляются
_CrtIsMemoryBlock во время предварительной обработки.
Так как эта функция возвращает TRUE или FALSE , ее можно передать в один из
_ASSERT макросов, чтобы создать базовый механизм обработки ошибок отладки.
Следующий пример вызывает сбой утверждения, если указанный адрес не
находится в локальной куче:
&filename, &linenumber ) );
Требования
Подпрограмма Обязательный заголовок
_CrtIsMemoryBlock <crtdbg.h>
Пример
См. пример для статьи _CrtIsValidHeapPointer .
Синтаксис
C
int _CrtIsValidHeapPointer(
Параметры
userData
Возвращаемое значение
_CrtIsValidHeapPointer возвращает значение TRUE , если указанный указатель
Комментарии
Мы не рекомендуем использовать эту функцию. Начиная с библиотеки CRT в Visual
Studio 2010, все библиотеки CRT используют одну и ту же кучу операционной
системы — кучу процесса. Функция _CrtIsValidHeapPointer сообщает, выделен ли
указатель в кучу CRT, но не указывает, был ли он выделен библиотекой CRT
вызывающей функции. Возьмем для примера блок, выделенный с помощью
библиотеки CRT в составе Visual Studio 2010. Если функция, _CrtIsValidHeapPointer
экспортируемая в visual Studio 2012 библиотеки CRT, проверяет указатель, она
возвращает . TRUE Этот тест больше не полезен. В версиях библиотеки CRT до Visual
Studio 2010 эта функция используется для проверки наличия того или иного адреса
памяти в локальной куче. Локальная куча обращается к куче, созданной и
управляемой определенным экземпляром библиотеки среды выполнения C. Если
библиотека динамической компоновки (DLL) содержит статическую ссылку на
библиотеку среды выполнения, она имеет свой собственный экземпляр кучи среды
выполнения, а значит и собственную кучу, не зависящую от локальной кучи
приложения. Если _DEBUG параметр не определен, вызовы удаляются
_CrtIsValidHeapPointer во время предварительной обработки.
Так как эта функция возвращает TRUE или FALSE , ее можно передать в один из
_ASSERT макросов, чтобы создать базовый механизм обработки ошибок отладки.
Следующий пример вызывает сбой утверждения, если указанный адрес не
находится в локальной куче:
Требования
Подпрограмма Обязательный заголовок
_CrtIsValidHeapPointer <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Пример
В следующем примере показано, как проверить, является ли память допустимой
при использовании с библиотеками времени выполнения C до Visual Studio 2010.
Пример приведен для пользователей предыдущих версий библиотеки кодов CRT.
// crt_isvalid.c
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <crtdbg.h>
#define TRUE 1
#define FALSE 0
char *my_pointer;
else
else
" heap.\n");
free(my_pointer);
Output
my_pointer has read and write accessibility.
Синтаксис
C
int _CrtIsValidPointer(
int access
);
Параметры
address
size
access
Возвращаемое значение
_CrtIsValidPointer возвращает значение TRUE , если указанный указатель не равен
NULL. В версиях библиотекИ CRT до Visual Studio 2010 возвращает значение TRUE ,
если диапазон памяти действителен для указанной операции или операций. В
противном случае функция возвращает значение FALSE .
Комментарии
В библиотеке CRT в Visual Studio 2010 и более поздних версиях size параметры и
access игнорируются и _CrtIsValidPointer проверяются только на то, что
указанный address объект не имеет значения NULL. Так как этот тест легко
выполнить самостоятельно, мы не рекомендуем использовать эту функцию. В
версиях, выпущенных до выхода Visual Studio 2010, эта функция проверяет
допустимость диапазона памяти, начинающегося по адресу address и
занимающего заданное параметром size количество байт, для указанной
операции или операций доступа. Если access задано значение TRUE , диапазон
памяти проверяется как для чтения, так и для записи. Если access имеет значение
FALSE , диапазон памяти проверяется только для чтения. Если _DEBUG параметр не
Так как эта функция возвращает TRUE или FALSE , ее можно передать в один из
_ASSERT макросов, чтобы создать базовый механизм обработки ошибок отладки.
Следующий пример вызывает сбой утверждения, если диапазон памяти
недопустим для операций чтения и записи:
Требования
Подпрограмма Обязательный заголовок
_CrtIsValidPointer <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Пример
См. пример для статьи _CrtIsValidHeapPointer .
Синтаксис
C
void _CrtMemCheckpoint(
_CrtMemState *state
);
Параметры
state
Комментарии
Функция _CrtMemCheckpoint создает моментальный снимок текущего состояния
отладочной кучи в любой данный момент. Этот моментальный снимок может
использоваться другими функциями состояния кучи, _CrtMemDifference например
для обнаружения утечек памяти и других проблем. Если _DEBUG параметр не
определен, вызовы удаляются _CrtMemState во время предварительной обработки.
Требования
Подпрограмма Обязательный заголовок
_CrtMemDifference
_CrtMemDifference
Статья • 03.04.2023
Синтаксис
C
int _CrtMemDifference(
_CrtMemState *stateDiff,
);
Параметры
stateDiff
oldState
newState
Возвращаемое значение
Если разница в состояниях памяти значительна, _CrtMemDifference возвращает
. TRUE В противном случае функция возвращает значение FALSE .
Комментарии
Функция _CrtMemDifference сравнивает oldState и newState сохраняет их различия
в stateDiff , которые затем могут использоваться приложением для обнаружения
утечек памяти и других проблем с памятью. Если _DEBUG параметр не определен,
вызовы удаляются _CrtMemDifference во время предварительной обработки.
newState и oldState должны быть допустимым указателем на структуру,
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
_crtDbgFlag\
_CrtMemDumpAllObjectsSince
Статья • 03.04.2023
Синтаксис
C
void _CrtMemDumpAllObjectsSince(
);
Параметры
state
Комментарии
Функция _CrtMemDumpAllObjectsSince помещает в дамп данные заголовка отладки
для выделенных в куче объектов в понятной пользователю форме. Данные дампа
могут использоваться приложением для отслеживания операций выделения
памяти и выявления проблем с памятью. Если _DEBUG параметр не определен,
вызовы удаляются _CrtMemDumpAllObjectsSince во время предварительной
обработки.
Требования
Подпрограмма Обязательный заголовок
_CrtMemDumpAll-ObjectsSince <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Пример
Пример использования _CrtMemDumpAllObjectsSince см. в разделе crt_dbg2 .
_crtDbgFlag
_CrtMemDumpStatistics
Статья • 03.04.2023
Синтаксис
C
void _CrtMemDumpStatistics(
);
Параметры
state
Комментарии
Функция _CrtMemDumpStatistics помещает в дамп данные заголовка отладки для
указанного состояния кучи в понятной пользователю форме. Статистика дампа
может использоваться приложением для отслеживания операций выделения
памяти и выявления проблем с памятью. Состояние памяти может содержать
состояние определенной кучи или разницу между двумя состояниями. Если
_DEBUG параметр не определен, вызовы удаляются _CrtMemDumpStatistics во время
предварительной обработки.
Требования
Подпрограмма Обязательный заголовок Необязательные заголовки
Синтаксис
C
int _CrtReportBlockType(
};
Параметры
pBlock
Возвращаемое значение
При передаче допустимого указателя отладочной кучи функция
_CrtReportBlockType возвращает тип и подтип блока в форме int . При передаче
недопустимого указателя функция возвращает значение -1.
Комментарии
Чтобы извлечь тип и подтип, возвращаемые _CrtReportBlockType , используйте
макросы _BLOCK_TYPE и _BLOCK_SUBTYPE (как определенные в Crtdbg.h) в
возвращаемом значении.
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
_CrtReportBlockType <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Пример
C++
// crt_crtreportblocktype.cpp
#include <malloc.h>
#include <stdio.h>
#include <crtdbg.h>
_RPT3(_CRT_WARN, "Dumper found block at %p: type %d, subtype %d\n", ptr,
_BLOCK_TYPE(block), _BLOCK_SUBTYPE(block));
int main(void)
_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) |
_CRTDBG_LEAK_CHECK_DF);
_CrtDoForAllClientObjects(Dumper, NULL);
_CrtSetDumpClient(LeakDumper);
_CrtSetDumpClient
_CrtMemDumpAllObjectsSince
_CrtDumpMemoryLeaks
_CrtSetAllocHook
Статья • 03.04.2023
Синтаксис
C
_CRT_ALLOC_HOOK _CrtSetAllocHook(
_CRT_ALLOC_HOOK allocHook
);
Параметры
allocHook
Возвращаемое значение
Возвращает ранее определенную функцию-обработчик выделения памяти или
значение NULL , если параметр allocHook имеет значение NULL .
Комментарии
Функция _CrtSetAllocHook позволяет приложению прикрепить свою собственную
функцию выделения памяти к процессу выделения памяти в отладочной
библиотеке среды выполнения C. В результате каждый вызов функции отладочного
выделения памяти для выделения, перераспределения или освобождения блока
памяти запускает вызов функции-обработчика приложения. Функция
_CrtSetAllocHook предоставляет приложению простой метод проверки того, как
7 Примечание
Требования
Подпрограмма Обязательный заголовок
_CrtSetAllocHook <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Пример
Пример использования _CrtSetAllocHook см. в разделе crt_dbg2 .
_CrtGetAllocHook
_CrtSetBreakAlloc
Статья • 03.04.2023
Синтаксис
C
long _CrtSetBreakAlloc(
long lBreakAlloc
);
Параметры
lBreakAlloc
Возвращаемое значение
Возвращает предыдущий порядковый номер выделения объекта, для которого
задана точка останова.
Комментарии
_CrtSetBreakAlloc позволяет приложению выполнять обнаружение утечки памяти
Требования
Подпрограмма Обязательный заголовок
_CrtSetBreakAlloc <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Пример
C
// crt_setbrkal.c
// compile with: -D_DEBUG /MTd -Od -Zi -W3 /c /link -verbose:lib -debug
/*
*/
#include <malloc.h>
#include <crtdbg.h>
int main( )
long allocReqNum;
char *my_pointer;
/*
*/
my_pointer = malloc(10);
/*
*/
_CrtSetBreakAlloc(allocReqNum+2);
/*
*/
free(my_pointer);
my_pointer = malloc(10);
free(my_pointer);
my_pointer = malloc(10);
free(my_pointer);
Синтаксис
C
int _CrtSetDbgFlag(
int newFlag
);
Параметры
newFlag
Возвращаемое значение
Возвращает предыдущее состояние _crtDbgFlag .
Комментарии
Функция _CrtSetDbgFlag позволяет приложению управлять тем, как диспетчер
отладочной кучи отслеживает выделение памяти, изменяя битовые поля флага
_crtDbgFlag . Задавая битовые поля, приложение может указать диспетчеру
отладочной кучи выполнять специальные операции отладки. Существует несколько
возможных операций:
_CRTDBG_CHECK_EVERY_16_DF 16
_CRTDBG_CHECK_EVERY_128_DF 128
_CRTDBG_CHECK_EVERY_1024_DF 1024
#include <crtdbg.h>
int main( )
int tmp;
tmp = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
_CrtSetDbgFlag(tmp);
tmpFlag |= _CRTDBG_DELAY_FREE_MEM_DF;
Требования
Подпрограмма Обязательный заголовок
_CrtSetDbgFlag <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Пример
C
// crt_crtsetdflag.c
// compile with: /c -D_DEBUG /MTd -Od -Zi -W3 /link -verbose:lib /debug
#include <string.h>
#include <malloc.h>
#include <crtdbg.h>
int main( )
int tmpDbgFlag;
tmpDbgFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
tmpDbgFlag |= _CRTDBG_DELAY_FREE_MEM_DF;
tmpDbgFlag |= _CRTDBG_LEAK_CHECK_DF;
_CrtSetDbgFlag(tmpDbgFlag);
p1 = malloc( 34 );
p2 = malloc( 38 );
free( p2 );
free( p1 );
tmpDbgFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
tmpDbgFlag |= _CRTDBG_ALLOC_MEM_DF;
_CrtSetDbgFlag(tmpDbgFlag);
free( p1 );
p1 = malloc( 10 );
_crtDbgFlag
_CrtCheckMemory
_CrtSetDebugFillThreshold
Статья • 03.04.2023
Синтаксис
C
Параметры
newThreshold
Возвращаемое значение
Предыдущее пороговое значение.
Комментарии
Отладочные версии некоторых функций CRT с повышенным уровнем безопасности
заполняют буфер, переданный им специальным символом (0xFE). Этот символ
заливки помогает найти случаи, когда в функцию был передан неправильный
размер. К сожалению, это также снижает производительность. Чтобы повысить
производительность, используйте для _CrtSetDebugFillThreshold отключения
заполнения буферов для буферов, превышающих newThreshold пороговое
значение. Значение newThreshold 0 отключает его для всех буферов.
asctime_s, _wasctime_s
_cgets_s, _cgetws_s
ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s
_ecvt_s
_fcvt_s
_gcvt_s
_makepath_s, _wmakepath_s
_mbsnbcat_s, _mbsnbcat_s_l
_mbsnbcpy_s, _mbsnbcpy_s_l
_mbsnbset_s, _mbsnbset_s_l
_mktemp_s, _wmktemp_s
_splitpath_s, _wsplitpath_s
_strdate_s, _wstrdate_s
_strtime_s, _wstrtime_s
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
_CrtSetDebugFillThreshold <crtdbg.h>
Библиотеки
Отладка только версий библиотек времени выполнения C .
Пример
C
// crt_crtsetdebugfillthreshold.c
// compile with: cl /MTd crt_crtsetdebugfillthreshold.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <crtdbg.h>
buff[i] = 0;
char buff[10];
_CrtSetDebugFillThreshold( 0 );
Output
68 h
6f o
77 w
64 d
79 y
00
fe ■
fe ■
fe ■
fe ■
68 h
6f o
77 w
64 d
79 y
00
00
00
00
00
Синтаксис
C
Параметры
dumpClient
Возвращаемое значение
Возвращает определенную ранее функцию дампа клиентских блоков.
Комментарии
Функция _CrtSetDumpClient позволяет приложению подключить собственную
функцию для дампа объектов, хранящихся в _CLIENT_BLOCK блоках памяти. В
результате каждый раз, когда отладочная функция дампа, например
_CrtMemDumpAllObjectsSince или _CrtDumpMemoryLeaks дамп _CLIENT_BLOCK блока
памяти, также вызывается функция дампа приложения. _CrtSetDumpClient
предоставляет приложению простой способ для обнаружения утечек памяти и
проверки содержимого данных, хранящихся в блоках _CLIENT_BLOCK , либо создания
связанных с ними отчетов. Если _DEBUG параметр не определен, вызовы удаляются
_CrtSetDumpClient во время предварительной обработки.
Требования
Подпрограмма Обязательный заголовок
_CrtSetDumpClient <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
_CrtReportBlockType
_CrtGetDumpClient
_CrtSetReportFile
Статья • 03.04.2023
Синтаксис
C
_HFILE _CrtSetReportFile(
int reportType,
_HFILE reportFile
);
Параметры
reportType
reportFile
Возвращаемое значение
При успешном завершении функция _CrtSetReportFile возвращает предыдущий
файл отчета, заданный для типа отчета, который определяется параметром
reportType . Если передано reportType недопустимое значение, эта функция
вызывает обработчик недопустимых параметров, как описано в разделе "Проверка
параметров". Если выполнение разрешено продолжать, errno задается значение
EINVAL и функция возвращает . _CRTDBG_HFILE_ERROR Дополнительные сведения см. в
разделе errno, а _doserrno_sys_errlistтакже ._sys_nerr
Комментарии
_CrtSetReportFile используется с функцией _CrtSetReportMode для определения
дескриптор файла
HANDLE hLogFile;
FILE_ATTRIBUTE_NORMAL, NULL);
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_WARN, hLogFile);
_RPT0(_CRT_WARN,"file message\n");
CloseHandle(hLogFile);
_CRTDBG_FILE_STDERR
_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR);
_RPT0(_CRT_ERROR,"1st message\n");
_CRTDBG_FILE_STDOUT
Записывает в stdout сообщение, которые можно переадресовать.
_CRTDBG_REPORT_FILE
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
Синтаксис
C
_CRT_REPORT_HOOK _CrtSetReportHook(
_CRT_REPORT_HOOK reportHook
);
Параметры
reportHook
Возвращаемое значение
Возвращает предыдущую определяемую клиентом функцию отчетов.
Комментарии
_CrtSetReportHook позволяет приложению использовать собственную функцию
7 Примечание
Требования
Подпрограмма Обязательный заголовок
_CrtSetReportHook <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
_CrtGetReportHook
_CrtSetReportHook2 , _CrtSetReportHookW2
Статья • 03.04.2023
Синтаксис
C
int _CrtSetReportHook2(
int mode,
_CRT_REPORT_HOOK pfnNewHook
);
int _CrtSetReportHookW2(
int mode,
_CRT_REPORT_HOOKW pfnNewHook
);
Параметры
mode
pfnNewHook
Обработчик отчета для установки или удаления в узкой или широкой версии этой
функции.
Возвращаемое значение
–1, если произошла ошибка, с установленным значением EINVAL или ENOMEM ; в
противном случае возвращает число ссылок pfnNewHook после вызова.
Комментарии
_CrtSetReportHook2 и _CrtSetReportHookW2 позволяет перехватыть или отключает
Эти функции проверяют свои параметры. Если mode это pfnNewHook недопустимо,
эти функции вызывают обработчик недопустимых параметров, как описано в
разделе "Проверка параметров". Если продолжение выполнения разрешено, эти
функции устанавливают для errno значение EINVAL и возвращают -1.
7 Примечание
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Пример
C
// crt_setreporthook2.c
#include <windows.h>
#include <stdio.h>
#include <crtdbg.h>
#include <assert.h>
switch (nReportType)
{
case _CRT_ASSERT:
printf("_CRT_ASSERT");
break;
case _CRT_WARN:
printf("_CRT_WARN");
break;
case _CRT_ERROR:
printf("_CRT_ERROR");
break;
default:
printf("???Unknown???");
break;
printf(szMsg);
if (pnRet)
*pnRet = 0;
return nRet;
switch (nReportType)
case _CRT_WARN:
printf("_CRT_WARN");
break;
case _CRT_ERROR:
printf("_CRT_ERROR");
break;
case _CRT_ASSERT:
printf("_CRT_ASSERT");
break;
default:
printf("???Unknown???");
break;
printf(szMsg);
if (pnRet)
*pnRet = 0;
return nRet;
int nRet = 0;
printf("_CrtSetReportHook2(_CRT_RPTHOOK_INSTALL, TestHook1)"
printf("_CrtSetReportHook2(_CRT_RPTHOOK_INSTALL, TestHook2)"
printf("_CrtSetReportHook2(_CRT_RPTHOOK_INSTALL, TestHook2)"
printf("_CrtSetReportHook2(_CRT_RPTHOOK_REMOVE, TestHook1)"
printf("_CrtSetReportHook2(_CRT_RPTHOOK_INSTALL, TestHook1)"
_ASSERT(0);
printf("_CrtSetReportHook2(_CRT_RPTHOOK_REMOVE, TestHook2)"
printf("_CrtSetReportHook2(_CRT_RPTHOOK_REMOVE, TestHook2)"
printf("_CrtSetReportHook2(_CRT_RPTHOOK_REMOVE, TestHook2)"
printf("_CrtSetReportHook2(_CRT_RPTHOOK_REMOVE, TestHook1)"
return nRet;
Выходные данные
Output
_CrtSetReportHook2(_CRT_RPTHOOK_INSTALL, TestHook1) returned 0
См. также
Подпрограммы отладки
_CrtSetReportMode
Статья • 03.04.2023
Синтаксис
C
int _CrtSetReportMode(
int reportType,
int reportMode
);
Параметры
reportType
reportMode
Возвращаемое значение
При успешном завершении функция _CrtSetReportMode возвращает предыдущий
режим или режимы отчетов для типа отчета, указанного в параметре reportType .
Если в reportType параметре передается недопустимое значение или указан
недопустимый режим для reportMode , _CrtSetReportMode вызывает обработчик
недопустимых параметров, как описано в разделе Проверка параметров. Если
продолжение выполнения разрешено, эта функции задает для errno значение
EINVAL и возвращает -1. Дополнительные сведения см. в разделах errno, _doserrno,
_sys_errlistи _sys_nerr.
Комментарии
Функция _CrtSetReportMode определяет место назначения вывода для функции
_CrtDbgReport . Поскольку макросы _ASSERT, _ASSERTE, _RPT и _RPTF вызывают
функцию _CrtDbgReport , функция _CrtSetReportMode определяет место назначения
вывода текста, определенного этими макросами.
1 _CRTDBG_MODE_FILE
2 _CRTDBG_MODE_DEBUG
4 _CRTDBG_MODE_WNDW
Каждый тип отчета может создаваться с использованием одного, двух или трех
режимов или вообще без режима. Таким образом, для одного типа отчета можно
определить несколько назначений. Например, в следующем фрагменте кода
сообщения о сбоях проверочного утверждения отправляются как в окно
сообщений отладчика, так и в поток stderr :
Кроме того, вы можете управлять режимом отчетов или режимами для каждого
типа отчета отдельно. Например, можно указать, что объект reportType _CRT_WARN
отправляется в выходную строку отладки, а _CRT_ASSERT отображается в окне
сообщения отладки и отправляется в stderr , как показано выше.
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
) Важно!
7 Примечание
В Visual Studio 2015 Класс printf и scanf семейство функций были объявлены
как inline и перемещены в <stdio.h> заголовки и <conio.h> заголовки. При
переносе более старого кода в связи с этими функциями может появиться
ошибка компоновщика LNK2019. Дополнительные сведения см. в журнале
изменений Visual C++ 2003 –2015.
) Важно!
Синтаксис
C
int _cscanf(
argument] ...
);
int _cscanf_l(
_locale_t locale [,
argument] ...
);
int _cwscanf(
argument] ...
);
int _cwscanf_l(
_locale_t locale [,
argument] ...
);
Параметры
format
argument
Дополнительные параметры.
locale
Возвращаемое значение
Число успешно преобразованных и назначенных полей. Возвращаемое значение
не содержит поля, которые были прочитаны, но не назначены. При попытке чтения
конечной части файла возвращается значение EOF . Также EOF может быть
возвращен при перенаправлении ввода с клавиатуры на уровне командной строки
операционной системы. Возвращаемое значение равно нулю означает, что поля не
были назначены.
Комментарии
Функция _cscanf считывает данные из консоли в места, указанные функцией
argument . Функция _getche используется для чтения символов. Каждый
дополнительный параметр должен быть указателем на переменную, тип которой
соответствует спецификатору типа в параметре format . Формат управляет
интерпретацией полей ввода и имеет ту же форму и функцию, что format и
параметр для scanf функции. Хотя _cscanf обычно выполняется эхо входной
символ, он не делает этого, если последний вызов был выполнен _ungetch .
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_cscanf.c
*/
#include <stdio.h>
#include <conio.h>
while( result-- )
_cprintf_s( "\r\n" );
Input
1 2 3
Output
You entered 3 2 1
) Важно!
Синтаксис
C
int _cscanf_s(
argument] ...
);
int _cscanf_s_l(
_locale_t locale [,
argument] ...
);
int _cwscanf_s(
argument] ...
);
int _cwscanf_s_l(
_locale_t locale [,
argument] ...
);
Параметры
format
Дополнительные параметры.
locale
Возвращаемое значение
Число успешно преобразованных и назначенных полей. Возвращаемое значение
не содержит поля, которые были прочитаны, но не назначены. При попытке чтения
конечной части файла возвращается значение EOF . Также EOF можно вернуть
значение при перенаправлении ввода клавиатуры на уровне командной строки
операционной системы. Возвращаемое значение равно нулю означает, что поля не
назначены.
Эти функции проверяют свои параметры. Если format это пустой указатель, эти
функции вызывают обработчик недопустимых параметров, как описано в разделе
"Проверка параметров". Если выполнение разрешено продолжать, эти функции
возвращаются EOF и errno задаются EINVAL в значение .
Комментарии
Функция _cscanf_s считывает данные из консоли в места, указанные функцией
argument . Функция _getche используется для чтения символов. Каждый
дополнительный параметр должен быть указателем на переменную, тип которой
соответствует спецификатору типа в параметре format . Формат управляет
интерпретацией полей ввода и имеет ту же форму и функцию, что format и
параметр для scanf_s функции. Хотя _cscanf_s обычно выполняется эхо входной
символ, он не делает этого, если последний вызов был выполнен _ungetch .
7 Примечание
Требования
Подпрограмма Обязательный заголовок
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_cscanf_s.c
// compile with: /c
*/
#include <stdio.h>
#include <conio.h>
int i;
_cprintf_s( "\r\n" );
Input
1 2 3
Output
You entered 1 2 3
Синтаксис
C
_Dcomplex csin(
_Dcomplex z
);
_Fcomplex csin(
_Fcomplex z
); // C++ only
_Lcomplex csin(
_Lcomplex z
); // C++ only
_Fcomplex csinf(
_Fcomplex z
);
_Lcomplex csinl(
_Lcomplex z
);
Параметры
z
Возвращаемое значение
Синус z в радианах.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки csin , которые
принимают и возвращают значения _Fcomplex и _Lcomplex . В программе на языке
C csin всегда принимает и возвращает значение _Dcomplex .
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
_Dcomplex csinh(
_Dcomplex z
);
_Fcomplex csinh(
_Fcomplex z
); // C++ only
_Lcomplex csinh(
_Lcomplex z
); // C++ only
_Fcomplex csinhf(
_Fcomplex z
);
_Lcomplex csinhl(
_Lcomplex z
);
Параметры
z
Возвращаемое значение
Гиперболический синус аргумента z в радианах.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки csinh , которые
принимают и возвращают значения _Fcomplex и _Lcomplex . В программе на языке
C csinh всегда принимает и возвращает значение _Dcomplex .
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
_Dcomplex csqrt(
_Dcomplex z
);
_Fcomplex csqrt(
_Fcomplex z
); // C++ only
_Lcomplex csqrt(
_Lcomplex z
); // C++ only
_Fcomplex csqrtf(
_Fcomplex z
);
_Lcomplex csqrtl(
_Lcomplex z
);
Параметры
z
Комплексное число.
Возвращаемое значение
Квадратный корень числа z . Результат отображается в правой половине
плоскости.
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
_Dcomplex ctan(
_Dcomplex z
);
_Fcomplex ctan(
_Fcomplex z
); // C++ only
_Lcomplex ctan(
_Lcomplex z
); // C++ only
_Fcomplex ctanf(
_Fcomplex z
);
_Lcomplex ctanl(
_Lcomplex z
);
Параметры
z
Возвращаемое значение
Тангенс z .
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки ctan , которые
принимают и возвращают значения _Fcomplex и _Lcomplex . В программе на языке
C ctan всегда принимает и возвращает значение _Dcomplex .
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
_Dcomplex ctanh(
_Dcomplex z
);
_Fcomplex ctanh(
_Fcomplex z
); // C++ only
_Lcomplex ctanh(
_Lcomplex z
); // C++ only
_Fcomplex ctanhf(
_Fcomplex z
);
_Lcomplex ctanhl(
_Lcomplex z
);
Параметры
z
Возвращаемое значение
Комплексный гиперболический тангенс z .
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки ctanh , которые
принимают и возвращают значения _Fcomplex и _Lcomplex . В программе на языке
C ctanh всегда принимает и возвращает значение _Dcomplex .
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
Параметры
sourceTime
Возвращаемое значение
Указатель на результирующую строку символов. NULL возвращается, когда:
Комментарии
Функция ctime преобразует значение времени, хранящееся в виде time_t значения,
в символьную строку. Значение sourceTime обычно получается из вызова time,
который возвращает количество секунд, прошедшее с полуночи (00:00:00), 1
января 1970 года, скоординированное универсальное время (UTC). Строка
возвращаемого значения содержит ровно 26 символов и имеет следующий вид:
Output
Время в 24-часовом формате. Все поля имеют постоянную ширину. Символ новой
строки ("\n") и нуль-символ ("\0") занимают две последние позиции строки.
Эти функции проверяют свои параметры. Если sourceTime это пустой указатель или
sourceTime значение отрицательное, эти функции вызывают обработчик
недопустимых параметров, как описано в разделе "Проверка параметров". Если
выполнение может быть продолжено, эти функции возвращают NULL и
устанавливают параметр errno в значение EINVAL .
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, ознакомьтесь с глобальным состоянием в CRT.
Требования
Подпрограмма Обязательный заголовок
ctime <time.h>
_ctime32 <time.h>
_ctime64 <time.h>
Пример
C
// crt_ctime64.c
*/
#include <time.h>
#include <stdio.h>
__time64_t ltime;
_time64( <ime );
Output
asctime, _wasctime
Синтаксис
C
errno_t ctime_s(
char* buffer,
size_t numberOfElements,
);
errno_t _ctime32_s(
char* buffer,
size_t numberOfElements,
);
errno_t _ctime64_s(
char* buffer,
size_t numberOfElements,
errno_t _wctime_s(
wchar_t* buffer,
size_t numberOfElements,
);
errno_t _wctime32_s(
wchar_t* buffer,
size_t numberOfElements,
);
errno_t _wctime64_s(
wchar_t* buffer,
size_t numberOfElements,
);
C++
template <size_t size>
errno_t _ctime32_s(
char (&buffer)[size],
); // C++ only
errno_t _ctime64_s(
char (&buffer)[size],
); // C++ only
errno_t _wctime32_s(
wchar_t (&buffer)[size],
); // C++ only
errno_t _wctime64_s(
wchar_t (&buffer)[size],
); // C++ only
Параметры
buffer
формате UTC.
numberOfElements
Размер буфера.
sourceTime
Условия ошибок
buffer numberOfElements sourceTime Возвращает Значение
в buffer
Комментарии
Функция ctime_s преобразует значение времени, хранящееся в виде time_t
структуры, в символьную строку. Значение sourceTime обычно получается из
вызова time, который возвращает количество секунд, прошедшее с полуночи
(00:00:00), 1 января 1970 года, скоординированное универсальное время (UTC).
Строка возвращаемого значения содержит ровно 26 символов и имеет следующий
вид:
Время в 24-часовом формате. Все поля имеют постоянную ширину. Символ новой
строки ("\n") и нуль-символ ("\0") занимают две последние позиции строки.
Преобразованная символьная строка также настраивается согласно параметрам
местного часового пояса. Сведения о настройке местного времени см. в
timeразделе и _ftimelocaltime функциях. Дополнительные сведения об определении
среды часового пояса и глобальных переменных см. в _tzset этой функции.
Версии библиотек отладки этих функций сначала заполняют буфер 0xFE. Чтобы
отключить это поведение, используйте _CrtSetDebugFillThreshold.
Требования
Подпрограмма Обязательный заголовок
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_wctime_s.c
#include <time.h>
#include <stdio.h>
#define SIZE 26
time_t ltime;
wchar_t buf[SIZE];
errno_t err;
time( <ime );
if (err != 0)
Output
asctime_s, _wasctime_s
) Важно!
) Важно!
Синтаксис
C
intptr_t _cwait(
int *termstat,
intptr_t procHandle,
int action
);
Параметры
termstat
procHandle
action
Возвращаемое значение
Если указанный процесс успешно выполнен, возвращает дескриптор указанного
процесса и задает для параметра termstat код результата, возвращенный
указанным процессом. В противном случае возвращает -1 и задает errno
следующим образом.
Значение Описание
errno
Комментарии
Функция _cwait ожидает завершения ИД процесса указанного процесса,
предоставленного параметром procHandle . Значение procHandle , передаваемое в
_cwait , должно быть значением, возвращаемым вызовом _spawn функции,
Пример
C
// crt_cwait.c
// compile with: /c
#define _CRT_RAND_S
#include <windows.h>
#include <process.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
struct PROCESS
intptr_t hProcess;
char name[40];
int termstat, c;
if (argc == 1)
_flushall();
process[c].name, NULL);
c = getrandom(0, 3);
else
Output
Синтаксис
C
void* pExceptionObject
_ThrowInfo* pThrowInfo
);
Параметры
pExceptionObject
pThrowInfo
Комментарии
Этот метод включается только в файл компилятора, который используется
компилятором для обработки исключений. Не вызывайте метод непосредственно
из кода.
Требования
Источник: Throw.cpp
Синтаксис
C
Параметры
timeEnd
Время окончания.
timeStart
Время начала.
Возвращаемое значение
difftime возвращает затраченное время между timeStart и timeEnd в секундах.
Возвращаемое значение представляет собой число двойной точности с
плавающей запятой. Возвращаемое значение может быть равно 0, что указывает
на ошибку.
Комментарии
Функция difftime вычисляет разницу между двумя значениями времени,
заданными в параметрах timeStart и timeEnd .
Эти функции проверяют свои параметры. Если любой из параметров равен нулю
или отрицательным, вызывается обработчик недопустимых параметров, как
описано в разделе "Проверка параметров". Если разрешается продолжать
выполнение, эти функции возвращают -0 и задают для errno значение EINVAL .
Требования
Подпрограмма Обязательный заголовок
difftime <time.h>
_difftime32 <time.h>
_difftime64 <time.h>
Пример
C++
// crt_difftime.c
//
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <float.h>
+ range_min);
long loop;
double arNums[3];
time( &start );
time( &finish );
Output
Синтаксис
C
div_t div(
int numer,
int denom
);
ldiv_t ldiv(
long numer,
long denom
);
lldiv_t lldiv(
);
C++
ldiv_t div(
long numer,
long denom
); /* C++ only */
lldiv_t div(
); /* C++ only */
Параметры
numer
Числитель.
denom
Знаменатель.
Возвращаемое значение
div вызывается с помощью аргументов типа int , возвращает структуру типа
Комментарии
Функция div делится numer на denom и вычисляет цитент и оставшуюся часть.
Структура div_t содержит частное ( quot ) и остаток ( rem ). Знак цитаты совпадает со
знаком математического кворента. Его абсолютное значение является крупнейшим
целым числом, которое меньше абсолютного значения математического кворента.
Если знаменатель равен 0, выполнение программы прекратится и появится
сообщение об ошибке.
Перегрузки, которые принимают аргументы div типа long или long long доступны
только для кода C++. Возвращаемые типы ldiv_t и lldiv_t содержат элементы quot ,
rem которые имеют те же значения, что и члены div_t .
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_div.c
// arguments: 876 13
//
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int x,y;
div_t div_result;
x = atoi( argv[1] );
y = atoi( argv[2] );
div_result = div( x, y );
div_result.quot, div_result.rem );
Output
x is 876, y is 13
Создает второй дескриптор файла для открытого файла ( _dup ) или переназначает
дескриптор файла ( _dup2 ).
Синтаксис
C
Параметры
fd , fd1
fd2
Возвращаемое значение
Функция _dup возвращает новый дескриптор файла. Функция _dup2 возвращает 0 в
случае успеха. Если возникает ошибка, каждая функция возвращает значение -1 и
задает errno EBADF значение, если дескриптор файла недопустим, или EMFILE если
дескрипторы файлов недоступны. При передаче недопустимого дескриптора файла
функция также вызывает обработчик недопустимых параметров, как описано в
разделе "Проверка параметров".
Комментарии
Функции _dup и _dup2 связывают второй дескриптор файла с текущим открытым
файлом. Их можно использовать для связывания предопределенного дескриптора
файла, например stdout , с другим файлом. Операции с файлом можно выполнять с
использованием любого дескриптора файла. При создании нового дескриптора
тип доступа к файлу не изменяется. Функция _dup возвращает следующий
доступный дескриптор файла для указанного файла. Функция _dup2 принудительно
устанавливает fd2 на тот же файл, что и fd1 . Если во время вызова дескриптор fd2
связан с открытым файлом, этот файл закрывается.
Требования
Подпрограмма Обязательный заголовок
_dup <io.h>
_dup2 <io.h>
Пример
C
// crt_dup.c
#include <io.h>
#include <stdlib.h>
#include <stdio.h>
int old;
FILE *DataFile;
if( old == -1 )
exit( 1 );
exit( 1 );
exit( 1 );
fflush( stdout );
fclose( DataFile );
_dup2( old, 1 );
_flushall();
Output
_close
_creat, _wcreat
_open, _wopen
_dupenv_s , _wdupenv_s
Статья • 03.04.2023
) Важно!
Синтаксис
C
errno_t _dupenv_s(
char **buffer,
size_t *numberOfElements,
);
errno_t _wdupenv_s(
wchar_t **buffer,
size_t *numberOfElements,
);
Параметры
buffer
numberOfElements
Размер buffer .
varname
Возвращаемое значение
Нуль при успешном выполнении, код ошибки при сбое.
Эти функции проверяют свои параметры; Если buffer или varname имеет значение
NULL , обработчик недопустимых параметров вызывается, как описано в разделе
Проверка параметров. Если выполнение может быть продолжено, функции задают
для errno значение EINVAL и возвращают EINVAL .
Если эти функции не могут выделить достаточно памяти, они устанавливают для и
buffer NULL numberOfElements значение 0 и возвращают . ENOMEM
Комментарии
Функция _dupenv_s выполняет поиск в списке переменных среды для varname . Если
переменная найдена, _dupenv_s выделяет буфер и копирует значение переменной
в буфер. Адрес и длина буфера возвращаются в buffer и numberOfElements .
Поскольку он выделяет сам буфер, _dupenv_s предоставляет более удобную
альтернативу , _wgetenv_s.getenv_s
7 Примечание
Если вас не интересует размер буфера, можно передать NULL для numberOfElements .
Требования
Подпрограмма Обязательный заголовок
_dupenv_s <stdlib.h>
Пример
C
// crt_dupenv_s.c
#include <stdlib.h>
char *pValue;
size_t len;
free( pValue );
Output
pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)
Константы среды
_dupenv_s_dbg, _wdupenv_s_dbg
getenv_s, _wgetenv_s
_putenv_s, _wputenv_s
_dupenv_s_dbg , _wdupenv_s_dbg
Статья • 03.04.2023
Синтаксис
C
errno_t _dupenv_s_dbg(
char **buffer,
size_t *numberOfElements,
int lineNumber
);
errno_t _wdupenv_s_dbg(
wchar_t **buffer,
size_t * numberOfElements,
int blockType,
int lineNumber
);
Параметры
buffer
numberOfElements
Размер buffer .
varname
blockType
lineNumber
Возвращаемое значение
Нуль при успешном выполнении, код ошибки при сбое.
Эти функции проверяют свои параметры; Если buffer или varname имеет значение
NULL , обработчик недопустимых параметров вызывается, как описано в разделе
Если эти функции не могут выделить достаточно памяти, они устанавливают для и
buffer NULL numberOfElements значение 0 и возвращают . ENOMEM
Комментарии
_dupenv_s_dbg Функции и _wdupenv_s_dbg идентичны _dupenv_s и _wdupenv_s за
исключением того, что при _DEBUG определении эти функции используют
отладочную версию malloc, _malloc_dbgдля выделения памяти для значения
переменной среды. Сведения о функциях отладки _malloc_dbg см. в разделе
_malloc_dbg.
Требования
Подпрограмма Обязательный заголовок
_dupenv_s_dbg <crtdbg.h>
_wdupenv_s_dbg <crtdbg.h>
Пример
C
// crt_dupenv_s_dbg.c
#include <stdlib.h>
#include <crtdbg.h>
char *pValue;
size_t len;
free( pValue );
Output
pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)
Константы среды
getenv_s, _wgetenv_s
_putenv_s, _wputenv_s
ecvt
Статья • 03.04.2023
Синтаксис
C
char *_ecvt(
double value,
int count,
int *dec,
int *sign
);
Параметры
value
count
dec
sign
Возвращаемое значение
_ecvt возвращает указатель на строку цифр; NULL , если произошла ошибка.
Комментарии
Функция _ecvt преобразует число с плавающей запятой в строку символов.
Параметр value представляет собой преобразуемое число с плавающей запятой.
Эта функция сохраняет до count разрядов параметра value в виде строки и
добавляет нуль-символ ("\0"). Если количество разрядов в value превышает count ,
младший разряд округляется. Если количество разрядов меньше count , строка
дополняется нулями.
Эта функция проверяет свои параметры. Если dec или sign имеет NULL значение
count 0, вызывается обработчик недопустимых параметров, как описано в разделе
"Проверка параметров". Если выполнение разрешено продолжать, errno
устанавливается значение EINVAL и NULL возвращается.
Требования
Компонент Обязательный заголовок
_ecvt <stdlib.h>
// crt_ecvt.c
#include <stdlib.h>
#include <stdio.h>
char *buffer;
Output
_fcvt
_gcvt
_ecvt_s
Статья • 03.04.2023
Синтаксис
C
errno_t _ecvt_s(
char * buffer,
size_t sizeInBytes,
double value,
int count,
int *dec,
int *sign
);
errno_t _ecvt_s(
char (&buffer)[size],
double value,
int count,
int *dec,
int *sign
); // C++ only
Параметры
buffer
sizeInBytes
value
count
dec
Возвращаемое значение
Нуль при успешном завершении. Возвращаемое значение — это код ошибки, если
произошел сбой. Коды ошибок определяются в файле ERRNO.H. Дополнительные
сведения см. в разделе errno, _doserrnoи _sys_errlist_sys_nerr.
Условия ошибок
Проблемы с безопасностью
_ecvt_s может привести к нарушению доступа, если buffer не указывает на
Комментарии
Функция _ecvt_s преобразует число с плавающей запятой в строку символов.
Параметр value представляет собой преобразуемое число с плавающей запятой.
Эта функция сохраняет до count разрядов параметра value в виде строки и
добавляет нуль-символ ("\0"). Если количество разрядов в value превышает count ,
младший разряд округляется. Если количество разрядов меньше count , строка
дополняется нулями.
Отладочная версия этой функции сначала заполняет буфер 0xFE. Чтобы отключить
это поведение, используйте _CrtSetDebugFillThreshold.
Требования
Компонент Обязательный заголовок Необязательный заголовок
Пример
C
// ecvt_s.c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main( )
char * buf = 0;
int decimal;
int sign;
int err;
if (err != 0)
exit(1);
Output
_ecvt
_fcvt_s
_gcvt_s
_endthread , _endthreadex
Статья • 03.04.2023
Синтаксис
C
void _endthreadex(
unsigned retval
);
Параметры
retval
Комментарии
Можно явно вызвать _endthread или _endthreadex , чтобы завершить поток; однако
_endthread или _endthreadex вызываются автоматически при возврате из
подпрограммы потока, переданного в качестве параметра в _beginthread или
_beginthreadex . Завершение потока вызовом функции endthread или _endthreadex
7 Примечание
Win32 CloseHandle .
7 Примечание
Требования
Компонент Обязательный заголовок
_endthread <process.h>
_endthreadex <process.h>
Библиотеки
Только многопоточные версии библиотек времени выполнения языка C .
Пример
См. пример для _beginthread.
_beginthread, _beginthreadex
eof
Статья • 03.04.2023
Синтаксис
C
int _eof(
int fd
);
Параметры
fd
Возвращаемое значение
_eof возвращает значение 1, если текущая позиция является концом файла, или 0,
если это не так. Возвращаемое значение -1 указывает на ошибку; В этом случае
вызывается обработчик недопустимых параметров, как описано в разделе
"Проверка параметров". Если выполнение может быть продолжено, errno
принимает значение EBADF , что указывает на недопустимый дескриптор файла.
Комментарии
Функция _eof определяет, достигнут ли конец файла, связанного с fd .
Требования
Компонент Обязательный заголовок Необязательный заголовок
Компонент Обязательный заголовок Необязательный заголовок
Пример
C
// crt_eof.c
//
#include <io.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <share.h>
char buf[10];
exit( 1 );
while( !_eof( fh ) )
break;
total += count;
_close( fh );
Вывод
Output
См. также
Обработка ошибок
Низкоуровневый ввод-вывод
clearerr
feof
ferror
perror, _wperror
erf , erff , erfl , erfc , erfcf , erfcl
Статья • 03.04.2023
Синтаксис
C
double erf(
double x
);
float erf(
float x
); // C++ only
long double x
); // C++ only
float erff(
float x
);
long double x
);
double erfc(
double x
);
float erfc(
float x
); // C++ only
long double x
); // C++ only
float erfcf(
float x
);
long double x
);
Параметры
x
Комментарии
Функции erf вычисляют функцию x ошибки Gauss, определяемую следующим
образом:
Так как C++ разрешает перегрузку, можно вызывать erf и erfc перегрузки,
которые принимают и возвращают long double float и типы. В программе C, если
вы не используете <макрос tgmath.h> для вызова этой функции, erf и erfc всегда
принимаете и не возвращаете . double
Требования
Компонент Обязательный заголовок
) Важно!
) Важно!
Синтаксис
C
intptr_t _execl(
NULL
);
intptr_t _wexecl(
NULL
);
Параметры
cmdname
Возвращаемое значение
В случае успешного выполнения эти функции не возвращаются в вызывающий
процесс. Возвращаемое значение -1 указывает на ошибку, в этом случае errno
задается глобальная переменная.
Значение Описание
errno
EMFILE Открыто слишком много файлов (необходимо открыть указанный файл, чтобы
определить, является ли он исполняемым).
Комментарии
Каждая из этих функций загружает и выполняет новый процесс, передавая все
аргументы командной строки как отдельные параметры. Первым аргументом
является имя команды или исполняемого файла, а второй должен быть таким же,
как первый. В процессе запуска он становится argv[0] . Третий аргумент — это
первый аргумент, argv[1] , выполняемого процесса.
Эти функции _execl проверяют свои параметры. Если или cmdname arg0 является
пустым указателем или пустой строкой, эти функции вызывают обработчик
недопустимых параметров, как описано в разделе Проверка параметров . Если
выполнение разрешено, эти функции устанавливают значение errno EINVAL и
возвращают значение -1. Новые процессы не выполняются.
Требования
Компонент Обязательный заголовок Необязательный заголовок
Пример
См. пример в _exec, _wexec functions.
abort
atexit
_onexit, _onexit_m
system, _wsystem
execle
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
intptr_t _execle(
NULL,
);
intptr_t _wexecle(
NULL,
);
Параметры
cmdname
envp
Значение Описание
errno
Комментарии
Каждая из этих функций загружает и выполняет новый процесс и передает каждый
аргумент командной строки как отдельный параметр, а также передает массив
указателей на параметры среды.
Эти функции _execle проверяют свои параметры. Если cmdname или arg0 является
пустым указателем или пустой строкой, эти функции вызывают обработчик
недопустимых параметров, как описано в разделе "Проверка параметров". Если
продолжение выполнения разрешено, эти функции устанавливают для errno
значение EINVAL и возвращают -1. Ни один новый процесс не запущен.
Требования
Компонент Обязательный заголовок Необязательный заголовок
Пример
См. пример в _execфункциях. _wexec
abort
atexit
_onexit, _onexit_m
system, _wsystem
execlp
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
intptr_t _execlp(
NULL
);
intptr_t _wexeclp(
NULL
);
Параметры
cmdname
Возвращаемое значение
В случае успешного выполнения эти функции не возвращаются в вызывающий
процесс. Возвращаемое значение -1 указывает на ошибку, в этом случае errno
задается глобальная переменная.
Значение Описание
errno
EMFILE Слишком много открытых файлов (указанный файл должен быть открыт, чтобы
определить, является ли он исполняемым).
Комментарии
Каждая из этих функций загружает и выполняет новый процесс и передает каждый
аргумент командной строки как отдельный параметр, а также использует
переменную среды PATH для поиска выполняемого файла.
Эти функции _execlp проверяют свои параметры. Если cmdname или arg0 является
пустым указателем или пустой строкой, эти функции вызывают обработчик
недопустимых параметров, как описано в разделе "Проверка параметров". Если
продолжение выполнения разрешено, эти функции устанавливают для errno
значение EINVAL и возвращают -1. Ни один новый процесс не запущен.
Требования
Компонент Обязательный заголовок Необязательный заголовок
Пример
См. пример в _execразделе " _wexec Функции".
abort
atexit
_onexit, _onexit_m
system, _wsystem
execlpe
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
intptr_t _execlpe(
NULL,
);
intptr_t _wexeclpe(
NULL,
);
Параметры
cmdname
envp
Значение Описание
errno
EMFILE Слишком много открытых файлов (указанный файл должен быть открыт, чтобы
определить, является ли он исполняемым).
Комментарии
Каждая из этих функций загружает и выполняет новый процесс и передает каждый
аргумент командной строки как отдельный параметр, а также передает массив
указателей на параметры среды. Для поиска выполняемого файла в таких функциях
используется переменная среды PATH .
Эти функции _execlpe проверяют свои параметры. cmdname Если одно или arg0
является пустым указателем или пустой строкой, эти функции вызывают
обработчик недопустимых параметров, как описано в разделе "Проверка
параметров". Если продолжение выполнения разрешено, эти функции
устанавливают для errno значение EINVAL и возвращают -1. Ни один новый
процесс не запущен.
Требования
Компонент Обязательный заголовок Необязательный заголовок
Пример
См. пример в _execразделе " _wexec Функции".
abort
atexit
_onexit, _onexit_m
system, _wsystem
execv
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
intptr_t _execv(
);
intptr_t _wexecv(
);
Параметры
cmdname
argv
Возвращаемое значение
В случае успешного выполнения эти функции не возвращаются в вызывающий
процесс. Возвращаемое значение -1 указывает на ошибку, в этом случае errno
задается глобальная переменная.
Значение Описание
errno
Значение Описание
errno
EMFILE Слишком много открытых файлов (указанный файл должен быть открыт, чтобы
определить, является ли он исполняемым).
Комментарии
Каждая из этих функций загружает и выполняет новый процесс, передавая ему
массив указателей на аргументы командной строки.
Эти функции _execv проверяют свои параметры. Если cmdname это пустой указатель
или argv если это пустой указатель, указатель на пустой массив или если массив
содержит пустую строку в качестве первого аргумента, функции вызывают
обработчик недопустимых параметров, _execv как описано в разделе "Проверка
параметров". Если продолжение выполнения разрешено, эти функции
устанавливают для errno значение EINVAL и возвращают -1. Ни один процесс не
запущен.
Требования
Компонент Обязательный заголовок Необязательный заголовок
Компонент Обязательный заголовок Необязательный заголовок
Пример
См. пример в _execфункциях. _wexec
abort
atexit
_onexit, _onexit_m
system, _wsystem
execve
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
intptr_t _execve(
);
intptr_t _wexecve(
);
Параметры
cmdname
argv
envp
Возвращаемое значение
В случае успешного выполнения эти функции не возвращаются в вызывающий
процесс. Возвращаемое значение -1 указывает на ошибку, в этом случае errno
задается глобальная переменная.
Значение Описание
errno
EMFILE Слишком много открытых файлов (указанный файл должен быть открыт, чтобы
определить, является ли он исполняемым).
Комментарии
Каждая из этих функций загружает и выполняет новый процесс, передавая ему
массив указателей на аргументы командной строки и массив указателей на
параметры среды.
Требования
Компонент Обязательный заголовок Необязательный заголовок
Пример
См. пример в _execразделе " _wexec Функции".
abort
atexit
_onexit, _onexit_m
system, _wsystem
execvp
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
intptr_t _execvp(
);
intptr_t _wexecvp(
);
Параметры
cmdname
argv
Возвращаемое значение
В случае успешного выполнения эти функции не возвращаются в вызывающий
процесс. Возвращаемое значение -1 указывает на ошибку, в этом случае errno
задается глобальная переменная.
Значение Описание
errno
Значение Описание
errno
EMFILE Слишком много открытых файлов (указанный файл должен быть открыт, чтобы
определить, является ли он исполняемым).
Комментарии
Каждая из этих функций загружает и выполняет новый процесс, передавая ему
массив указателей на аргументы командной строки и используя для поиска файла,
который необходимо выполнить, переменную среды PATH .
Пример
См. пример в _execразделе " _wexec Функции".
abort
atexit
_onexit, _onexit_m
system, _wsystem
execvpe
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
intptr_t _execvpe(
);
intptr_t _wexecvpe(
);
Параметры
cmdname
argv
envp
Возвращаемое значение
В случае успешного выполнения эти функции не возвращаются в вызывающий
процесс. Возвращаемое значение -1 указывает на ошибку, в этом случае errno
задается глобальная переменная.
Значение Описание
errno
Комментарии
Каждая из этих функций создает и выполняет новый процесс, передавая ему
массив указателей на аргументы командной строки и массив указателей на
параметры среды. Для поиска выполняемого файла в таких функциях используется
переменная среды PATH .
Пример
См. пример в _execфункциях. _wexec
abort
atexit
_onexit, _onexit_m
system, _wsystem
exit , _Exit , _exit
Статья • 03.04.2023
7 Примечание
Синтаксис
C
void exit(
);
void _Exit(
);
void _exit(
);
Параметры
status
Комментарии
Функции exit , _Exit и _exit завершают вызывающий процесс. Функция exit
вызывает деструкторы для объектов локального потока, а затем вызывает в
порядке "последним пришел — первым вышел" (LIFO) функции,
зарегистрированные atexit и _onexit , а затем очищает все файловые буферы
перед завершением процесса. Функции _Exit и _exit завершают процесс без
удаления объектов локального потока или обработки функций atexit или _onexit
, а также без очистки буферов потока.
становится доступным для среды узла или ожидающего вызова, если таковой
существует, после завершения процесса. Как правило, вызывающая функция задает
для status значение 0 для указания нормального завершения или принимает
другое значение для указания ошибки. Значение status становится доступным для
пакетной команды операционной системы ERRORLEVEL и представлено одной из
двух констант: EXIT_SUCCESS , которая представляет значение 0, или EXIT_FAILURE ,
которая представляет значение 1.
Функции exit , _Exit , _exit , quick_exit , _cexit и _c_exit ведут себя следующим
образом.
Функция Описание
При вызове exit _Exit функции деструкторы _exit для любых временных или
автоматических объектов, которые существуют во время вызова, не вызываются.
Автоматический объект — это нестатический локальный объект, определенный в
функции. Временный объект — это объект, созданный компилятором, например
значение, возвращаемое вызовом функции. Чтобы уничтожить автоматический
объект перед вызовом exit _Exit или _exit явным образом вызвать деструктор для
объекта, как показано ниже:
C++
void last_fn() {}
// ...
exit(0);
Требования
Компонент Обязательный заголовок
Пример
C
// crt_exit.c
#include <stdlib.h>
exit( 1 );
abort
atexit
_cexit, _c_exit
_onexit, _onexit_m
quick_exit
system, _wsystem
exp , expf , expl
Статья • 03.04.2023
Вычисляет экспоненту.
Синтаксис
C
double exp(
double x
);
float exp(
float x
); // C++ only
long double x
); // C++ only
float expf(
float x
);
long double x
);
Параметры
x
Возвращаемое значение
При exp успешном выполнении функции возвращают экспоненциальное значение
параметра x с плавающей запятой. То есть результатом является e x , где e является
основанием естественного логарифма. При переполнении функция возвращает
INF (бесконечность), а при переполнении exp — 0.
Комментарии
C++ допускает перегрузку, поэтому можно вызывать перегрузки exp , которые
принимают float аргумент или long double . В программе C, если вы не
используете <tgmath.h> макрос для вызова этой функции, exp всегда принимает и
возвращает double .
Требования
Компонент Обязательный заголовок C Обязательный заголовок C++
Пример
C
// crt_exp.c
#include <math.h>
#include <stdio.h>
double x = 2.302585093, y;
y = exp( x );
Output
_CIexp
exp2 , exp2f , exp2l
Статья • 03.04.2023
Синтаксис
C
double exp2(
double x
);
float exp2(
float x
); // C++ only
long double x
); // C++ only
float exp2f(
float x
);
long double x
);
Параметры
x
Значение экспоненты.
Возвращаемое значение
В случае успешного x выполнения возвращает экспонент base-2, то есть 2x. В
противном случае возвращается одно из следующих значений:
Проблема Возвращает
x = ±0 1
Проблема Возвращает
x = -INFINITY +0
x = +INFINITY +INFINITY
x = не число не число
Комментарии
Поскольку C++ допускает перегрузки, можно вызывать перегрузки функции exp2 ,
принимающие и возвращающие типы float и long double . В программе C, если вы
не используете <макрос tgmath.h> для вызова этой функции, exp2 всегда
принимает и возвращает значение double , если только макрос не используется в
<tgmath.h>.
Требования
Подпрограмма Заголовок C Заголовок C++
Синтаксис
C
void *_expand(
void *memblock,
size_t size
);
Параметры
memblock
size
Возвращаемое значение
Функция _expand возвращает указатель на перераспределенный блок памяти.
_expand в отличие от realloc нее, не удается переместить блок, чтобы изменить его
размер. Таким образом, если доступно достаточно памяти для расширения блока
без его перемещения, параметр _expand будет таким же, memblock как и
возвращаемое значение.
Если недостаточно памяти, чтобы развернуть блок без его перемещения, функция
возвращается NULL . Функция _expand никогда не возвращает блок, увеличенный до
меньшего размера, чем было запрошено. Если происходит сбой, параметр errno
указывает характер ошибки. Дополнительные сведения о errno , см. в разделе errno,
, _doserrno_sys_errlistи _sys_nerr.
Комментарии
Функция _expand изменяет размер блока ранее выделенного блока памяти,
пытаясь увеличить или уменьшить блок без его перемещения в куче. Параметр
memblock указывает на начало блока. Параметр size указывает новый размер
7 Примечание
Эта функция проверяет свои параметры. Если memblock это пустой указатель, эта
функция вызывает обработчик недопустимых параметров, как описано в разделе
"Проверка параметров". Если выполнение может быть продолжено, параметр
errno устанавливается в значение EINVAL , и функция возвращает значение NULL .
Если size значение больше _HEAP_MAXREQ , errno задано значение ENOMEM , а функция
возвращает . NULL
_expand <malloc.h>
Пример
C
// crt_expand.c
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
char *bufchar;
exit( 1 );
else
// Free memory
free( bufchar );
exit( 0 );
Output
calloc
free
malloc
_msize
realloc
_expand_dbg
Статья • 03.04.2023
Изменяет размер указанного блока памяти в куче путем его расширения или
сжатия (только отладочная версия).
Синтаксис
C
void *_expand_dbg(
void *userData,
size_t newSize,
int blockType,
int lineNumber
);
Параметры
userData
newSize
blockType
filename
lineNumber
Номер строки в исходном файле, где была запрошена операция расширения, или
NULL .
Комментарии
Функция _expand_dbg является отладочной версией функции _expand . Если _DEBUG
параметр не определен, каждый вызов _expand_dbg сводится к вызову _expand .
Функции _expand и _expand_dbg изменяют размер блока памяти в базовой куче, но
возможность _expand_dbg поддерживает несколько возможностей отладки: буферы
по обеим сторонам пользовательского участка блока для тестирования на наличие
утечек, параметр типа блока для отслеживания определенных типов выделения
памяти и сведения filename / lineNumber для определения источника запросов
выделения памяти.
_expand_dbg изменяет размер указанного блока памяти, выделяя под него немного
Если newSize больше исходного размера блока, блок памяти расширяется. Если во
время расширения блок памяти не удается развернуть в соответствии с требуемым
размером, NULL возвращается. Если newSize меньше исходного размера блока,
блок памяти сжимается до достижения нового размера.
Требования
Подпрограмма Обязательный заголовок
_expand_dbg <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Пример
C
// crt_expand_dbg.c
//
//
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <crtdbg.h>
long *buffer;
size_t size;
// Expand the buffer using _expand_dbg and show the new size
size );
free( buffer );
exit( 0 );
Output
Комментировать
Вывод этой программы зависит от того, способен ли ваш компьютер расширить
все разделы. Если все разделы развернуты, результат отражается в секции вывода.
_malloc_dbg
expm1 , expm1f , expm1l
Статья • 03.04.2023
Синтаксис
C
double expm1(
double x
);
float expm1(
float x
); // C++ only
long double x
); // C++ only
float expm1f(
float x
);
long double x
);
Параметры
x
Возвращаемое значение
При expm1 успешном выполнении функции возвращают значение с плавающей
запятой, представляющее ex - 1. При переполнении expm1 возвращает HUGE_VAL ,
expm1f возвращает HUGE_VALF , expm1l возвращает HUGE_VALL , а errno принимает
значение ERANGE . Дополнительные сведения о кодах возврата см. в разделе errno,
_doserrnoи _sys_nerr_sys_errlist.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки expm1 , которые
принимают и возвращают значения float и long double . Если вы не используете
<макрос tgmath.h> в программе C для вызова этой функции, expm1 всегда
принимает и возвращает значение double .
Требования
Подпрограмма Обязательный заголовок
Синтаксис
C
double fabs(
double x
);
float fabs(
float x
); // C++ only
long double x
); // C++ only
float fabsf(
float x
);
long double x
);
Параметры
x
Возвращаемое значение
Функции fabs возвращают абсолютное значение аргумента x . Ошибка не
возвращается.
Комментарии
C++ допускает перегрузку, поэтому при включении заголовка fabs можно
вызывать перегрузки <cmath> . В программе C, если вы не используете <tgmath.h>
макрос для вызова этой функции, fabs всегда принимает и возвращает double .
Требования
Компонент Обязательный заголовок C Обязательный заголовок C++
Пример
См. пример для abs.
_cabs
fclose , _fcloseall
Статья • 03.04.2023
Синтаксис
C
int fclose(
FILE *stream
);
Параметры
stream
Возвращаемое значение
Функция fclose возвращает 0, если поток был успешно закрыт. Функция _fcloseall
возвращает общее количество закрытых потоков. Обе функции возвращают EOF
для указания на ошибку.
Комментарии
Функция fclose закрывает stream . В противном stream случае NULL вызывается
обработчик недопустимых параметров, как описано в разделе "Проверка
параметров". Если выполнение может быть продолжено, функция fclose
присваивает errno значение EINVAL и возвращает EOF . Перед вызовом этой
функции рекомендуется всегда проверять stream указатель.
Функция _fcloseall закрывает все открытые потоки, кроме stdin , stdout , stderr (а
в MS-DOS также _stdaux и _stdprn ). Она также закрывает и удаляет все временные
файлы, созданные tmpfile . При использовании обеих функций все буферы,
связанные с потоком, перед закрытием сбрасываются. При закрытии потока
выделенные системой буферы освобождаются. Буферы, назначенные
пользователем и setbuf setvbuf не освобождаются автоматически.
7 Примечание
Требования
Компонент Обязательный заголовок
fclose <stdio.h>
_fcloseall <stdio.h>
Пример
См. пример для fopen.
_close
_fdopen, _wfdopen
fflush
fopen, _wfopen
freopen, _wfreopen
_fclose_nolock
Статья • 03.04.2023
Синтаксис
C
int _fclose_nolock(
FILE *stream
);
Параметры
stream
Возвращаемое значение
Функция _fclose_nolock возвращает 0, если поток был успешно закрыт. Возвращает
EOF для указания ошибки.
Комментарии
Эта функция представляет собой неблокирующую версию функции fclose . Он
идентичен, за исключением того, что он не защищен от вмешательства другими
потоками. Это может быть быстрее, так как это не приводит к дополнительным
издержкам блокировки других потоков. Используйте эту функции только в
потокобезопасных контекстах, например в однопоточных приложениях или если
вызываемая область уже обрабатывает изоляцию потоков.
Требования
Компонент Обязательный заголовок
_fclose_nolock <stdio.h>
_close
_fdopen, _wfdopen
fflush
fopen, _wfopen
freopen, _wfreopen
fcloseall
Статья • 03.04.2023
Синтаксис
C
char *_fcvt(
double value,
int count,
int *dec,
int *sign
);
Параметры
value
count
dec
sign
Возвращаемое значение
_fcvt возвращает указатель на строку цифр NULL при ошибке.
Комментарии
Функция _fcvt преобразует число с плавающей запятой в строку, завершаемую
нуль-символом. Параметр value представляет собой преобразуемое число с
плавающей запятой. Функция _fcvt сохраняет цифры параметра value в виде
строки и добавляет нуль-символ ("\0"). Параметр count определяет количество
цифр, сохраняемых после десятичной запятой. Избыточные цифры округляются до
count знаков. Если количество цифр меньше точности count , строка дополняется
нулями.
Эта функция проверяет свои параметры. Если dec или sign имеет NULL значение
count 0, вызывается обработчик недопустимых параметров, как описано в разделе
Требования
Компонент Обязательный заголовок
_fcvt <stdlib.h>
// crt_fcvt.c
#include <stdlib.h>
#include <stdio.h>
char *buffer;
Output
_ecvt
_gcvt
_fcvt_s
Статья • 03.04.2023
Синтаксис
C
errno_t _fcvt_s(
char* buffer,
size_t sizeInBytes,
double value,
int count,
int *dec,
int *sign
);
errno_t _fcvt_s(
char (&buffer)[size],
double value,
int count,
int *dec,
int *sign
); // C++ only
Параметры
buffer
sizeInBytes
value
count
dec
Возвращаемое значение
Нуль при успешном завершении. Возвращаемое значение — это код ошибки, если
произошел сбой. Коды ошибок определены в . errno.h Список этих ошибок см. в
разделе errno, и _doserrno_sys_errlist_sys_nerr.
Условия ошибок
Проблемы с безопасностью
_fcvt_s может привести к нарушению доступа, если buffer не указывает на
Комментарии
Функция _fcvt_s преобразует число с плавающей запятой в строку, завершаемую
нуль-символом. Параметр value представляет собой преобразуемое число с
плавающей запятой. Функция _fcvt_s сохраняет цифры параметра value в виде
строки и добавляет нуль-символ ("\0"). Параметр count определяет количество
цифр, сохраняемых после десятичной запятой. Избыточные цифры округляются до
count знаков. Если количество цифр меньше точности count , строка дополняется
нулями.
Отладочная версия этой функции сначала заполняет буфер 0xFE. Чтобы отключить
это поведение, используйте _CrtSetDebugFillThreshold.
Требования
Компонент Обязательный заголовок Необязательный заголовок
// fcvt_s.c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main()
char * buf = 0;
int decimal;
int sign;
int err;
if (err != 0)
exit(1);
Output
_ecvt_s
_gcvt_s
_fcvt
fdim , fdimf , fdiml
Статья • 03.04.2023
Синтаксис
C
double fdim(
double x,
double y
);
float fdim(
float x,
float y
); //C++ only
long double x,
long double y
); //C++ only
float fdimf(
float x,
float y
);
long double x,
long double y
);
Параметры
x
Возвращаемое значение
Возвращает положительную разность между x и y :
0 if x <= y
Проблема Возвращает
Комментарии
Поскольку C++ допускает перегрузки, можно вызывать перегрузки функции fdim ,
принимающие и возвращающие типы float и long double . В программе на языке
C, если вы не используете <макрос tgmath.h> для вызова этой функции, fdim
всегда принимает и возвращает double .
Требования
Компонент Заголовок C Заголовок C++
Связывает поток с файлом, который ранее был открыт для низкоуровневого ввода-
вывода.
Синтаксис
C
FILE *_fdopen(
int fd,
);
FILE *_wfdopen(
int fd,
);
Параметры
fd
mode
Возвращаемое значение
Каждая из этих функций возвращает указатель на открытый поток. Значение
указателя null обозначает ошибку. При возникновении ошибки вызывается
обработчик недопустимых параметров, как описано в разделе "Проверка
параметров". Если выполнение может быть продолжено, параметр errno
устанавливается в значение EBADF , означающее недопустимый идентификатор
файла, или в значение EINVAL , означающее, что параметр mode был пустым
указателем.
Символьная mode строка указывает тип доступа к файлу, запрошенного для файла:
mode Access
"r" Открывает для чтения. Если файл не существует или не удается найти, вызов
завершается ошибкой fopen .
"w" Открывает пустой файл для записи. Если указанный файл существует, его
содержимое удаляется.
"a" Открывается для записи в конце файла (добавление). Создает файл, если он не
существует.
"w+" Открывает пустой файл для чтения и записи. Если файл существует, его содержимое
удаляется.
Если файл открыт с помощью типа доступа "a" или "a+" , все операции записи
выполняются в конце файла. Указатель на файл можно переместить с помощью
fseek или rewind, но он всегда перемещается обратно в конец файла перед
выполнением любой операции записи. Таким образом, существующие данные не
могут быть перезаписаны. Если задан тип доступа "r+" , "w+" или "a+" , чтение и
запись разрешены (считается, что файл открыт для "обновления"). Однако при
переключении между чтением и записью должны быть промежуточные операции
fflush, fsetpos, fseek или rewind. Если требуется, можно указать текущую позицию
для операции fsetpos или fseek.
Помимо указанных выше значений, можно также включить mode следующие
символы, чтобы указать режим перевода для символов новой строки:
mode Поведение
Модификатор
r _O_RDONLY
Символы в строке mode Эквивалентное oflag значение для _open и _sopen
r+ _O_RDWR
b _O_BINARY
t _O_TEXT
c Нет
n Нет
Требования
Компонент Обязательный заголовок Заголовок C++
Пример
C
// crt_fdopen.c
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <share.h>
FILE *stream;
char inbuf[128];
// Open a file.
exit( 1 );
exit( 1 );
count++;
fclose( stream );
Line one
Line two
Вывод
Output
Lines in file: 2
См. также
Потоковый ввод-вывод
_dup, _dup2
fclose, _fcloseall
fopen, _wfopen
freopen, _wfreopen
_open, _wopen
feclearexcept
Статья • 03.04.2023
указанные аргументом .
Синтаксис
C
int feclearexcept(
int excepts
);
Параметры
excepts
Возвращаемое значение
Возвращает ноль, если excepts равно нулю, или если все указанные исключения
были успешно очищены. В противном случае возвращается ненулевое значение.
Комментарии
Функция feclearexcept пытается очистить флаги состояния исключений с
плавающей запятой, заданные excepts . Эта функция поддерживает макросы
исключений, определенные в fenv.h:
Макрос Описание
исключения
Аргумент excepts может быть выражен нулем, побитовым значением ИЛИ одним
или несколькими поддерживаемыми макросами исключений. Результат
применения всех остальных значений аргумента не определен.
Требования
Компонент Заголовок C Заголовок C++
fetestexcept
fegetenv
Статья • 03.04.2023
Синтаксис
C
int fegetenv(
fenv_t *penv
);
Параметры
penv
Возвращаемое значение
Возвращает 0, если среда с плавающей запятой успешно сохранена в penv . В
противном случае возвращается ненулевое значение.
Комментарии
Затем функция fegetenv задает текущую среду с плавающей запятой в объекте,
указанном с помощью функции penv . Среда с плавающей запятой представляет
собой набор флагов состояний и режимов управления, влияющих на вычисления с
плавающей запятой. Эта среда включает режим направления округления и флаги
состояния для исключений с плавающей запятой. Если penv не указывает на
допустимый fenv_t объект, последующее поведение не определено.
fesetenv
fegetexceptflag
Статья • 03.04.2023
Синтаксис
C
int fegetexceptflag(
fexcept_t* pstatus,
int excepts
);
Параметры
pstatus
excepts
Возвращаемое значение
При успешном выполнении возвращается 0. В противном случае возвращается
ненулевое значение.
Комментарии
Функция fegetexceptflag сохраняет текущее состояние флагов состояния
исключения с плавающей запятой, заданное с помощью функции excepts , в
объекте fexcept_t , на который указывает pstatus . Указатель pstatus должен
указывать на допустимый объект fexcept_t . В противном случае последующее
поведение функции будет неопределенным. Функция fegetexceptflag
поддерживает следующие макросы исключений, определенные в <файле fenv.h>:
Макрос Описание
исключения
Аргумент excepts может быть равен нулю. Кроме того, он может определяться с
помощью поддерживаемого макроса исключения с плавающей запятой, а также
побитовой операции ИЛИ для нескольких макросов. Действие любого другого
значения аргумента не определено.
Требования
Компонент Заголовок C Заголовок C++
fesetexceptflag
fegetround , fesetround
Статья • 03.04.2023
Синтаксис
C
int fegetround(void);
int fesetround(
int round_mode
);
Параметры
round_mode
Возвращаемое значение
При успешном выполнении fegetround возвращает режим округления как одно из
значений округляющего макроса с плавающей запятой. Возвращается
отрицательное значение, если текущий режим округления невозможно
определить.
Комментарии
Операции с плавающей запятой могут использовать один из нескольких режимов
округления. Эти режимы управляют тем, в каком направлении результаты
операций с плавающей запятой округляются в сторону при хранении результатов.
Ниже приведены имена и поведение макросов округления с плавающей запятой,
определенных в <fenv.h>:
Макрос Описание
Преобразование строк.
Требования
Компонент Заголовок C Заголовок C++
Компонент Заголовок C Заголовок C++
Синтаксис
C
int feholdexcept(
fenv_t *penv
);
Параметры
penv
Возвращаемое значение
Возвращает ноль, только если функция может успешно включить обработку
исключений с плавающей запятой без остановки.
Комментарии
Функция feholdexcept используется для сохранения состояния текущей среды с
плавающей запятой в объект fenv_t , на который указывает penv , и настройки
среды таким образом, чтобы при возникновении исключений с плавающей
запятой выполнение не прерывалось. Этот режим называется режимом без
остановки. Этот режим продолжается до тех пор, пока среда не будет
восстановлена с помощью fesetenv или feupdateenv.
Требования
Компонент Заголовок C Заголовок C++
feclearexcept
fesetenv
feupdateenv
feof
Статья • 03.04.2023
Синтаксис
C
int feof(
FILE *stream
);
Параметры
stream
Возвращаемое значение
Функция feof возвращает ненулевое значение, если операция чтения пытается
продолжить чтение файла после того, как он закончился; в противном случае
возвращается значение 0. Если указатель потока имеет значение NULL , функция
вызывает обработчик недопустимых параметров, как описано в разделе "Проверка
параметров". Если выполнение может быть продолжено, параметр errno
принимает значение EINVAL , а функция feof возвращает значение 0.
Комментарии
Подпрограмма feof (реализованная и как функция, и как макрос) определяет,
пройден ли конец stream . Если конец файла пройден, операции чтения
возвращают индикатор окончания файла, пока поток не будет закрыт или пока для
него не будет вызвана функция rewind, fsetpos , fseek или clearerr .
Например, если файл содержит 10 байтов и вы читаете 10 байт из файла,
возвращает значение 0, feof так как, несмотря на то, что указатель на файл
находится в конце файла, вы не пытались прочитать после конца. Функция feof
вернет ненулевое значение только после того, как вы попытаетесь прочитать 11-й
байт.
Требования
Компонент Обязательный заголовок
feof <stdio.h>
Пример
C
// crt_feof.c
#include <stdio.h>
#include <stdlib.h>
char buffer[100];
FILE *stream;
break;
total += count;
fclose( stream );
Line one.
Line two.
Вывод
Output
См. также
Обработка ошибок
Потоковый ввод-вывод
clearerr
_eof
ferror
perror, _wperror
feraiseexcept
Статья • 03.04.2023
Синтаксис
C
int feraiseexcept(
int excepts
);
Параметры
excepts
Возвращаемое значение
Если все заданные исключения вызваны успешно, возвращается 0.
Комментарии
Функция feraiseexcept пытается очистить исключения с плавающей запятой,
заданные функцией excepts . Функция feraiseexcept поддерживает эти макросы
исключений, определенные в <fenv.h>:
Макрос Описание
исключения
побочный эффект.
Требования
Компонент Заголовок C Заголовок C++
fesetexceptflag
feholdexcept
fetestexcept
feupdateenv
ferror
Статья • 03.04.2023
Синтаксис
C
int ferror(
FILE *stream
);
Параметры
stream
Возвращаемое значение
Если ошибок в потоке stream нет, подпрограмма ferror возвращает 0. В
противном случае возвращается ненулевое значение. Если поток имеет значение
NULL , ferror вызывает обработчик недопустимых параметров, как описано в
разделе "Проверка параметров". Если продолжение выполнения разрешено, эта
функции задает для errno значение EINVAL и возвращает 0.
Комментарии
Подпрограмма ferror (реализованная и как функция, и как макрос) проверяет
наличие ошибок чтения или записи в файле, связанном с потоком stream . Если
произошла ошибка, индикатор ошибки для потока остается установленным до тех
пор, пока поток не будет закрыт или перемотан назад или пока для потока не будет
вызвана функция clearerr .
Требования
Компонент Обязательный заголовок
ferror <stdio.h>
Пример
См. пример для feof.
Потоковый ввод-вывод
clearerr
_eof
feof
fopen, _wfopen
perror, _wperror
fesetenv
Статья • 03.04.2023
Синтаксис
C
int fesetenv(
);
Параметры
penv
Возвращаемое значение
Возвращает 0, если среда был успешно установлена. В противном случае
возвращается ненулевое значение.
Комментарии
Затем функция fesetenv задает текущую среду вычислений с плавающей запятой
на основе значения, сохраненного в объекте fenv_t , на который указывает penv .
Среда с плавающей запятой представляет собой набор флагов состояний и
режимов управления, влияющих на вычисления с плавающей запятой. Среда
включает режим округления и флаги состояния для исключений с плавающей
запятой. Если penv он не FE_DFL_ENV указан или не указывает на допустимый fenv_t
объект, последующее поведение не определено.
Требования
Компонент Заголовок C Заголовок C++
fegetenv
feclearexcept
feholdexcept
fesetexceptflag
fesetexceptflag
Статья • 03.04.2023
Синтаксис
C
int fesetexceptflag(
int excepts
);
Параметры
pstatus
excepts
Возвращаемое значение
Если успешно заданы все указанные флаги состояний исключения, возвращает 0. В
противном случае возвращается ненулевое значение.
Комментарии
Функция fesetexceptflag присваивает состоянию флагов состояний исключения с
плавающей запятой, заданных с помощью excepts , соответствующие значения
объекта fexcept_t , на который указывает pstatus . Это не вызывает исключения.
Указатель pstatus должен указывать на допустимый объект fexcept_t . В
противном случае последующее поведение функции будет неопределенным.
Функция fesetexceptflag поддерживает следующие значения макросов
исключения в excepts , определенных в <fenv.h>:
Макрос Описание
исключения
Аргумент excepts может быть равен нулю. Кроме того, он может определяться с
помощью поддерживаемого макроса исключения с плавающей запятой, а также
побитовой операции ИЛИ для нескольких макросов. Действие любого другого
значения аргумента не определено.
Требования
Компонент Заголовок C Заголовок C++
fegetexceptflag
fetestexcept
Статья • 03.04.2023
Синтаксис
C
int fetestexcept(
int excepts
);
Параметры
excepts
Возвращаемое значение
В случае успешного выполнения возвращает битовую маску, содержащую
побитовую операцию ИЛИ для макросов исключений с плавающей запятой,
которая соответствует установленным в данный момент флагам состояний
исключения. Если исключения не заданы, возвращает 0.
Комментарии
Чтобы определить исключения, которые были вызваны операцией с плавающей
запятой, используйте функцию fetestexcept. Чтобы указать флаги состояний
исключения, которые требуется проверить, используйте параметр excepts .
Функция fetestexcept использует эти макросы исключений, определенные в
<файле fenv.h> и excepts возвращаемое значение:
Макрос Описание
исключения
Макрос Описание
исключения
Требования
Компонент Заголовок C Заголовок C++
feclearexcept
feraiseexcept
feupdateenv
Статья • 03.04.2023
Синтаксис
C
int feupdateenv(
);
Параметры
penv
Возвращаемое значение
Если все действия успешно завершены, возвращает 0. В противном случае
возвращается ненулевое значение.
Комментарии
Функция feupdateenv выполняет несколько действий. Сначала она автоматически
сохраняет вызванные на данный момент флаги состояний исключения с
плавающей запятой. Затем эта функция задает текущую среду вычислений с
плавающей запятой на основе значения, сохраненного в объекте fenv_t , на
который указывает penv . Если penv объект не FE_DFL_ENV указан или не указывает
на допустимый fenv_t объект, последующее поведение не определено. После
этого функция feupdateenv вызывает локально сохраненные исключения с
плавающей запятой.
Чтобы использовать эту функцию, необходимо отключить оптимизацию
вычислений с плавающей запятой, которая может препятствовать доступу. Для
этого следует использовать директиву #pragma fenv_access(on) перед вызовом. Для
получения дополнительной информации см. fenv_access.
Требования
Компонент Заголовок C Заголовок C++
feclearexcept
feholdexcept
fesetexceptflag
fflush
Статья • 03.04.2023
Синтаксис
C
int fflush(
FILE *stream
);
Параметры
stream
Возвращаемое значение
Функция fflush возвращает 0, если содержимое буфера было успешно записано
на диск. Кроме того, значение 0 также возвращается в случаях, когда указанный
поток не имеет буфера или открыт только для чтения. Возвращаемое значение EOF
указывает на ошибку.
7 Примечание
Если функция fflush возвращает EOF , возможна потеря данных из-за ошибки
записи. При настройке обработчика критической ошибки лучше всего
отключить буферизацию с помощью функции setvbuf или использовать
процедуры низкоуровневого ввода-вывода, такие как _open , _close и _write ,
вместо функций ввода-вывода потока.
Комментарии
Функция fflush записывает на диск поток stream . Если поток был открыт в режиме
записи или был открыт в режиме обновления, а последняя операция была
записью, fflush записывает содержимое буфера потока в базовый файл или
устройство, а буфер удаляется. Если поток был открыт в режиме чтения или не
имеет буфера, вызов функции fflush не дает никаких результатов, и содержимое
буфера сохраняется. Вызов функции fflush отменяет результат любого
предыдущего вызова функции ungetc для потока. После вызова поток остается
открытым.
Если stream имеет значение NULL , поведение будет таким же, как при вызове
функции fflush для каждого открытого потока. Выполняется запись на диск всех
потоков, открытых в режиме записи, а также всех потоков в режиме обновления,
для которых последней была выполнена операция записи. Вызов не влияет на
другие потоки.
Требования
Компонент Обязательный заголовок
fflush <stdio.h>
// crt_fflush.c
// This sample gets a number from the user, then writes it to a file.
#include <stdio.h>
int * crash_the_program = 0;
int main(void)
FILE * my_file;
int my_number = 0;
scanf_s("%d", &my_number);
fflush(my_file);
if (my_number == 5)
*crash_the_program = 5;
// Normally, fflush is not needed as closing the file will write the
buffer.
fclose(my_file);
return 0;
Input
myfile.txt
User selected 5
fclose, _fcloseall
_flushall
setvbuf
_fflush_nolock
Статья • 03.04.2023
Синтаксис
C
int _fflush_nolock(
FILE *stream
);
Параметры
stream
Возвращаемое значение
См. раздел fflush.
Комментарии
Эта функция представляет собой неблокирующую версию функции fflush . Он
идентичен fflush , за исключением того, что он не защищен от вмешательства
другими потоками. Это может быть быстрее, так как это не приводит к
дополнительным издержкам блокировки других потоков. Используйте эту функции
только в потокобезопасных контекстах, например в однопоточных приложениях
или если вызываемая область уже обрабатывает изоляцию потоков.
Требования
Компонент Обязательный заголовок
Компонент Обязательный заголовок
_fflush_nolock <stdio.h>
fclose, _fcloseall
_flushall
setvbuf
fgetc , fgetwc
Статья • 03.04.2023
Синтаксис
C
int fgetc(
FILE *stream
);
wint_t fgetwc(
FILE *stream
);
Параметры
stream
Возвращаемое значение
fgetc возвращает символ, считанный как int , или EOF для отображения ошибки
или конца файла. fgetwc возвращает расширенный wint_tсимвол, соответствующий
считываемой или возвращаемой WEOF символу, чтобы указать ошибку или конец
файла. Для обеих функций следует использовать feof или ferror , чтобы различать
ошибки и конец файла. Если возникает ошибка чтения, то для потока
устанавливается индикатор ошибки. Если stream это NULL так, fgetc и fgetwc
вызовите обработчик недопустимых параметров, как описано в разделе "Проверка
параметров". Если выполнение может быть продолжено, эти функции
устанавливают параметр errno в значение EINVAL и возвращают значение EOF .
Комментарии
Каждая из этих функций считывает один символ в текущей позиции файла,
связанного со stream . Функция затем увеличивает указатель связанного файла
(если определен), чтобы он указывал на следующий символ. Если поток находится
в конце файла, для него устанавливается индикатор конца файла.
fgetc эквивалентна getc , но реализуется только как функция, а не как функция и
макрос.
Требования
Компонент Обязательный заголовок
fgetc <stdio.h>
Пример
C
// crt_fgetc.c
#include <stdio.h>
#include <stdlib.h>
FILE *stream;
char buffer[81];
int i, ch;
ch = fgetc( stream );
buffer[i] = (char)ch;
ch = fgetc( stream );
buffer[i] = '\0';
fclose( stream );
Input: crt_fgetc.txt
Input
Line one.
Line two.
Вывод
Output
Line one.
Line two.
См. также
Потоковый ввод-вывод
fputc, fputwc
getc, getwc
_fgetc_nolock , _fgetwc_nolock
Статья • 03.04.2023
Синтаксис
C
int _fgetc_nolock(
FILE *stream
);
wint_t _fgetwc_nolock(
FILE *stream
);
Параметры
stream
Возвращаемое значение
См.fgetcfgetwc
Комментарии
_fgetc_nolock и _fgetwc_nolock идентичны fgetc fgetwc и соответственно, за
исключением того, что они не защищены от помех другими потоками. Они могут
быть быстрее, так как они не влечет за собой затраты на блокировку других
потоков. Используйте эти функции только в потокобезопасных контекстах,
например в однопоточных приложениях или если вызываемая область уже
обрабатывает изоляцию потоков.
Требования
Компонент Обязательный заголовок
_fgetc_nolock <stdio.h>
Пример
C
// crt_fgetc_nolock.c
#include <stdio.h>
#include <stdlib.h>
FILE *stream;
char buffer[81];
int i, ch;
exit( 0 );
ch = fgetc( stream );
buffer[i] = (char)ch;
ch = _fgetc_nolock( stream );
buffer[i] = '\0';
fclose( stream );
Line one.
Line two.
Вывод
Output
Line one.
Line two.
См. также
Потоковый ввод-вывод
fputc, fputwc
getc, getwc
fgetchar
Статья • 03.04.2023
Синтаксис
C
Возвращаемое значение
_fgetchar возвращает символ, считывающийся как или int возвращающийся EOF ,
чтобы указать ошибку или конец файла. _fgetwchar возвращает расширенный
символ, wint_tсоответствующий считываемой или возвращаемой WEOF символу,
чтобы указать ошибку или конец файла. Для обеих функций следует использовать
feof или ferror , чтобы различать ошибки и конец файла.
Комментарии
Эти функции считывают один символ из stdin . Функция затем увеличивает
указатель связанного файла (если определен), чтобы он указывал на следующий
символ. Если поток находится в конце файла, для него устанавливается индикатор
конца файла.
Требования
Компонент Обязательный заголовок
_fgetchar <stdio.h>
Пример
C
// crt_fgetchar.c
//
#include <stdio.h>
#include <stdlib.h>
char buffer[81];
int i, ch;
ch = _fgetchar();
buffer[i] = (char)ch;
ch = _fgetchar();
buffer[i] = '\0';
Output
Line one.
Line two.
fputc, fputwc
getc, getwc
fgetpos
Статья • 03.04.2023
Синтаксис
C
int fgetpos(
FILE *stream,
fpos_t *pos
);
Параметры
stream
Целевой поток.
pos
Возвращаемое значение
В случае успеха fgetpos возвращает 0. При сбое возвращает ненулевое значение и
задает errno одну из следующих констант манифеста (определенных в STDIO. H):
EBADF это означает, что указанный поток не является допустимым указателем файла
или недоступен, или EINVAL означает stream , что значение или значение pos
недопустимо, например, если какой-либо из них является пустым указателем. Если
stream или pos является указателем NULL , функция вызывает обработчик
недопустимых параметров, как описано в разделе "Проверка параметров".
Комментарии
Функция fgetpos возвращает текущее значение индикатора позиции файла для
аргумента stream и сохраняет его в объекте, на который указывает pos . После
этого функция fsetpos может использовать данные, хранящиеся в указателе pos ,
для сброса указателя аргумента stream в позицию на момент времени, когда была
вызвана функция fgetpos . Значение pos хранится во внутреннем формате и
предназначено для использования только в функциях fgetpos и fsetpos .
Требования
Компонент Обязательный заголовок
fgetpos <stdio.h>
Пример
C
// crt_fgetpos.c
#include <stdio.h>
FILE *stream;
fpos_t pos;
char buffer[20];
return -1;
return -1;
return -1;
fclose( stream );
fsetpos
fgets , fgetws
Статья • 03.04.2023
Синтаксис
C
char *fgets(
char *str,
int numChars,
FILE *stream
);
wchar_t *fgetws(
wchar_t *str,
int numChars,
FILE *stream
);
Параметры
str
numChars
stream
Возвращаемое значение
Каждая из этих функций возвращает str . NULL возвращается в случае ошибки или
достижения конца файла. Чтобы определить, произошла ли ошибка, используйте
feof или ferror . Если str или stream является пустым указателем или numChars
Комментарии
Функция fgets считывает строку из входного аргумента stream и сохраняет ее в
str . fgets считывает символы из текущей позиции потока в и включая первый
символ новой строки, в конец потока или до тех пор, пока число прочитанных
символов не будет равно numChars - 1, в зависимости от того, что происходит
первым. Результат сохраняется в str с добавлением символа NULL. Считываемый
символ новой строки (если такой есть) включается в строку.
Требования
Компонент Обязательный заголовок
fgets <stdio.h>
// crt_fgets.c
#include <stdio.h>
FILE *stream;
char line[100];
else
fclose( stream );
Вход: crt_fgets.txt
Input
Line one.
Line two.
Вывод
Output
Line one.
См. также
Потоковый ввод-вывод
fputs, fputws
gets, _getws
puts, _putws
filelength
Статья • 03.04.2023
Синтаксис
C
long _filelength(
int fd
);
__int64 _filelengthi64(
int fd
);
Параметры
fd
Возвращаемое значение
Функции _filelength и _filelengthi64 возвращают длину целевого файла (в
байтах), связанного с дескриптором fd . Если fd дескриптор недопустимого файла,
эта функция вызывает обработчик недопустимых параметров, как описано в
разделе "Проверка параметров". Если выполнение разрешено продолжать, обе
функции возвращают -1L, чтобы указать ошибку EBADF и задать значение errno .
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Сведения об изменении этого поведения см. в разделе "Глобальное состояние" в
CRT.
Требования
Компонент Обязательный заголовок
Компонент Обязательный заголовок
_filelength <io.h>
_filelengthi64 <io.h>
Пример
См. пример для _chsize.
_chsize
_fileno
Синтаксис
C
int _fileno(
FILE *stream
);
Параметры
stream
Возвращаемое значение
_fileno возвращает дескриптор файла. Ошибка не возвращается. Результат не
определен, если stream не указан открытый файл. Если поток имеет значение NULL ,
_fileno вызывает обработчик недопустимых параметров, как описано в разделе
"Проверка параметров". Если продолжение выполнения разрешено, эта функция
возвращает -1 и задает для errno значение EINVAL .
7 Примечание
Комментарии
Подпрограмма _fileno возвращает дескриптор файла, в данный момент
связанный с stream . Эта подпрограмма реализуется как функция и макрос.
Сведения о выборе любой реализации см. в рекомендациях по выбору между
функциями и макросами.
Требования
Компонент Обязательный заголовок
_fileno <stdio.h>
Пример
C
// crt_fileno.c
//
#include <stdio.h>
Output
_fdopen, _wfdopen
_filelength, _filelengthi64
fopen, _wfopen
freopen, _wfreopen
_findclose
Статья • 03.04.2023
Синтаксис
C
int _findclose(
intptr_t handle
);
Параметры
handle
Возвращаемое значение
В случае успеха _findclose возвращает 0. В противном случае возвращает
значение -1 и задает errno ENOENT значение, указывающее, что не удалось найти
соответствующие файлы.
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Сведения об изменении этого поведения см. в разделе "Глобальное состояние" в
CRT.
Требования
Компонент Обязательный заголовок
_findclose <io.h>
Синтаксис
C
intptr_t _findfirst(
);
intptr_t _findfirst32(
intptr_t _findfirst64(
intptr_t _findfirsti64(
);
intptr_t _findfirst32i64(
);
intptr_t _findfirst64i32(
);
intptr_t _wfindfirst(
);
intptr_t _wfindfirst32(
);
intptr_t _wfindfirst64(
);
intptr_t _wfindfirsti64(
);
intptr_t _wfindfirst32i64(
);
intptr_t _wfindfirst64i32(
);
Параметры
filespec
fileinfo
Возвращаемое значение
В случае успешного выполнения возвращает уникальный дескриптор поиска,
_findfirst определяющий файл или группу файлов, соответствующих filespec
Значение Условие
errno
EINVAL Недопустимый параметр: filespec или fileinfo имеет значение NULL . Или
операционная система возвратила непредвиденную ошибку.
EINVAL Недопустимая спецификация имени файла или длина заданного имени файла
больше MAX_PATH .
Комментарии
После завершения необходимо вызвать _findclose функцию _findfirst или
_findnext (или любые варианты), если вызов _findfirst выполнен успешно.
_findclose освобождает ресурсы, используемые этими функциями в приложении.
Варианты этих функций поддерживают 32- или 64-разрядные типы времени и 32-
или 64-разрядные размеры файлов. Первый числовой суффикс ( 32 или 64 )
указывает размер типа времени; второй суффикс i32 или i64 показывает,
представлен ли размер файла как 32- или 64-разрядное целое число. Сведения о
том, какие версии поддерживают 32- и 64-разрядные типы времени и размеры
файлов, см. в следующей таблице. Суффикс i32 или i64 опущен, если он совпадает
с размером типа времени, поэтому _findfirst64 также поддерживает длину 64-
разрядных файлов и _findfirst32 поддерживает только 32-разрядную длину
файлов.
имен файлов.
Требования
Компонент Обязательный заголовок
_findfirst <io.h>
_findfirst32 <io.h>
_findfirst64 <io.h>
_findfirsti64 <io.h>
_findfirst32i64 <io.h>
_findfirst64i32 <io.h>
Найдите следующее имя , если оно есть, которое соответствует аргументу filespec
в предыдущем вызове _findfirst, а затем измените содержимое fileinfo структуры
соответствующим образом.
Синтаксис
C
int _findnext(
intptr_t handle,
);
int _findnext32(
intptr_t handle,
int _findnext64(
intptr_t handle,
);
int _findnexti64(
intptr_t handle,
);
int _findnext32i64(
intptr_t handle,
);
int _findnext64i32(
intptr_t handle,
);
int _wfindnext(
intptr_t handle,
);
int _wfindnext32(
intptr_t handle,
);
int _wfindnext64(
intptr_t handle,
);
int _wfindnexti64(
intptr_t handle,
);
int _wfindnext32i64(
intptr_t handle,
);
int _wfindnext64i32(
intptr_t handle,
);
Параметры
handle
fileinfo
Возвращаемое значение
В случае успеха возвращает 0. В противном случае возвращает значение -1 и
задает errno значение, указывающее характер сбоя. Возможные коды ошибок
приведены в следующей таблице.
Значение Условие
errno
Варианты этих функций поддерживают 32- или 64-разрядные типы времени и 32-
или 64-разрядные размеры файлов. Первый числовой суффикс ( 32 или 64 )
указывает размер используемого типа времени; второй суффикс i32 или
i64 показывает, представлен ли размер файла как 32- или 64-разрядное целое
число. Сведения о том, какие версии поддерживают 32- и 64-разрядные типы
времени и размеры файлов, см. в следующей таблице. Варианты, использующие
64-разрядный тип времени, допускают значение даты создания файла до 23:59:59
31 декабря 3000 года, время в формате UTC; варианты, использующие 32-
разрядные типы, могут представлять дату только до 23:59:59 18 января 2038 года,
время в формате UTC. Полночь 1 января 1970 года — нижняя граница диапазона
дат для всех этих функций.
Требования
Компонент Обязательный заголовок
_findnext <io.h>
_findnext32 <io.h>
_findnext64 <io.h>
_findnexti64 <io.h>
_findnext32i64 <io.h>
_findnext64i32 <io.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Синтаксис
C
Параметры
x
Комментарии
Эти примитивы с плавающей запятой реализуют версии макроса fpclassify CRT для
типов с плавающей запятой. Классификация аргумента x возвращается как одна из
этих констант, определенная в math.h:
Значение Описание
Значение Описание
Синтаксис
C
Параметры
x
Комментарии
Эти примитивы с плавающей запятой реализуют signbit макрос или функцию в CRT.
Они возвращают ненулевое значение, если бит знака задан в символике (мантиссе)
аргумента x . В противном случае они возвращают значение 0, если бит знака не
задан.
Параметры
x, y
Комментарии
Эти примитивы с плавающей запятой принимают два аргумента, x а y также
возвращают значение, показывающее их отношение упорядочения, выраженное
как побитовое или из этих констант, определенное в math.h:
Значение Описание
Синтаксис
C
Параметры
px
Комментарии
Эти примитивы с плавающей запятой реализуют версии C++ функции fpclassify CRT
для типов с плавающей запятой. Аргумент x вычисляется, а классификация
возвращается как одна из этих констант, определенных в math.h:
Значение Описание
Синтаксис
C
Параметры
px
exp
Синтаксис
C
Параметры
px
exp
Комментарии
Эти примитивы с плавающей запятой принимают указатель на значение px с
плавающей запятой и экспонентное значение exp , а по возможности
масштабируйте значение на px 2 exp . Возвращаемое значение является результатом
fpclassify входного значения в px том случае, если это naN или бесконечность, а
выходное значение — в px противном случае. Для переносимости предпочтите
ldexp, ldexpfфункции. ldexpl
Параметры
pexp
px
Комментарии
Эти примитивы с плавающей запятой разбивают значение с плавающей запятой,
указываемое на px знаки (мантисса) и экспоненту, если это возможно. Знак
масштабируется таким образом, что абсолютное значение больше или равно 0,5 и
меньше 1,0. Экспонентой является значение n , в котором исходное значение с
плавающей запятой равно масштабируемому признаку, равному 2n. Эта
целочисленная экспонента n хранится в расположении, на которое указывает
pexp . Возвращаемое значение является результатом fpclassify входного значения
в px том случае, если это naN или бесконечность, а в противном случае —
выходное значение. Для переносимости предпочтите frexp, frexpfфункции. frexpl
Синтаксис
C
Параметры
y
px
exp
Комментарии
Эти примитивы с плавающей запятой создают значение с плавающей запятой в
расположении, px y на которое указывает значение * 2exp. Возвращаемое значение
является результатом fpclassify входного значения в y том случае, если это naN
или бесконечность, а выходное значение — в px противном случае. Для
переносимости предпочтите ldexp, ldexpfфункции. ldexpl
_dnorm, _fdnorm
Синтаксис
C
Параметры
ps
Комментарии
Эти примитивы с плавающей запятой нормализуют дробную часть
недополученного значения с плавающей запятой и корректируют характеристику
или предвзятую степень в соответствии с ней. Значение передается в виде
побитового представления типа с плавающей запятой, преобразованного в массив
unsigned short через _double_val объединение , или _float_val объединения типа
punning, _ldouble_val объявленного в math.h. Возвращаемое значение является
результатом входного fpclassify значения с плавающей запятой, если это NaN или
бесконечность, а в противном случае — значение выходных данных.
Синтаксис
C
long double __cdecl _ldpoly(long double x, long double const* table, int n);
Параметры
x
table
Комментарии
Эти примитивы с плавающей запятой возвращают оценку x в полиномиале
порядка n , коэффициенты которого представлены соответствующими
постоянными значениями в table . Например, если table[0] = 3,0, table[1] = 4,0,
table[2] = 5,0 и n = 2, он представляет полиномиальный 5,0x2 + 4,0x + 3,0. Если
этот полиномиал вычисляется для x 2,0, результат будет равен 31,0. Эти функции
не используются внутри системы.
Синтаксис
C
double __cdecl _dlog(double x, int base_flag);
Параметры
x
base_flag
Комментарии
Эти примитивы с плавающей запятой возвращают естественный журнал x (ln(x)
или loge(x)), если base_flag равен 0. Они возвращают базу журнала 10 или
журнал10 x (x), если base_flag значение не равно нулю. Эти функции не
используются внутри системы. Для переносимости предпочтите функцииlog, , logf, ,
logllog10, log10fа также log10l.
Синтаксис
C
Параметры
x
quadrant
Требования
Заголовок: <math.h>
_fpclass, _fpclassf
isinf
isnormal
Синтаксис
C
double floor(
double x
);
float floor(
float x
); // C++ only
long double x
); // C++ only
float floorf(
float x
);
long double x
);
Параметры
x
Возвращаемое значение
Функции floor возвращают значение с плавающей запятой, которое представляет
наибольшее целое число, не превосходящее x . Ошибка не возвращается.
Требования
Компонент Обязательный заголовок
Пример
C
// crt_floor.c
#include <math.h>
#include <stdio.h>
double y;
y = floor( 2.8 );
y = floor( -2.8 );
y = ceil( 2.8 );
y = ceil( -2.8 );
Output
fmod, fmodf
flushall
Статья • 03.04.2023
Синтаксис
C
Возвращаемое значение
_flushall возвращает число открытых потоков (ввода и вывода). Ошибка не
возвращается.
Комментарии
По умолчанию функция _flushall записывает в соответствующие файлы
содержимое всех буферов, связанных с открытыми потоками вывода. Все буферы,
связанные с открытыми входными потоками, очищаются. (Эти буферы обычно
обслуживаются операционной системой, которая автоматически определяет
оптимальное время записи данных на диск: при заполнении буфера, при закрытии
потока или при нормальном завершении программы без закрытия потоков).
Требования
Компонент Обязательный заголовок
_flushall <stdio.h>
Пример
C
// crt_flushall.c
#include <stdio.h>
int numflushed;
numflushed = _flushall();
Output
_commit
fclose, _fcloseall
fflush
setvbuf
fma , fmaf , fmal
Статья • 09.05.2023
Синтаксис
C
double fma(
double x,
double y,
double z
);
float fma(
float x,
float y,
float z
); //C++ only
long double x,
long double y,
long double z
); //C++ only
float fmaf(
float x,
float y,
float z
);
long double x,
long double y,
long double z
);
Параметры
x
Возвращаемое значение
Возвращает приблизительно (x * y) + z . Возвращаемое значение затем
округляется с использованием текущего формата округления, хотя во многих
случаях оно возвращает неправильно округленные результаты, поэтому значение
может быть неточным до половины ULP от правильного значения.
Проблема Возвращает
x = INFINITY, y = 0 или
Не число
x = 0, y = INFINITY
Комментарии
Поскольку C++ допускает перегрузки, можно вызывать перегрузки функции fma ,
принимающие и возвращающие типы float и long double . В программе C, если вы
не используете <макрос tgmath.h> для вызова этой функции, fma всегда
принимает и возвращает double .
Требования
Компонент Заголовок C Заголовок C++
Синтаксис
C
double fmax(
double x,
double y
);
float fmax(
float x,
float y
); //C++ only
long double x,
long double y
); //C++ only
float fmaxf(
float x,
float y
);
long double x,
long double y
);
Параметры
x
Возвращаемое значение
В случае успешного выполнения возвращает большее из значений x или y .
Возвращаемое значение является точным и не зависит от любой формы
округления.
Проблема Возвращает
x = не число y
y = не число x
x и y = NaN Не число
Комментарии
Так как C++ разрешает перегрузку, можно вызывать перегрузки fmax, которые
принимают и возвращают float long double и типы. В программе C, если вы не
используете <макрос tgmath.h> для вызова этой функции, fmax всегда принимает и
возвращает значение double.
Требования
Компонент Заголовок C Заголовок C++
Синтаксис
C
double fmin(
double x,
double y
);
float fmin(
float x,
float y
); //C++ only
long double x,
long double y
); //C++ only
float fminf(
float x,
float y
);
long double x,
long double y
);
Параметры
x
Возвращаемое значение
В случае успешного выполнения возвращает меньшее из значений x или y .
Комментарии
Поскольку C++ допускает перегрузки, можно вызывать перегрузки функции fmin ,
принимающие и возвращающие типы float и long double . В программе C, если вы
не используете <макрос tgmath.h> для вызова этой функции, fmin всегда
принимает и возвращает значение double .
Требования
Подпрограмма Обязательный заголовок
Синтаксис
C
double fmod(
double x,
double y
);
float fmod(
float x,
float y
); // C++ only
long double x,
long double y
); // C++ only
float fmodf(
float x,
float y
);
long double x,
long double y
);
Параметры
x, y
Возвращаемое значение
Функция fmod возвращает остаток от деления x / y в виде числа с плавающей
запятой. Если значение y равно 0,0, fmod возвращает тихий NaN . Сведения о
представлении тихой NaN семьей см. в printf разделе printf.
Комментарии
Функция fmod вычисляет остаток f от деления x / y в виде числа с плавающей
запятой следующим образом: x = i * y + f , где i — это целое число, f имеет тот
же знак, что и x , а абсолютное значение f меньше абсолютного значения y .
Так как C++ допускает перегрузку, можно вызывать перегрузки fmod , которые
принимают и возвращают значения типов float и long double . В программе C,
если вы не используете <tgmath.h> макрос для вызова этой функции, fmod всегда
принимает два double аргумента и возвращает . double
Требования
Компонент Обязательный заголовок
Пример
C
// crt_fmod.c
#include <math.h>
#include <stdio.h>
z = fmod( w, x );
Output
_CIfmod
fopen , _wfopen
Статья • 27.04.2023
Синтаксис
C
FILE *fopen(
);
FILE *_wfopen(
);
Параметры
filename
Имя файла.
mode
Возвращаемое значение
Каждая из этих функций возвращает указатель на открытый файл. Значение
указателя null обозначает ошибку. Если filename или mode является NULL или
пустой строкой, эти функции активируют обработчик недопустимых параметров,
как описано в разделе Проверка параметров. Если продолжение выполнения
разрешено, эти функции возвращают NULL и устанавливают для errno значение
EINVAL .
Комментарии
Функция fopen открывает файл, указанный параметром filename . По умолчанию
узкая filename строка интерпретируется с помощью кодовой страницы ANSI
( CP_ACP ). В классических приложениях Windows ее можно изменить на кодовую
страницу изготовителя оборудования ( CP_OEMCP ) с помощью SetFileApisToOEM
функции . Функцию можно использовать, AreFileApisANSI чтобы определить,
интерпретируется ли filename она с помощью ANSI или системной кодовой
страницы OEM по умолчанию. _wfopen — это версия расширенных символов
fopen ; _wfopen аргументы являются строками расширенных символов. В противном
Поддержка Юникода
fopen поддерживает файловые потоки Юникода. Чтобы открыть файл Юникода,
передайте флаг ccs=encoding , задающий нужную кодировку, в fopen следующим
образом.
Если файл уже существует и открыт для чтения или добавления, кодировку
определяет любая метка порядка байтов (BOM) в файле. Кодировка BOM имеет
приоритет над кодировкой, указанной флагом ccs . Кодирование ccs
используется, только если метка BOM отсутствует или речь идет о новом файле.
7 Примечание
Флаг ccs Нет метки BOM (или новый файл) BOM: UTF-8 BOM: UTF-16
Символьная строка mode указывает тип доступа, который запрошен для файла,
следующим образом.
mode Access
"r" Открывает для чтения. Если файл не существует или его не удается найти, вызов
завершается ошибкой fopen .
"w" Открывает пустой файл для записи. Если указанный файл существует, его
содержимое удаляется.
"a" Открывается для записи в конце файла (добавление) без удаления маркера в конце
файла (EOF) перед записью новых данных в файл. Создает файл, если он не
существует.
"w+" Открывает пустой файл для чтения и записи. Если файл существует, его содержимое
удаляется.
Если файл открывается с помощью типа доступа "a" или "a+" , все операции
записи выполняются в конце файла. Указатель файла может быть перемещен с
помощью fseek или rewind, но он всегда возвращается в конец файла перед
выполнением любой операции записи. Таким образом, существующие данные
нельзя перезаписать.
Режим "a" не удаляет маркер EOF перед добавлением в файл. После добавления
команда MS-DOS TYPE отображает данные только до первоначального маркера
EOF и не отображает данные, добавленные в файл. Перед добавлением в файл
режим "a+" удаляет маркер EOF. После добавления команда TYPE MS-DOS
отображает все данные в файле. Режим "a+" требуется для добавления в файл
потока, который завершается маркером CTRL +Z EOF.
Если задан тип доступа "r+" , "w+" или "a+" , чтение и запись разрешены (считается,
что файл открыт для обновления). Однако при переходе от чтения к записи
операция ввода должна получить маркер конца файла. Если EOF отсутствует,
необходимо использовать промежуточный вызов функции позиционирования
файлов. Функции размещения файла — fsetpos , fseekи rewind. При переходе от
записи к чтению необходимо воспользоваться промежуточным вызовом функции
fflush или функции размещения файла.
mode Поведение
Модификатор
ccs=encoding Задает кодировку, используемую для данного файла (один из UTF-8 , UTF-
16LE или UNICODE ). Не указывайте никакое значение, если требуется
использовать кодировку ANSI. Этот флаг отделен от флагов, которые
предшествуют ему запятой ( , ). Пример: FILE *f = fopen("newfile.txt",
"rt+, ccs=UTF-8");
r _O_RDONLY
r+ _O_RDWR
b _O_BINARY
t _O_TEXT (переведено)
x _O_EXCL
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
В отношении T и D :
Требования
Компонент Обязательный заголовок
fopen <stdio.h>
ANSI.
Пример 1
Следующая программа открывает два файла. Она использует fclose для закрытия
первого файла и _fcloseall для закрытия всех остальных файлов.
// crt_fopen.c
#include <stdio.h>
int numclosed;
// Open for read (will fail if file "crt_fopen.c" does not exist)
else
else
if( stream)
if ( fclose( stream ) )
numclosed = _fcloseall( );
Output
Пример 2
Следующая программа создает файл (или перезаписывает его, если имеется) в
текстовом режиме с кодировкой Юникода. Затем она записывает две строки в
файл и закрывает его. Выходные данные — это файл с именем _wfopen_test.xml ,
который содержит данные из раздела выходных данных.
// crt__wfopen.c
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <wchar.h>
#define BUFFER_SIZE 50
wchar_t str[BUFFER_SIZE];
size_t strSize;
FILE* fileHandle;
wprintf(L"_wfopen failed!\n");
return(0);
strSize = wcslen(str);
wprintf(L"fwrite failed!\n");
strSize = wcslen(str);
wprintf(L"fwrite failed!\n");
if (fclose(fileHandle))
wprintf(L"fclose failed!\n");
return 0;
fclose, _fcloseall
_fdopen, _wfdopen
ferror
_fileno
freopen, _wfreopen
_open, _wopen
_setmode
_sopen, _wsopen
fopen_s , _wfopen_s
Статья • 27.04.2023
Синтаксис
C
errno_t fopen_s(
FILE** pFile,
);
errno_t _wfopen_s(
FILE** pFile,
);
Параметры
pFile
filename
mode
Возвращаемое значение
Возвращает нуль в случае успеха или код ошибки в случае неудачи.
Дополнительные сведения об этих кодах ошибок см. в разделах errno, _doserrno,
_sys_errlistи _sys_nerr.
Условия ошибок
Комментарии
Функции fopen_s и _wfopen_s не могут открыть файл для общего доступа. Если вам
нужно предоставить общий доступ к файлу, используйте _fsopen или _wfsopen с
соответствующей константой режима общего доступа, например используйте
_SH_DENYNO для общего доступа для чтения и записи.
Эти функции проверяют свои параметры. Если pFile , filename или mode является
пустым указателем, эти функции создают исключение недопустимого параметра,
как описано в разделе Проверка параметров.
Если файл уже существует и открыт для чтения или добавления, кодировку
определяет метка порядка байтов (BOM), если она присутствует в файле.
Кодировка, заданная меткой BOM, имеет приоритет над кодировкой, заданной
флагом ccs . Заданная флагом ccs кодировка используется, только если метка BOM
отсутствует или речь идет о новом файле.
7 Примечание
Флаг ccs Нет метки BOM (или новый файл) BOM: UTF-8 BOM: UTF-16
Если mode имеет значение "a, ccs=UNICODE" , "a, ccs=UTF-8" или "a, ccs=UTF-16LE" ,
fopen_s сначала пытается открыть файл с доступом на чтение и запись. Если эта
операция завершается успешно, функция считывает метку BOM, чтобы определить
кодировку для файла; если операция завершается сбоем, функция использует для
файла кодировку по умолчанию. В любом случае fopen_s повторно открывает
файл с доступом только для записи. (Это поведение относится только к режиму a ,
а не a+ к .)
Символьная строка mode указывает тип доступа, который запрошен для файла,
следующим образом.
mode Access
"r" Открывает для чтения. Если файл не существует или его не удается найти, вызов
завершается ошибкой fopen_s .
"w" Открывает пустой файл для записи. Если указанный файл существует, его
содержимое удаляется.
"a" Открывается для записи в конце файла (добавление) без удаления маркера в конце
файла (EOF) перед записью новых данных в файл. Создает файл, если он не
существует.
"w+" Открывает пустой файл для чтения и записи. Если файл существует, его содержимое
удаляется.
Если файл открывается с использованием типа доступа "a" или "a+" , все операции
записи выполняются в конце файла. Указатель на файл можно изменить с
помощью fseek или rewind, но он всегда перемещается обратно в конец файла
перед выполнением любой операции записи, чтобы существующие данные не
могли быть перезаписаны.
Режим "a" не удаляет маркер EOF перед добавлением в файл. После добавления
команда MS-DOS TYPE отображает только данные до исходного маркера EOF, но
не все данные, добавленные в файл. Перед добавлением в файл режим "a+"
удаляет маркер конца файла. После добавления команда MS-DOS TYPE отображает
все данные в файле . Режим "a+" необходим для добавления в файл потока,
который завершается маркером CTRL +Z EOF.
"r+" Если указан тип доступа , "w+" или "a+" , разрешено чтение и запись. (Файл
Начиная с C11, можно добавить "x" "w" в или "w+" , чтобы вызвать сбой функции,
если файл существует, вместо его перезаписи.
mode Поведение
Модификатор
R _O_RDONLY
r+ _O_RDWR
b _O_BINARY
t _O_TEXT (переведено)
c Нет
n Нет
D _O_TEMPORARY
R _O_RANDOM
S _O_SEQUENTIAL
T _O_SHORTLIVED
ccs=UNICODE _O_WTEXT
ccs=UTF-8 _O_UTF8
ccs=UTF-16LE _O_UTF16
Относительно T и D :
Требования
Компонент Обязательный заголовок Заголовок C++
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_fopen_s.c
#include <stdio.h>
errno_t err;
if( err == 0 )
else
if( err == 0 )
else
if( stream )
if ( err == 0 )
else
Output
fclose, _fcloseall
_fdopen, _wfdopen
ferror
_fileno
freopen, _wfreopen
_open, _wopen
_setmode
_fpclass , _fpclassf
Статья • 03.04.2023
Синтаксис
C
int _fpclass(
double x
);
int _fpclassf(
float x
); /* x64 only */
Параметры
x
Возвращаемое значение
Функции _fpclass и _fpclassf возвращают целое значение, указывающее
классификацию числа с плавающей запятой для аргумента x . Классификация
может иметь одно из следующих значений, определенных в <float.h> .
Значение Описание
_FPCLASS_PZ Положительный 0 (+ 0)
Комментарии
_fpclassf Эти _fpclass функции зависят от корпорации Майкрософт. Они похожи
Требования
Компонент Обязательный заголовок
fpclassify
fpclassify
Статья • 03.04.2023
Синтаксис
C
int fpclassify(
/* floating-point */ x
);
int fpclassify(
float x
); // C++ only
int fpclassify(
double x
); // C++ only
int fpclassify(
long double x
); // C++ only
Параметры
x
Возвращаемое значение
Функция fpclassify возвращает целое значение, указывающее классификацию
числа с плавающей запятой для аргумента x . В этой таблице показаны возможные
значения, возвращаемые параметром fpclassify <math.h>.
Значение Описание
Комментарии
В языке C функция fpclassify реализована как макрос, а в C++ fpclassify — это
функция, перегружаемая с использованием аргументов типа float , double или
long double . В обоих случаях возвращаемое значение зависит от действительного
типа выражения аргумента, а не от промежуточного представления. Например,
обычное значение double или long double при преобразовании в значение float
может становиться бесконечным, денормализованным или нулевым значением.
Требования
Функция или макрос Обязательный заголовок (C) Обязательный заголовок (C++)
Синтаксис
C
int _fpieee_flt(
int handler(_FPIEEE_RECORD *)
);
Параметры
excCode
Код исключения.
excInfo
handler
Возвращаемое значение
Возвращаемое значение _fpieee_flt представляет собой значение, возвращенное
handler . Как таковая, подпрограмма фильтра IEEE может быть использована в
выражении except механизма структурной обработки исключений (SEH).
Комментарии
Функция _fpieee_flt вызывает определяемый пользователем обработчик
исключений и прерываний для исключений IEEE с плавающей запятой и
предоставляет ему всю требуемую информацию. Эта подпрограмма выполняет
роль фильтра исключений в механизме SEH, который вызывает ваш собственные
обработчик исключений IEEE в случае необходимости.
Поле Описание
_FPIEEE_RECORD
RoundingMode
Эти unsigned int поля содержат сведения о среде с плавающей запятой
Precision во время возникновения исключения.
Operation Это unsigned int поле указывает тип операции, вызвавшей ловушку. Если
тип является сравнением ( _FpCodeCompare ), можно указать одно из
специальных _FPIEEE_COMPARE_RESULT значений (как определено в
Fpieee.h) в поле Result.Value . Тип преобразования ( _FpCodeConvert )
указывает на то, что захват произошел во время операции
преобразования числа с плавающей запятой. Типы Operand1 и Result
позволяют определить тип этого преобразования.
Operand1
Эти _FPIEEE_VALUE структуры указывают типы и значения предлагаемых
Operand2
результатов и операндов. Каждая структура содержит следующие поля:
Result
OperandValid — Флаг, указывающий, является ли значение ответа
допустимым.
Cause
_FPIEEE_EXCEPTION_FLAGS содержит битовое поле для каждого типа
Enable
исключения с плавающей запятой. Между этими полями и аргументами,
Status используемыми для маскирования предоставленных
_controlfpисключений, существует корреспонденция. Точное смысловое
значение каждого бита зависит от контекста:
Требования
Компонент Обязательный заголовок
_fpieee_flt <fpieee.h>
Пример
C
// crt_fpieee.c
// _fpieee_flt function.
#include <fpieee.h>
#include <excpt.h>
#include <float.h>
#include <stddef.h>
// IEEE exceptions
// operations to return 0.
if ((pieee->Cause.InvalidOperation) &&
(pieee->Result.Format == _FpFormatFp32))
pieee->Result.Value.Fp32Value = 0.0F;
return EXCEPTION_CONTINUE_EXECUTION;
else
return EXCEPTION_EXECUTE_HANDLER;
#define _EXC_MASK \
_EM_UNDERFLOW + \
_EM_OVERFLOW + \
_EM_ZERODIVIDE + \
_EM_INEXACT
// ...
__try {
GetExceptionInformation(),
fpieee_handler ) ){
// if fpieee_handler returns
// ...
_controlfp_s
_fpreset
Статья • 03.04.2023
Синтаксис
C
Remarks
Функция _fpreset повторно инициализирует пакет вычислений с плавающей
запятой. _fpreset часто используется с signal , system или с функциями _exec . _spawn
Если программа перехватывает сигналы ошибок в вычислениях с плавающей
запятой ( SIGFPE ) с аргументом signal , для безопасного восстановления после таких
ошибок необходимо вызвать функцию _fpreset с использованием longjmp .
Требования
Компонент Обязательный заголовок
_fpreset <float.h>
Пример
C
// crt_fpreset.c
#include <stdio.h>
#include <signal.h>
#include <setjmp.h>
#include <stdlib.h>
#include <float.h>
#include <math.h>
#include <string.h>
double n1 = 5.0;
double n2 = 0.0;
double r;
int jmpret;
_control87( 0, _MCW_EM );
abort();
if( jmpret == 0 )
r = n1 / n2;
r = n1 * n2;
else
fpcheck();
//
fperr = num;
_fpreset();
longjmp( mark, -1 );
char fpstr[30];
switch( fperr )
case _FPE_INVALID:
break;
case _FPE_OVERFLOW:
break;
case _FPE_UNDERFLOW:
break;
case _FPE_ZERODIVIDE:
break;
default:
break;
Output
Dividing 5 by 0...
signal
system, _wsystem
fprintf , _fprintf_l , fwprintf ,
_fwprintf_l
Статья • 03.04.2023
Синтаксис
C
int fprintf(
FILE *stream,
argument ]...
);
int _fprintf_l(
FILE *stream,
_locale_t locale [,
argument ]...
);
int fwprintf(
FILE *stream,
argument ]...
);
int _fwprintf_l(
FILE *stream,
_locale_t locale [,
argument ]...
);
Параметры
stream
format
argument
Необязательные аргументы.
locale
Возвращаемое значение
fprintf возвращает число записанных байтов. fwprintf возвращает число
записанных расширенных символов. В случае ошибки вывода каждая из этих
функций возвращает отрицательное значение. Если stream или format имеет
значение NULL , эти функции вызывают обработчик недопустимых параметров, как
описано в разделе Проверка параметров. Если продолжение выполнения
разрешено, функции возвращают значение -1 и задают для errno значение EINVAL .
Строка форматирования не проверяется на допустимость символов
форматирования, как при использовании fprintf_s или fwprintf_s .
Комментарии
Функция fprintf форматирует и выводит набор символов и значений в выходной
поток stream . Каждый argument функции (при наличии) преобразуется и выводится
согласно соответствующей спецификации формата в format . format Для
fprintf аргумент имеет тот же синтаксис, что и в printf .
ведут себя одинаково, если поток открыт в режиме ANSI. Функция fprintf на
данный момент не поддерживает вывод данных в поток в кодировке Юникод.
) Важно!
Требования
Компонент Обязательный заголовок
Пример
C
// crt_fprintf.c
*/
#include <stdio.h>
#include <process.h>
FILE *stream;
int i = 10;
double fp = 1.5;
char c = '\n';
fclose( stream );
Output
this is a string
10
1.500000
Синтаксис
C
int _fprintf_p(
FILE *stream,
argument ]...
);
int _fprintf_p_l(
FILE *stream,
_locale_t locale [,
argument ]...
);
int _fwprintf_p(
FILE *stream,
argument ]...
);
int _fwprintf_p_l(
FILE *stream,
_locale_t locale [,
argument ]...
);
Параметры
stream
format
argument
Необязательные аргументы.
locale
Возвращаемое значение
Функции _fprintf_p и _fwprintf_p возвращают число выведенных символов или
отрицательное значение в случае ошибки.
Комментарии
Функция _fprintf_p форматирует и выводит набор символов и значений в
выходной поток stream . Каждый argument функции (при наличии) преобразуется и
выводится согласно соответствующей спецификации формата в format . Для
_fprintf_p аргумента format используется тот же синтаксис, что и в _printf_p . Эти
ведут себя одинаково, если поток открыт в режиме ANSI. Функция _fprintf_p на
данный момент не поддерживает вывод данных в поток в кодировке Юникод.
) Важно!
Требования
Компонент Обязательный заголовок
Пример
C
// crt_fprintf_p.c
//
#include <stdio.h>
#include <process.h>
int i = 10;
double fp = 1.5;
char c = '\n';
fclose( stream );
Output
this is a string
10
1.500000
Синтаксис
C
int fprintf_s(
FILE *stream,
argument_list ]
);
int _fprintf_s_l(
FILE *stream,
_locale_t locale [,
argument_list ]
);
int fwprintf_s(
FILE *stream,
argument_list ]
);
int _fwprintf_s_l(
FILE *stream,
_locale_t locale [,
argument_list ]
);
Параметры
stream
format
locale
Возвращаемое значение
fprintf_s возвращает число записанных байтов. fwprintf_s возвращает число
записанных расширенных символов. В случае ошибки вывода каждая из этих
функций возвращает отрицательное значение.
Комментарии
Функция fprintf_s форматирует и выводит набор символов и значений в
выходной поток stream . Каждый аргумент в argument_list (при наличии)
преобразуется и выводится в соответствии с соответствующей спецификацией
формата в format . Аргумент format использует синтаксис спецификации формата
для printf и wprintf функций.
) Важно!
Требования
Компонент Обязательный заголовок
// crt_fprintf_s.c
#include <stdio.h>
#include <process.h>
FILE *stream;
int i = 10;
double fp = 1.5;
char c = '\n';
fclose( stream );
Output
this is a string
10
1.500000
Синтаксис
C
int fputc(
int c,
FILE *stream
);
wint_t fputwc(
wchar_t c,
FILE *stream
);
Параметры
c
stream
Возвращаемое значение
Каждая из этих функций возвращает записанный символ. Для fputc возвращаемое
значение EOF указывает на ошибку. Для fputwc возвращаемое значение WEOF
указывает на ошибку. Если stream это NULL так, эти функции вызывают обработчик
недопустимых параметров, как описано в разделе "Проверка параметров". Если
выполнение может быть продолжено, они возвращают EOF и устанавливают для
errno значение EINVAL .
Комментарии
Каждая из этих функций записывает один символ c в файл в позиции, указанной
соответствующим индикатором положения файла, если он определен. Функции
перемещают индикатор соответствующим образом. В fputc и fputwc , файл связан
с stream . Если файл не поддерживает запросы на размещение или был открыт в
режиме добавления, символ добавляется в конец потока.
Эти две функции ведут себя одинаково, если поток открыт в режиме ANSI. Функция
fputc на данный момент не поддерживает вывод данных в поток в кодировке
Юникод.
Подпрограмма Комментарии
Требования
Компонент Обязательный заголовок
fputc <stdio.h>
Пример
C
// crt_fputc.c
#include <stdio.h>
char *p;
p = strptr1;
Output
fgetc, fgetwc
putc, putwc
_fputc_nolock , _fputwc_nolock
Статья • 03.04.2023
Синтаксис
C
int _fputc_nolock(
int c,
FILE *stream
);
wint_t _fputwc_nolock(
wchar_t c,
FILE *stream
);
Параметры
c
stream
Возвращаемое значение
Каждая из этих функций возвращает записанный символ. Сведения об ошибке см. в
разделеfputc . fputwc
Комментарии
_fputc_nolock и _fputwc_nolock идентичны fputc fputwc и соответственно, за
исключением того, что они не защищены от помех другими потоками. Они могут
быть быстрее, так как они не влечет за собой затраты на блокировку других
потоков. Используйте эти функции только в потокобезопасных контекстах,
например в однопоточных приложениях или если вызываемая область уже
обрабатывает изоляцию потоков.
Эти две функции ведут себя одинаково, если поток открыт в режиме ANSI. Функция
_fputc_nolock на данный момент не поддерживает вывод данных в поток в
кодировке Юникод.
Требования
Компонент Обязательный заголовок
_fputc_nolock <stdio.h>
Пример
C
// crt_fputc_nolock.c
#include <stdio.h>
char *p;
p = strptr1;
Output
fgetc, fgetwc
putc, putwc
fputchar
Статья • 03.04.2023
Синтаксис
C
int _fputchar(
int c
);
wint_t _fputwchar(
wchar_t c
);
Параметры
c
Возвращаемое значение
Каждая из этих функций возвращает записанный символ. Для _fputchar
возвращаемое значение EOF указывает на ошибку. Для _fputwchar возвращаемое
значение WEOF указывает на ошибку. Если задано значение NULL c, эти функции
создают исключение недопустимого параметра, как описано в разделе "Проверка
параметров". Если выполнение разрешено продолжать, возвращается EOF
( _fputwchar возвращается WEOF ) и задано значение errno EINVAL . _fputchar
Комментарии
Обе эти функции записывают один символьный аргумент c stdout и перемещают
индикатор соответствующим образом. _fputchar равно fputc( stdout ) . Он также
эквивалентен putchar , но реализуется только как функция, а не как функция и
макрос. В отличие от fputc этих функций, putchar эти функции несовместимы со
стандартом ANSI.
Требования
Компонент Обязательный заголовок
_fputchar <stdio.h>
Пример
C
// crt_fputchar.c
#include <stdio.h>
char *p = NULL;
p = strptr;
Output
fgetc, fgetwc
putc, putwc
fputs , fputws
Статья • 03.04.2023
Синтаксис
C
int fputs(
FILE *stream
);
int fputws(
FILE *stream
);
Параметры
str
Выходная строка.
stream
Возвращаемое значение
При успешном выполнении каждой из этих функций возвращается
неотрицательное значение. В случае ошибки функции fputs и fputws возвращают
EOF . Если str или stream является пустым указателем, эти функции вызывают
Комментарии
Каждая из этих функций копирует str в выходной поток stream в текущей
позиции. fputws копирует аргумент str wide-character в stream виде
многобайтовой строки или строки расширенных символов при stream открытии в
текстовом режиме или двоичном режиме соответственно. Ни одна из функций не
копирует завершающий нуль-символ.
Эти две функции ведут себя одинаково, если поток открыт в режиме ANSI. Функция
fputs на данный момент не поддерживает вывод данных в поток в кодировке
Юникод.
Требования
Компонент Обязательный заголовок
fputs <stdio.h>
Пример
C
// crt_fputs.c
#include <stdio.h>
Output
fgets, fgetws
gets, _getws
puts, _putws
fread
Статья • 03.04.2023
Синтаксис
C
size_t fread(
void *buffer,
size_t size,
size_t count,
FILE *stream
);
Параметры
buffer
size
count
stream
Возвращаемое значение
fread возвращает количество полных элементов, считываемых функцией, которая
может быть меньше, чем count при возникновении ошибки, или если она
встречает конец файла до достижения count . Отличить ошибку чтения от
состояния, связанного с достижением конца файла, можно с помощью функции
feof или ferror . Если size или count равно 0, функция fread возвращает 0, а
содержимое буфера не изменяется. Если stream или buffer является пустым
указателем, fread вызывает обработчик недопустимых параметров, как описано в
разделе "Проверка параметров". Если продолжение выполнения разрешено, эта
функции задает для errno значение EINVAL и возвращает 0.
Комментарии
Функция fread считывает максимум count элементов размером size байт из
входного потока stream и сохраняет их в buffer . Указатель файла, связанный с
stream (если он существует), расширен по количеству считываемых байтов fread .
Если заданный поток открыт в текстовом режиме, новые строки в стиле Windows
преобразуются в новые строки в стиле Unix. То есть пары возврата каретки (CRLF)
заменяются символами однострочного канала (LF). Замена не влияет на указатель
файла или возвращаемое значение. В случае ошибки позиция указателя файла
будет неопределенной. Невозможно определить значение частично прочитанного
элемента.
Требования
Компонент Обязательный заголовок
Компонент Обязательный заголовок
fread <stdio.h>
Пример
C
// crt_fread.c
#include <stdio.h>
FILE *stream;
char list[30];
fclose( stream );
else
fclose( stream );
else
Output
Wrote 25 items
fopen
fwrite
_read
fread_s
Статья • 03.04.2023
Считывает данные из потока. Эта версия fread имеет улучшения безопасности, как
описано в функциях безопасности в CRT.
Синтаксис
C
size_t fread_s(
void *buffer,
size_t bufferSize,
size_t elementSize,
size_t count,
FILE *stream
);
Параметры
buffer
bufferSize
elementSize
count
stream
Возвращаемое значение
Функция fread_s возвращает число полностью считанных в буфер элементов,
которое может быть меньше count , если произошла ошибка чтения или конец
файла был достигнут до того, как достигнуто значение count . Отличить ошибку от
состояния, связанного с достижением конца файла, можно с помощью функции
feof или ferror . Если size или count равно 0, функция fread_s возвращает 0, а
Комментарии
Функция fread_s считывает максимум count элементов размером elementSize байт
из входного потока stream и сохраняет их в buffer . Указатель на файл, связанный
stream с (если таковой есть), является расширенным по количеству считываемых
байтов fread_s . Если заданный поток открыт в текстовом режиме, пары веб-
канала возврата каретки заменяются символами однострочного веб-канала.
Замена не влияет на указатель файла или возвращаемое значение. В случае
ошибки позиция указателя файла будет неопределенной. Значение частично
прочитанного элемента не может быть определено.
Требования
Компонент Обязательный заголовок
fread_s <stdio.h>
Пример
C++
// crt_fread_s.c
//
#include <stdio.h>
#define BUFFERSIZE 30
#define DATASIZE 22
#define ELEMENTCOUNT 2
FILE *stream;
char list[30];
fclose( stream );
} else {
return -1;
fclose( stream );
} else {
return -1;
Output
Contents of buffer before write/read:
zyxwvutsrqponmlkjihgfe
Wrote 22 items
zyxwvutsrqponmlkjihgfe
fwrite
_read
_fread_nolock
Статья • 03.04.2023
Синтаксис
C
size_t _fread_nolock(
void *buffer,
size_t size,
size_t count,
FILE *stream
);
Параметры
buffer
size
count
stream
Возвращаемое значение
См. раздел fread.
Комментарии
Эта функция представляет собой неблокирующую версию функции fread . Он
идентичен fread , за исключением того, что он не защищен от вмешательства
другими потоками. Это может быть быстрее, так как это не приводит к
дополнительным издержкам блокировки других потоков. Используйте эту функции
только в потокобезопасных контекстах, например в однопоточных приложениях
или если вызываемая область уже обрабатывает изоляцию потоков.
Требования
Компонент Обязательный заголовок
_fread_nolock <stdio.h>
fwrite
_read
_fread_nolock_s
Статья • 03.04.2023
Синтаксис
C
size_t _fread_nolock_s(
void *buffer,
size_t bufferSize,
size_t elementSize,
size_t elementCount,
FILE *stream
);
Параметры
buffer
bufferSize
elementSize
elementCount
stream
Возвращаемое значение
См. раздел fread_s.
Комментарии
Эта функция представляет собой неблокирующую версию функции fread_s . Он
идентичен fread_s , за исключением того, что он не защищен от вмешательства
другими потоками. Это может быть быстрее, так как это не приводит к
дополнительным издержкам блокировки других потоков. Используйте эту функции
только в потокобезопасных контекстах, например в однопоточных приложениях
или если вызываемая область уже обрабатывает изоляцию потоков.
Требования
Компонент Обязательный заголовок
fwrite
_read
free
Статья • 03.04.2023
Синтаксис
C
void free(
void *memblock
);
Параметры
memblock
Комментарии
Функция free освобождает блок памяти ( memblock ), который был выделен ранее
вызовом функции calloc , malloc или realloc . Число освобожденных байтов
эквивалентно количеству байтов, запрошенных при выделении блока (или
перераспределении для realloc ). Если memblock имеет значение NULL , указатель
игнорируется и free немедленно возвращается. Попытка освободить
недопустимый указатель (указатель на блок памяти, который не был выделен
calloc , malloc или realloc ) может повлиять на последующие запросы на
Требования
Компонент Обязательный заголовок
Пример
См. пример для malloc.
_alloca
calloc
malloc
realloc
_free_dbg
_heapmin
_freea
_free_dbg
Статья • 03.04.2023
Синтаксис
C
void _free_dbg(
void *userData,
int blockType
);
Параметры
userData
blockType
Комментарии
Функция _free_dbg является отладочной версией free функции. Если _DEBUG
параметр не определен, каждый вызов _free_dbg сводится к вызову free . И free , и
_free_dbg освобождают блок памяти в основной куче, однако _free_dbg включает
две возможности отладки: возможность хранить освободившиеся блоки в
связанном списке кучи для моделирования условий недостатка памяти, а также
параметр типа блока для освобождения блоков выделенной памяти конкретного
типа.
Требования
Подпрограмма Обязательный заголовок
_free_dbg <crtdbg.h>
Пример
Пример использования _free_dbg см. в разделе crt_dbg2 .
_malloc_dbg
_free_locale
Статья • 03.04.2023
Синтаксис
C
void _free_locale(
_locale_t locale
);
Параметры
locale
Комментарии
Функция _free_locale используется, чтобы освободить объект языкового
стандарта, полученный из вызова функции _get_current_locale или _create_locale .
Требования
Routine Обязательный заголовок
_free_locale <locale.h>
_create_locale, _wcreate_locale
_freea
Статья • 03.04.2023
Синтаксис
C
void _freea(
void *memblock
);
Параметры
memblock
Возвращаемое значение
Нет.
Remarks
Функция _freea освобождает блок памяти ( memblock ), который ранее был выделен
вызовом _malloca. Функция _freea проверяет, была ли память выделена в стеке
или в куче. Если она была выделена в стеке, функция _freea не выполняет никаких
действий. Если память выделена в куче, число освобожденных байтов
эквивалентно количеству байтов, запрошенному при выделении блока. Если
memblock имеет значение NULL , указатель игнорируется и _freea немедленно
возвращается. Попытка освободить недопустимый указатель (указатель на блок
памяти, который не был выделен ) _malloca может повлиять на последующие
запросы выделения и привести к ошибкам.
Вызов _freea должен сопровождать все вызовы _malloca . Кроме того, возникает
ошибка при двойном вызове _freea в одной памяти. Если приложение связано с
отладочной версией библиотек времени выполнения C, особенно с _malloc_dbg
функциями, включенными путем определения _CRTDBG_MAP_ALLOC , проще найти
отсутствующие или дублирующиеся _freea вызовы . Дополнительные сведения об
управлении кучей в процессе отладки см. в разделе Куча отладки CRT.
Требования
Компонент Обязательный заголовок
Пример
См. пример для _malloca.
_malloca
calloc
malloc
_malloc_dbg
realloc
_free_dbg
_heapmin
freopen , _wfreopen
Статья • 03.04.2023
Синтаксис
C
FILE *freopen(
FILE *stream
);
FILE *_wfreopen(
);
Параметры
path
mode
stream
Возвращаемое значение
Каждая из этих функций возвращает указатель на вновь открытый файл. При
возникновении ошибки исходный файл закрывается, а функция возвращает NULL
значение указателя. Если path , mode или stream является пустым указателем или
filename является пустой строкой, эти функции вызывают обработчик
Комментарии
Существуют более безопасные версии этих функций, см. разделfreopen_s ,
_wfreopen_s.
mode Access
"r" Открывает для чтения. Если файл не существует или его не удается найти, вызов
завершается ошибкой freopen .
"w" Открывает пустой файл для записи. Если указанный файл существует, его
содержимое удаляется.
"a" Открывается для записи в конце файла (добавление) без удаления маркера в конце
файла (EOF) перед записью новых данных в файл. Создает файл, если он не
существует.
"w+" Открывает пустой файл для чтения и записи. Если файл существует, его содержимое
удаляется.
Если файл открывается с помощью типа доступа "a" или "a+" , все операции
записи выполняются в конце файла. Хотя указатель на файл можно изменить с
помощью fseek или rewind, указатель на файл всегда перемещается обратно в
конец файла перед выполнением любой операции записи. Таким образом,
существующие данные нельзя перезаписать.
Режим "a" не удаляет маркер EOF перед добавлением в файл. После добавления
команда MS-DOS TYPE отображает данные только до первоначального маркера
EOF и не отображает данные, добавленные в файл. Перед добавлением в файл
режим "a+" удаляет маркер конца файла. После добавления команда TYPE MS-DOS
отображает все данные в файле. Режим "a+" необходим для добавления в
потоковый файл, завершаемый маркером конца файла CTRL+Z.
Если задан тип доступа "r+" , "w+" или "a+" , чтение и запись разрешены (считается,
что файл открыт для "обновления"). Однако при переключении между чтением и
записью должна быть промежуток fsetposfseekвремени, или rewind операция . При
необходимости для операции или fseek можно указать текущее fsetpos положение.
Помимо вышеуказанных значений один из следующих символов может быть
включен в строку mode для определения режима преобразования новых строк.
Требования
Компонент Обязательный заголовок
freopen <stdio.h>
Пример
C
// crt_freopen.c
#include <stdio.h>
#include <stdlib.h>
FILE *stream;
else
fclose( stream );
Output
successfully reassigned
fclose, _fcloseall
_fdopen, _wfdopen
_fileno
fopen, _wfopen
_open, _wopen
_setmode\
freopen_s , _wfreopen_s
Статья • 03.04.2023
Синтаксис
C
errno_t freopen_s(
FILE ** stream,
FILE* oldStream
);
errno_t _wfreopen_s(
FILE ** stream,
FILE * oldStream
);
Параметры
stream
fileName
mode
oldStream
Комментарии
Функция freopen_s обычно используется для присоединения предварительно
открытых потоков, связанных с stdin , stdout и stderr к другому файлу.
Если какой-либо из значений pFile , path mode , или NULL stream path является
пустой строкой, эти функции вызывают обработчик недопустимых параметров, как
описано в разделе Проверка параметров. Если выполнение может быть
продолжено, эти функции устанавливают параметр errno в значение EINVAL и
возвращают значение EINVAL .
"r" Открывает для чтения. Если файл не существует или его не удается найти, вызов
завершается ошибкой freopen_s .
"w" Открывает пустой файл для записи. Если указанный файл существует, его
содержимое удаляется.
"a" Открывается для записи в конце файла (добавление) без удаления маркера в конце
файла (EOF) перед записью новых данных в файл. Создает файл, если он не
существует.
"w+" Открывает пустой файл для чтения и записи. Если файл существует, его содержимое
удаляется.
Если файл открывается с помощью типа доступа "a" или "a+" , все операции
записи выполняются в конце файла. Хотя указатель на файл можно изменить с
помощью fseek или rewind, указатель на файл всегда перемещается обратно в
конец файла перед выполнением любой операции записи. Таким образом,
существующие данные нельзя перезаписать.
Режим "a" не удаляет маркер EOF перед добавлением в файл. После добавления
команда MS-DOS TYPE отображает данные только до первоначального маркера
EOF и не отображает данные, добавленные в файл. Перед добавлением в файл
режим "a+" удаляет маркер конца файла. После добавления команда TYPE MS-DOS
отображает все данные в файле. Режим "a+" необходим для добавления в
потоковый файл, завершаемый маркером конца файла CTRL+Z.
Если задан тип доступа "r+" , "w+" или "a+" , чтение и запись разрешены (считается,
что файл открыт для "обновления"). Однако при переключении между чтением и
записью должна быть промежуток fsetposfseekвремени, или rewind операция . При
необходимости для операции или fseek можно указать текущее fsetpos положение.
Помимо вышеуказанных значений один из следующих символов может быть
включен в строку mode для определения режима преобразования новых строк.
mode Режим перевода
Модификатор
Требования
Компонент Обязательный заголовок
freopen_s <stdio.h>
Пример
C
// crt_freopen_s.c
#include <stdio.h>
#include <stdlib.h>
FILE *stream;
errno_t err;
if( err != 0 )
else
fflush( stdout );
fprintf( stream, "This will go to the file 'freopen.out'\n" );
fclose( stream );
Output
successfully reassigned
freopen, _wfreopen
fclose, _fcloseall
_fdopen, _wfdopen
_fileno
fopen, _wfopen
_open, _wopen
_setmode
frexp , frexpf , frexpl
Статья • 03.04.2023
Синтаксис
C
double frexp(
double x,
int *expptr
);
float frexpf(
float x,
int * expptr
);
long double x,
int * expptr
);
C++
float frexp(
float x,
int * expptr
); // C++ only
long double x,
int * expptr
); // C++ only
Параметры
x
expptr
Возвращаемое значение
frexp возвращает мантиссу. Если x равно 0, функция возвращает значение 0 для
Комментарии
Функция frexp разбивает значение с плавающей запятой ( x ) на мантиссу ( m ) и
экспоненту ( n ), чтобы абсолютное значение m больше или равно 0,5 и меньше 1,0
и m x = * 2. n Целый показатель степени n сохраняется в расположении, на которое
указывает expptr .
Так как C++ допускает перегрузку, можно вызывать перегрузки функции frexp . В
программе C, если для вызова этой функции не используется <макрос tgmath.h> ,
frexp всегда принимает double указатель и int возвращает значение double .
Требования
Компонент Обязательный заголовок
Пример
C
// crt_frexp.c
#include <math.h>
#include <stdio.h>
double x, y;
int n;
x = 16.4;
y = frexp( x, &n );
Output
Синтаксис
C
int fscanf(
FILE *stream,
argument ]...
);
int _fscanf_l(
FILE *stream,
_locale_t locale [,
argument ]...
);
int fwscanf(
FILE *stream,
argument ]...
);
int _fwscanf_l(
FILE *stream,
_locale_t locale [,
argument ]...
);
Параметры
stream
format
argument
Необязательные аргументы.
locale
Возвращаемое значение
Каждая из этих функций возвращает количество полей, успешно преобразованных
и назначенных; возвращаемое значение не содержит поля, которые были
прочитаны, но не назначены. Возвращаемое значение 0 указывает, что поля не
были назначены. Если до первого преобразования возникает ошибка или
достигается конец потока файла, возвращается значение EOF для fscanf и fwscanf .
Эти функции проверяют свои параметры. Если stream или format является NULL
указателем, вызывается обработчик недопустимых параметров, как описано в
разделе "Проверка параметров". Если продолжение выполнения разрешено, эти
функции возвращают EOF и устанавливают для errno значение EINVAL .
Комментарии
Функция fscanf считывает данные из текущей позиции stream в расположение, на
которое указывает argument (если такое есть). Каждый параметр argument должен
быть указателем на переменную, которая имеет тип, соответствующий
спецификатору типа в параметре format . format управляет интерпретацией полей
ввода и имеет ту же форму и функцию, что format и аргумент для scanf ; см scanf .
описание format .
Требования
Компонент Обязательный заголовок
Пример
C
// crt_fscanf.c
#include <stdio.h>
FILE *stream;
long l;
float fp;
char s[81];
char c;
else
// Security caution!
printf( "%s\n", s );
printf( "%ld\n", l );
printf( "%f\n", fp );
printf( "%c\n", c );
fclose( stream );
Output
a-string
65000
3.141590
Синтаксис
C
int fscanf_s(
FILE *stream,
argument ]...
);
int _fscanf_s_l(
FILE *stream,
_locale_t locale [,
argument ]...
);
int fwscanf_s(
FILE *stream,
argument ]...
);
int _fwscanf_s_l(
FILE *stream,
_locale_t locale [,
argument ]...
);
Параметры
stream
format
Необязательные аргументы.
locale
Возвращаемое значение
Каждая из этих функций возвращает количество полей, которые она успешно
преобразует и назначает. Возвращаемое значение не включает поля, которые
были прочитаны, но не назначены. Возвращаемое значение 0 указывает, что поля
не были назначены. Если до первого преобразования возникает ошибка или
достигается конец потока файла, возвращается значение EOF для fscanf_s и
fwscanf_s .
Комментарии
Функция fscanf_s считывает данные из текущей позиции stream в расположения,
на которые указывает argument (если такие есть). Каждый параметр argument
должен быть указателем на переменную, которая имеет тип, соответствующий
спецификатору типа в параметре format . format управляет интерпретацией полей
ввода и имеет ту же форму и функцию, что format и аргумент для scanf_s ;
описание см. в разделе Форматирование полей спецификации: функции scanf и
wscanf . format fwscanf_s — это версия fscanf_s с расширенными символами;
аргумент format для функции fwscanf_s — строка расширенных символов. Эти
функции ведут себя одинаково, если поток открыт в режиме ANSI. fscanf_s сейчас
не поддерживает ввод из потока ЮНИКОДА.
Требования
Компонент Обязательный заголовок
Пример
C
// crt_fscanf_s.c
#include <stdio.h>
#include <stdlib.h>
FILE *stream;
long l;
float fp;
char s[81];
char c;
if( err )
else
printf( "%s\n", s );
printf( "%ld\n", l );
printf( "%f\n", fp );
printf( "%c\n", c );
fclose( stream );
Output
a-string
65000
3.141590
Синтаксис
C
int fseek(
FILE *stream,
long offset,
int origin
);
int _fseeki64(
FILE *stream,
__int64 offset,
int origin
);
Параметры
stream
offset
origin
Первоначальная позиция.
Возвращаемое значение
Если операция завершилась удачно, fseek и _fseeki64 возвращают 0. В противном
случае возвращается ненулевое значение. Для устройств, которые не
поддерживают поиск, возвращаемое значение не определено. Если stream
является пустым указателем или origin не является одним из допустимых
значений, описанных ниже, fseek и _fseeki64 вызовите обработчик недопустимых
параметров, как описано в разделе "Проверка параметров". Если продолжение
выполнения разрешено, эти функции устанавливают для errno значение EINVAL и
возвращают -1.
Комментарии
Функции fseek и _fseeki64 перемещают файловый указатель (если он есть),
связанный с аргументом stream , в новое местоположение, которое отстоит на
offset байт от origin . Следующая операция в потоке происходит в новом
местоположении. В потоке, открытом для обновления, следующая операция может
быть либо операцией чтения, либо операцией записи. Аргумент origin должен
быть одной из следующих констант, определенных в STDIO.H :
Когда файл открыт для добавления данных, текущая позиция в файле определяется
последней операцией ввода-вывода, а не тем, где должна произойти следующая
запись. Если в открытом для добавления файле еще не было ни одной операции
ввода-вывода, этой позицией является начало файла.
Кроме того, в текстовом режиме при вводе CTRL+Z интерпретируется как символ
конца файла. В файлах, открытых для чтения/записи, функция fopen и все
связанные с ней подпрограммы проверяют наличие символа CTRL+Z в конце
файла и удаляют его, если это возможно. Он удаляется из-за того, что
использование сочетания fseek и ftell (или _fseeki64 ) _ftelli64для перемещения в
файл, заканчивающийся клавишей CTRL+Z, может привести fseek к
неправильному поведении или _fseeki64 неправильной работы в конце файла.
Эта функция блокирует работу других потоков во время выполнения, поэтому она
потокобезопасна. Сведения о версии, отличной от блокировки, см. в разделе
_fseek_nolock. _fseeki64_nolock
Требования
Компонент Обязательный заголовок
fseek <stdio.h>
_fseeki64 <stdio.h>
Пример
C
// crt_fseek.c
#include <stdio.h>
FILE *stream;
char line[81];
int result;
return -1;
if( result )
else
fclose( stream );
Output
fopen, _wfopen
ftell, _ftelli64
_lseek, _lseeki64
rewind
_fseek_nolock , _fseeki64_nolock
Статья • 03.04.2023
Синтаксис
C
int _fseek_nolock(
FILE *stream,
long offset,
int origin
);
int _fseeki64_nolock(
FILE *stream,
__int64 offset,
int origin
);
Параметры
stream
offset
origin
Первоначальная позиция.
Возвращаемое значение
То же, что fseek и _fseeki64соответственно.
Комментарии
Эти функции являются неблокирующими версиями fseek и _fseeki64соответственно.
Эти функции идентичны fseek и _fseeki64, за исключением того, что они не
защищены от вмешательства другими потоками. Эти функции могут быть быстрее,
так как они не повлекли за собой затраты на блокировку других потоков.
Используйте эти функции только в потокобезопасных контекстах, например в
однопоточных приложениях или если вызываемая область уже обрабатывает
изоляцию потоков.
Требования
Компонент Обязательный заголовок
ftell, _ftelli64
_lseek, _lseeki64
rewind
fsetpos
Статья • 03.04.2023
Синтаксис
C
int fsetpos(
FILE *stream,
);
Параметры
stream
pos
Возвращаемое значение
В случае успеха fsetpos возвращает 0. При сбое функция возвращает ненулевое
значение и задает errno одну из следующих констант манифеста (определенных в
ERRNO. H): EBADF это означает, что файл недоступен или объект, указывающий
stream на не является допустимой структурой файлов; или EINVAL означает
недопустимое значение для stream или pos передано. Если передается
недопустимый параметр, эти функции вызывают обработчик недопустимых
параметров, как описано в разделе "Проверка параметров".
Комментарии
Функция fsetpos задает для индикатора stream положения файла значение pos ,
полученное при предыдущем вызове fgetpos . stream Функция очищает индикатор
конца файла и отменяет любые последствияungetc. stream После вызова
fsetpos следующая операция stream может быть входной или выходной.
Требования
Компонент Обязательный заголовок
fsetpos <stdio.h>
Пример
См. пример для fgetpos.
fgetpos
_fsopen , _wfsopen
Статья • 03.05.2023
Синтаксис
C
FILE *_fsopen(
int shflag
);
FILE *_wfsopen(
);
Параметры
filename
mode
shflag
Возвращаемое значение
Каждая из этих функций возвращает указатель на поток. Значение указателя null
обозначает ошибку. Если filename или mode является NULL или пустой строкой, эти
функции вызывают обработчик недопустимых параметров, как описано в разделе
Проверка параметров. Если продолжение выполнения разрешено, эти функции
возвращают NULL и устанавливают для errno значение EINVAL .
Символьная строка mode указывает тип доступа, запрошенный для файла, как
показано в следующей таблице.
Термин Определение
"r" Открывает для чтения. Если файл не существует или его не удается найти, вызов
завершается ошибкой _fsopen .
"w" Открывает пустой файл для записи. Если указанный файл существует, его
содержимое удаляется.
"a" Открывается для записи в конце файла (добавление); сначала создает файл, если
он не существует.
" w+ " Открывает пустой файл для чтения и записи. Если указанный файл существует, его
содержимое удаляется.
" a+ " Открывается для чтения и добавления; сначала создает файл, если он не
существует.
Используйте типы " w " и " w+ " с осторожностью, так как они могут уничтожить
существующие файлы.
При открытии файла с типом доступа " a " или " a+ " все операции записи
выполняются в конце файла. Указатель на файл можно изменить с помощью fseek
или rewind, но он всегда перемещается обратно в конец файла перед выполнением
любой операции записи. Таким образом, существующие данные нельзя
перезаписать. Если указан тип доступа " r+ ", " w+ " или " a+ " , чтение и запись
разрешены (файл открыт для обновления). Однако при переключении между
чтением и записью должна существовать промежуток fsetpos, fseekили rewind
операция . При необходимости для операции fsetpos или fseek можно задать
текущее положение. Помимо вышеуказанных значений, в параметр mode можно
включить один из следующих символов для определения режима преобразования
новых строк, а также для управления файлами.
Термин Определение
В отношении T и D :
Термин Определение
Требования
Компонент Обязательный заголовок Необязательные заголовки
Пример
C
// crt_fsopen.c
#include <stdio.h>
#include <stdlib.h>
#include <share.h>
FILE *stream;
// writing to it.
//
fprintf( stream, "No one else in the network can write "
fclose( stream );
Output
No one else in the network can write to this file until we are done.
fclose, _fcloseall
_fdopen, _wfdopen
ferror
_fileno
fopen, _wfopen
freopen, _wfreopen
_open, _wopen
_setmode
_sopen, _wsopen
_fstat , _fstat32 , _fstat64 , _fstati64 ,
_fstat32i64 , _fstat64i32
Статья • 03.04.2023
Синтаксис
C
int _fstat(
int fd,
);
int _fstat32(
int fd,
);
int _fstat64(
int fd,
);
int _fstati64(
int fd,
);
int _fstat32i64(
int fd,
);
int _fstat64i32(
int fd,
);
Параметры
fd
buffer
Комментарии
Функция _fstat получает сведения об открытом файле, который связан с fd , и
сохраняет их в структуре, указанной в параметре buffer . Структура _stat ,
определенная в SYS\Stat.h , содержит следующие поля.
Поле Значение
Варианты этих функций поддерживают 32- или 64-разрядные типы времени и 32-
или 64-разрядные размеры файлов. Первый числовой суффикс ( 32 или 64 )
указывает размер используемого типа времени; второй суффикс i32 или
i64 показывает, представлен ли размер файла как 32- или 64-разрядное целое
число.
Пример
C
// crt_fstat.c
#include <io.h>
#include <fcntl.h>
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <share.h>
char timebuf[26];
errno_t err;
_sopen_s( &fd,
"f_stat.out",
_SH_DENYNO,
_S_IREAD | _S_IWRITE );
if( fd != -1 )
if( result != 0 )
if (errno == EBADF)
else
if (err)
exit(1);
_close( fd );
Output
File size : 16
_access, _waccess
_chmod, _wchmod
_filelength, _filelengthi64
Синтаксис
C
long ftell(
FILE *stream
);
__int64 _ftelli64(
FILE *stream
);
Параметры
stream
Возвращаемое значение
Функции ftell и _ftelli64 возвращают текущее положение в файле. Значение,
возвращаемое и _ftelli64 не отражающее ftell физическое смещение байтов
для потоков, открытых в текстовом режиме, так как текстовый режим приводит к
переводу веб-канала возврата каретки. Используйте ftell для fseek правильного
возврата к расположениям файлов или _ftelli64 с _fseeki64 ним. При ошибке
ftell и _ftelli64 вызов обработчика недопустимых параметров, как описано в
разделе "Проверка параметров". Если выполнение разрешено продолжать, эти
функции возвращают -1L и устанавливают errno одну из двух констант,
определенных в ERRNO.H . Константа EBADF означает, что stream аргумент не
является допустимым значением указателя файла или не ссылается на открытый
файл. Константа EINVAL означает, что функции передан недопустимый аргумент
stream . На устройствах, которые не могут искать (например, терминалы и
Комментарии
_ftelli64 Функции ftell извлекают текущую позицию указателя файла (при
наличии), связанного с stream . Позиция представляется как смещение
относительно начала потока.
Когда файл открыт для добавления данных, текущая позиция в файле определяется
последней операцией ввода-вывода, а не тем, где должна произойти следующая
запись. Например, предположим, что файл открыт для добавления, а последняя
операция была прочитана. Позиция файла — это точка начала следующей
операции чтения, а не место начала следующей записи. (При открытии файла для
добавления позиция файла перемещается в конец файла перед любой операцией
записи.) Если операция ввода-вывода еще не выполнялась в файле, открытом для
добавления, позиция файла начинается.
В текстовом режиме при вводе CTRL+Z интерпретируется как символ конца файла.
В файлах, открытых для чтения/записи, функция fopen и все связанные с ней
подпрограммы проверяют наличие символа CTRL+Z в конце файла и удаляют его,
если это возможно. Это связано с тем, что использование сочетания ftell и (
_fseeki64или _ftelli64 fseek) для перемещения в файл, который заканчивается
клавишей CTRL+Z, может привести ftell к неправильному ведении или _ftelli64
неправильной работы в конце файла.
Требования
Компонент Обязательный заголовок Необязательные заголовки
Пример
C
// crt_ftell.c
#include <stdio.h>
FILE *stream;
long position;
char list[100];
position );
fclose( stream );
Output
fopen, _wfopen
fgetpos
fseek, _fseeki64
_lseek, _lseeki64
_ftell_nolock , _ftelli64_nolock
Статья • 03.04.2023
Синтаксис
C
long _ftell_nolock(
FILE *stream
);
__int64 _ftelli64_nolock(
FILE *stream
);
Параметры
stream
Возвращаемое значение
То же, что ftell и _ftelli64 . Дополнительные сведения см. в разделе ftell, _ftelli64.
Комментарии
Эти функции представляют собой неблокирующие версии функций ftell и
_ftelli64 соответственно. Они идентичны ftell и _ftelli64 за исключением того,
что они не защищены от помех другими потоками. Эти функции могут быть
быстрее, так как они не несут накладных расходов на блокировку других потоков.
Используйте эти функции только в потокобезопасных контекстах, например в
однопоточных приложениях или если вызываемая область уже обрабатывает
изоляцию потоков.
fgetpos
fseek, _fseeki64
_lseek, _lseeki64
ftell, _ftelli64
_ftime , _ftime32 , _ftime64
Статья • 03.04.2023
Получает текущее время. Доступны более безопасные версии этих функций; see
_ftime_s, , _ftime64_s_ftime32_s.
Синтаксис
C
Параметры
timeptr
Комментарии
Функция _ftime получает текущее местное время и сохраняет его в структуре, на
которую указывает timeptr . , _timeb и __timeb64 структуры определяются в
<sys\timeb.h>. __timeb32 Они содержат четыре поля, которые описываются в
следующей таблице.
Поле Описание
dstflag Ненулевое значение, если для местного часового пояса в данный момент
действует летнее время. (См _tzset . объяснение того, как определяется летнее
время.)
time Время представляется в виде числа секунд, истекших после полуночи (00:00:00)
1 января 1970 года, время в формате UTC.
timezone Разница в минутах между временем UTC и местным временем при движении в
западном направлении. Значение timezone задается на основе значения
глобальной переменной _timezone (см. раздел _tzset ).
Функция _ftime64 , использующая структуру __timeb64 , позволяет выражать даты
создания файлов до 23:59:59, 31 декабря 3000 г. в формате UTC; в то время как
_ftime32 даты отображаются только до 23:59:59 18 января 2038 г. в формате UTC.
Полночь 1 января 1970 года — нижняя граница диапазона дат для всех этих
функций.
Требования
Компонент Обязательный заголовок
Пример
C
// crt_ftime.c
#include <stdio.h>
#include <sys/timeb.h>
#include <time.h>
char timeline[26];
errno_t err;
time_t time1;
short timezone1;
short dstflag1;
time1 = timebuffer.time;
millitm1 = timebuffer.millitm;
timezone1 = timebuffer.timezone;
dstflag1 = timebuffer.dstflag;
time1);
if (err)
&timeline[20] );
Output
Milliseconds: 230
asctime, _wasctime
Синтаксис
C
Параметры
timeptr
Возвращаемое значение
Нуль в случае успеха или код ошибки в случае неудачи. Если значение параметра
timeptr равно NULL , возвращаемым значением является EINVAL .
Комментарии
Функция _ftime_s получает текущее местное время и сохраняет его в структуре, на
которую указывает timeptr . Структуры _timeb и __timeb64 , __timeb32 как указано в
файле SYS\Timeb.h, определяются в файле SYS\Timeb.h. Они содержат четыре поля,
которые описываются в следующей таблице.
Поле Описание
dstflag Ненулевое значение, если для местного часового пояса в данный момент
действует летнее время. (См _tzset . объяснение того, как определяется летнее
время.)
time Время представляется в виде числа секунд, истекших после полуночи (00:00:00)
1 января 1970 года, время в формате UTC.
timezone Разница в минутах между временем UTC и местным временем при движении в
западном направлении. Значение timezone задается на основе значения
глобальной переменной _timezone (см. раздел _tzset ).
1 января 1970 года — нижняя граница диапазона дат для всех этих функций.
_ftime_s время.
Требования
Компонент Обязательный заголовок
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_ftime64_s.c
#include <stdio.h>
#include <sys/timeb.h>
#include <time.h>
char timeline[26];
errno_t err;
time_t time1;
short timezone1;
short dstflag1;
_ftime64_s( &timebuffer );
time1 = timebuffer.time;
millitm1 = timebuffer.millitm;
timezone1 = timebuffer.timezone;
dstflag1 = timebuffer.dstflag;
time1);
if (err)
&timeline[20] );
Output
Milliseconds: 230
asctime, _wasctime
Синтаксис
C
char *_fullpath(
char *absPath,
);
wchar_t *_wfullpath(
wchar_t *absPath,
size_t maxLength
);
Параметры
absPath
Указатель на буфер, содержащий абсолютный или полный путь, или значение NULL .
relPath
Относительный путь.
maxLength
Возвращаемое значение
Каждая из этих функций возвращает указатель на буфер, содержащий абсолютный
путь ( absPath ). Если возникает ошибка (например, если переданное relPath
значение содержит букву диска, которая недопустима или не найдена, или если
длина созданного абсолютного пути ( absPath ) больше maxLength ), функция
возвращает . NULL
Комментарии
Функция _fullpath разворачивает относительный путь из relPath в его полный
или абсолютный путь и сохраняет его в параметре absPath . Если absPath это так
NULL , malloc используется для выделения буфера достаточной длины для хранения
имени пути. Вызывающий объект обязан освободить этот буфер. Имя
относительного пути указывает путь к другому расположению из текущего
расположения (например, текущий рабочий каталог: . ). Абсолютный путь является
расширением относительного пути, которое указывает весь путь, требуемый для
достижения необходимого расположения из корневой папки файловой системы. В
отличие от _makepath этого, _fullpath можно использовать для получения
абсолютного имени пути для относительных путей ( relPath ), которые включают ./
или ../ входят в их имена.
#include <stdlib.h>
\\machine\shareName\msvcSrc\crt\headerFiles\stdlib.h
absPath Если буфер имеет значение NULL , _fullpath вызывается malloc для
Требования
Компонент Обязательный заголовок
_fullpath <stdlib.h>
Пример
C
// crt_fullpath.c
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <direct.h>
char full[_MAX_PATH];
else
PrintFullPath( "test" );
PrintFullPath( "\\test" );
PrintFullPath( "..\\test" );
Output
_getcwd, _wgetcwd
_getdcwd, _wgetdcwd
_makepath, _wmakepath
_splitpath, _wsplitpath
_fullpath_dbg , _wfullpath_dbg
Статья • 03.04.2023
Синтаксис
C
char *_fullpath_dbg(
char *absPath,
int blockType,
int linenumber
);
wchar_t *_wfullpath_dbg(
wchar_t *absPath,
size_t maxLength,
int blockType,
int linenumber
);
Параметры
absPath
Указатель на буфер, содержащий абсолютный или полный путь, или значение NULL .
relPath
Относительный путь.
maxLength
blockType
linenumber
Возвращаемое значение
Каждая функция возвращает указатель на буфер, который содержит абсолютный
путь ( absPath ). Если возникает ошибка (например, если переданное relPath
значение содержит букву диска, которая не является допустимой или не может
быть найдена, или если длина созданного абсолютного имени пути ( absPath )
больше , чем maxLength ), функция возвращает NULL .
Комментарии
_fullpath_dbg Функции и _wfullpath_dbg идентичны _fullpath и _wfullpath за
исключением того, что при _DEBUG определении эти функции используют
отладочную версию malloc , _malloc_dbg для выделения памяти, если NULL
передается в качестве первого параметра. Сведения о функциях отладки
_malloc_dbg см. в разделе _malloc_dbg.
_fullpath_dbg <crtdbg.h>
_wfullpath_dbg <crtdbg.h>
_fullpath, _wfullpath
Синтаксис
C
int _futime(
int fd,
);
int _futime32(
int fd,
);
int _futime64(
int fd,
);
Параметры
fd
filetime
Возвращаемое значение
Возвращает 0 в случае успеха. При возникновении ошибки вызывается обработчик
недопустимых параметров, как описано в разделе "Проверка параметров". Если
выполнение разрешено продолжать, функция возвращает значение -1 и errno
имеет значение EBADF , указывающее недопустимый дескриптор файла или
EINVAL указывающий недопустимый параметр.
Комментарии
Подпрограмма _futime задает дату изменения открытого файла, связанного с fd , а
также время доступа к нему. _futime идентичен _utime, за исключением того, что
его аргумент является дескриптором открытого файла, а не именем файла или
путем к файлу. Структура _utimbuf содержит поля с новой датой изменения и
временем доступа. Оба поля должны содержать допустимые значения. Функции
_utimbuf32 и _utimbuf64 идентичны функции _utimbuf , однако используют 32- и 64-
Требования
Компонент Обязательный заголовок Необязательный заголовок
Пример
C
// crt_futime.c
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <io.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/utime.h>
#include <share.h>
int hFile;
else
_close (hFile);
Directory of Z:\crt
1 File(s) 24 bytes
1 File(s) 24 bytes
Не реализовано.
Синтаксис
C
int fwide(
FILE *stream,
int mode;
);
Параметры
stream
mode
Возвращаемое значение
Эта функция в настоящее время просто возвращает mode .
Комментарии
Текущая версия этой функции не соответствует стандарту C.
Требования
Компонент Обязательный заголовок
fwide <wchar.h>
Синтаксис
C
size_t fwrite(
size_t size,
size_t count,
FILE *stream
);
Параметры
buffer
size
count
stream
Возвращаемое значение
fwrite возвращает количество полных элементов, записываемых функцией,
которое может быть меньше, чем count при возникновении ошибки. Кроме того,
если возникает ошибка, индикатор положения файла не может быть определен.
Если какой-либо stream или buffer является пустым указателем, или если в
режиме Юникода указывается нечетное число байтов, функция вызывает
обработчик недопустимых параметров, как описано в разделе "Проверка
параметров". Если продолжение выполнения разрешено, эта функции задает для
errno значение EINVAL и возвращает 0.
Комментарии
Функция fwrite записывает до count элементов (каждый длиной size ) из buffer в
выходной stream . Указатель файла, связанный с stream (если он есть),
увеличивается на количество операций записи в байтах fwrite . Если stream он
открыт в текстовом режиме, каждый веб-канал строки заменяется парой веб-
канала возврата каретки. Замена не влияет на возвращаемое значение.
Требования
Компонент Обязательный заголовок
fwrite <stdio.h>
Пример
См. пример для fread.
_setmode
fread
_fwrite_nolock
_write
_fwrite_nolock
Статья • 03.04.2023
Синтаксис
C
size_t _fwrite_nolock(
size_t size,
size_t count,
FILE *stream
);
Параметры
buffer
size
count
stream
Возвращаемое значение
Эквивалентно fwrite.
Комментарии
Эта функция представляет собой неблокирующую версию функции fwrite . Он
идентичен fwrite , за исключением того, что он не защищен от вмешательства
другими потоками. Это может быть быстрее, так как это не приводит к
дополнительным издержкам блокировки других потоков. Используйте эту функции
только в потокобезопасных контекстах, например в однопоточных приложениях
или если вызываемая область уже обрабатывает изоляцию потоков.
Требования
Компонент Обязательный заголовок
_fwrite_nolock <stdio.h>
Пример
См. пример для fread.
fread
_write
gcvt
Статья • 03.04.2023
Синтаксис
C
char *_gcvt(
double value,
int digits,
char *buffer
);
Параметры
value
Преобразуемое значение.
digits
buffer
Возвращаемое значение
_gcvt возвращает указатель на строку разрядов.
Комментарии
Функция _gcvt преобразует значение с плавающей запятой value в строку
символов (включает знак десятичной запятой и при необходимости байт знака) и
сохраняет эту строку в buffer . Длина buffer должна быть достаточной для
хранения преобразованного значения, а также автоматически добавляемого нуль-
символа. Если размер буфера равен digits + 1, функция перезаписывает конец
буфера. Перезапись происходит из-за того, что преобразованная строка включает
десятичную запятую, а также может содержать сведения о знаке и экспоненте.
Функция не учитывает переполнение. Функция _gcvt пытается создать digits
разрядов в десятичном формате. Если не удается, он создает digits цифры в
экспоненциальном формате. Нули в конце могут исключаться из преобразования.
Требования
Подпрограмма Обязательный заголовок
_gcvt <stdlib.h>
Пример
C
// crt_gcvt.c
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char buffer[_CVTBUFSIZE];
value *= 10;
value *= 10;
value *= 10;
printf( "\n" );
value = -12.34567890123;
value /= 10;
value /= 10;
value /= 10;
Output
_ecvt
_fcvt
_gcvt_s
Статья • 03.04.2023
Синтаксис
C
errno_t _gcvt_s(
char *buffer,
size_t sizeInBytes,
double value,
int digits
);
errno_t _gcvt_s(
char (&buffer)[cchStr],
double value,
int digits
); // C++ only
Параметры
buffer
sizeInBytes
Размер буфера.
value
Преобразуемое значение.
digits
Возвращаемое значение
Нуль при успешном завершении. Если сбой возникает из-за недопустимого
параметра (см. следующую таблицу для недопустимых значений), обработчик
недопустимых параметров вызывается, как описано в разделе "Проверка
параметров". Если продолжение выполнения разрешено, возвращается код
ошибки. Коды ошибок определяются в файле ERRNO.H. Список этих ошибок см. в
разделе errno, и _doserrno_sys_errlist_sys_nerr.
Условия ошибок
Проблемы с безопасностью
Комментарии
Функция _gcvt_s преобразует значение с плавающей запятой value в строку
символов (включает знак десятичной запятой и при необходимости байт знака) и
сохраняет эту строку в buffer . Длина buffer должна быть достаточной для
хранения преобразованного значения, а также автоматически добавляемого нуль-
символа. Буфер длины _CVTBUFSIZE достаточен для любого значения с плавающей
запятой. Если используется размер буфера digits +1, функция не перезаписывает
конец буфера, поэтому не забудьте предоставить достаточный буфер для этой
операции. Функция _gcvt_s пытается создать digits разрядов в десятичном
формате. Если это не удается, он создает digits цифры в экспоненциальном
формате. Нули в конце могут исключаться из преобразования.
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
Пример
C
// crt_gcvt_s.c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main()
char buf[_CVTBUFSIZE];
int decimal;
int sign;
int err;
if (err != 0)
exit(1);
Output
_ecvt_s
_fcvt_s
_gcvt
_get_current_locale
Статья • 03.04.2023
Синтаксис
C
_locale_t _get_current_locale(void);
Возвращаемое значение
Объект языкового стандарта, представляющий текущий языковой стандарт.
Комментарии
Функция _get_current_locale получает текущий заданный языковой стандарт для
потока и возвращает объект языкового стандарта, представляющий этот языковой
стандарт.
Требования
Подпрограмма Обязательный заголовок
_get_current_locale <locale.h>
_create_locale, _wcreate_locale
_free_locale
_get_daylight
Статья • 03.04.2023
Синтаксис
C
Параметры
hours
Возвращаемое значение
Нуль в случае успешного выполнения или значение errno при возникновении
ошибки.
Комментарии
Функция _get_daylight получает число часов смещения перехода на зимнее время
в виде целого числа. Если действует переход на зимнее время, смещение по
умолчанию составляет один час (хотя в некоторых регионах может применяться
смещение на два часа).
_get_daylight <time.h>
errno, , _doserrno_sys_errlistи_sys_nerr
_get_dstbias
_get_timezone
_get_tzname
_get_doserrno
Статья • 03.04.2023
Синтаксис
C
errno_t _get_doserrno(
int * pValue
);
Параметры
pValue
Возвращаемое значение
Если макрос _get_doserrno выполняется успешно, он возвращает значение 0, в
случае сбоя — код ошибки. В pValue противном NULL случае вызывается
обработчик недопустимых параметров, как описано в разделе "Проверка
параметров". Если выполнение может быть продолжено, эта функция задает для
errno значение EINVAL и возвращает EINVAL .
Комментарии
Глобальный макрос _doserrno задается равным нулю во время инициализации CRT
(до начала выполнения обработки). Для него задано значение ошибки
операционной системы, возвращаемое вызовом функции на уровне системы,
который возвращает ошибку операционной системы, и он никогда не
сбрасывается до нуля во время выполнения. При написании кода для проверки
значения ошибки, возвращаемого функцией, всегда очищается _doserrno с
помощью _set_doserrno перед вызовом функции. Поскольку другой вызов функции
может перезаписать _doserrno , проверяйте значения, используя _get_doserrno
сразу после вызова функции.
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
errno, , _doserrno_sys_errlistи_sys_nerr
_get_dstbias
Статья • 03.04.2023
Синтаксис
C
Параметры
seconds
Возвращаемое значение
Нуль в случае успешного выполнения или значение errno при возникновении
ошибки.
Комментарии
Функция _get_dstbias получает число секунд смещения перехода на зимнее время
в виде целого числа. Если действует переход на зимнее время, смещение по
умолчанию составляет 3600 секунд. Это число соответствует одному часу (хотя в
некоторых регионах может применяться смещение на два часа).
Требования
Подпрограмма Обязательный заголовок
_get_dstbias <time.h>
_get_daylight
_get_timezone
_get_tzname
_get_errno
Статья • 03.04.2023
Синтаксис
C
errno_t _get_errno(
int * pValue
);
Параметры
pValue
Возвращаемое значение
Возвращает нуль в случае успеха или код ошибки в случае ошибки. В противном
случае pValue NULL вызывается обработчик недопустимых параметров, как описано
в разделе "Проверка параметров". Если выполнение может быть продолжено, эта
функция задает для errno значение EINVAL и возвращает EINVAL .
Комментарии
Возможные значения errno определяются в Errno.h. Кроме того, см errno .
константы.
Пример
C
// crt_get_errno.c
#include <errno.h>
#include <fcntl.h>
#include <io.h>
#include <stdio.h>
#include <sys/stat.h>
int main()
errno_t err;
int pfh;
_get_errno(&err);
Output
errno = 2
fyi, ENOENT = 2
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
errno, , _doserrno_sys_errlistи_sys_nerr
_get_FMA3_enable , _set_FMA3_enable
Статья • 03.04.2023
Синтаксис
C
int _get_FMA3_enable();
Параметры
flag
Возвращаемое значение
Значение, отличное от нуля, если включены реализации FMA3 трансцендентных
математических функций библиотек с плавающей запятой. В противном случае —
ноль.
Комментарии
_set_FMA3_enable Используйте функцию, чтобы включить или отключить
Требования
Функции _set_FMA3_enable доступны _get_FMA3_enable только в версиях CRT X64.
Синтаксис
C
errno_t _get_fmode(
int * pmode
);
Параметры
pmode
Возвращаемое значение
Возвращает нуль в случае успеха или код ошибки в случае ошибки. В противном
случае pmode NULL вызывается обработчик недопустимых параметров, как описано в
разделе "Проверка параметров". Если выполнение может быть продолжено,
параметр errno устанавливается в значение EINVAL , и функция возвращает
значение EINVAL .
Комментарии
Функция получает значение глобальной переменной _fmode . Эта переменная
определяет режим преобразования файла по умолчанию для потоков операций
низкоуровневого и файлового ввода-вывода, таких как _open , _pipe , fopen и
freopen.
Пример
См. пример в разделе _set_fmode.
_set_fmode
_setmode
Синтаксис
C
Возвращаемое значение
Возвращает дескриптор кучи Win32, используемый системой времени выполнения
C.
Комментарии
Используйте эту функцию, если вы хотите вызвать HeapSetInformation и включить
кучу фрагментации с низким уровнем фрагментации в куче CRT.
Требования
Подпрограмма Обязательный заголовок
_get_heap_handle <malloc.h>
Образец
C++
// crt_get_heap_handle.cpp
#include <windows.h>
#include <malloc.h>
#include <stdio.h>
int main(void)
ULONG ulEnableLFH = 2;
if (HeapSetInformation((PVOID)hCrtHeap,
HeapCompatibilityInformation,
&ulEnableLFH, sizeof(ulEnableLFH)))
else
return 0;
Синтаксис
C
_invalid_parameter_handler _get_invalid_parameter_handler(void);
_invalid_parameter_handler
_get_thread_local_invalid_parameter_handler(void);
Возвращаемое значение
Указатель на установленную в данный момент функцию обработчика
недопустимого параметра или указатель NULL, если такая функция не задана.
Комментарии
Функция _get_invalid_parameter_handler получает установленный на данный
момент глобальный обработчик недопустимого параметра. Если глобальный
обработчик недопустимого параметра не задан, возвращается указатель NULL.
Аналогичным образом получает _get_thread_local_invalid_parameter_handler
текущий обработчик недопустимых параметров в локальном потоке вызываемого
потока или пустой указатель, если обработчик не задан. Сведения о настройке
глобальных и локальных обработчиков недопустимых параметров в потоке см. в
разделе _set_invalid_parameter_handler. _set_thread_local_invalid_parameter_handler
C
typedef void (__cdecl* _invalid_parameter_handler)(
wchar_t const*,
wchar_t const*,
wchar_t const*,
unsigned int,
uintptr_t
);
Требования
Подпрограмма Обязательный
заголовок
_get_invalid_parameter_handler , C: <stdlib.h>
_get_thread_local_invalid_parameter_handler
C++: <cstdlib> или
<stdlib.h>
Синтаксис
C
intptr_t _get_osfhandle(
int fd
);
Параметры
fd
Возвращаемое значение
Возвращает дескриптор файла операционной системы, если fd он действителен. В
противном случае вызывается обработчик недопустимых параметров, как описано
в разделе "Проверка параметров". Если выполнение разрешено продолжать,
возвращается INVALID_HANDLE_VALUE значение (–1). Он также задает значение
errno EBADF , указывающее недопустимый дескриптор файла. Чтобы избежать
предупреждения при использовании результата в качестве дескриптора файла
Win32, приведите его к типу HANDLE .
7 Примечание
Комментарии
Чтобы закрыть файл, дескриптор которого получает дескриптор
_get_osfhandle операционной системы (OS), вызовите _close дескриптор fd файла.
Требования
Подпрограмма Обязательный заголовок
_get_osfhandle <io.h>
_close
_creat, _wcreat
_dup, _dup2
_open, _wopen
_open_osfhandle
_get_pgmptr
Статья • 03.04.2023
Синтаксис
C
errno_t _get_pgmptr(
char **pValue
);
Параметры
pValue
Возвращаемое значение
Возвращает нуль в случае успеха или код ошибки в случае ошибки. В противном
pValue случае NULL вызывается обработчик недопустимых параметров, как описано
в разделе "Проверка параметров". Если выполнение может быть продолжено, эта
функция задает для errno значение EINVAL и возвращает EINVAL .
Комментарии
Вызов выполняется _get_pgmptr только в том случае, если программа имеет узкую
точку входа, например main() или WinMain(). Глобальная _pgmptr переменная
содержит полный путь к исполняемому файлу, связанному с процессом.
Дополнительные сведения см. в разделе _pgmptr, _wpgmptr.
Требования
Подпрограмма Обязательный заголовок
_get_pgmptr <stdlib.h>
Синтаксис
C
int _get_printf_count_output();
Возвращаемое значение
Ненулевое значение, если %n поддерживается; 0, если %n не поддерживается.
Комментарии
Если %n параметр не поддерживается (по умолчанию), любой из %n найденных в
строке формата одной из printf функций вызывает обработчик недопустимых
параметров, как описано в разделе "Проверка параметров". Если %n поддержка
включена (см. см _set_printf_count_output.), то %n ведет себя так, как описано в
синтаксисе спецификации формата: printf и wprintf функции.
) Важно!
Требования
Подпрограмма Обязательный заголовок
_get_printf_count_output <stdio.h>
Пример
См. пример для _set_printf_count_output.
Получает или задает обработчик ошибок для вызова чистой виртуальной функции.
Синтаксис
C++
_purecall_handler function
);
Параметры
function
Возвращаемое значение
Предыдущая функция _purecall_handler . Возвращает nullptr , если не было
предыдущего обработчика.
Комментарии
Функции _get_purecall_handler и _set_purecall_handler предназначены специально
для систем Майкрософт и применяются только к коду C++.
Вызов чистой виртуальной функции является ошибкой, так как она не имеет
реализации. По умолчанию компилятор создает код для вызова функции
обработчика ошибок при вызове чистой виртуальной функции, который завершает
программу. Можно установить собственный обработчик ошибок для вызовов
чистых виртуальных функций, который будет перехватывать их в целях отладки или
ведения отчетности. Чтобы использовать собственный обработчик ошибок,
создайте функцию с сигнатурой _purecall_handler , а затем с помощью
_set_purecall_handler установите ее в качестве текущего обработчика.
Так как для каждого процесса существует только один _purecall_handler , при
вызове _set_purecall_handler он немедленно влияет на все потоки. Последний
вызывающий элемент в любом потоке задает обработчик.
Требования
Подпрограмма Обязательный заголовок
Пример
C++
// _set_purecall_handler.cpp
#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>
class CDerived;
class CBase
public:
~CBase();
CDerived * m_pDerived;
};
public:
};
CBase::~CBase()
void myPurecallHandler(void)
printf("In _purecall_handler.");
exit(0);
_set_purecall_handler(myPurecallHandler);
CDerived myDerived;
Output
In _purecall_handler.
_purecall
_get_terminate
Статья • 03.04.2023
Синтаксис
C
Возвращаемое значение
Возвращает указатель на функцию, зарегистрированную .set_terminate Если
функция не задана, возвращаемое значение может использоваться для
восстановления поведения по умолчанию; это значение может быть NULL .
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Сведения об изменении этого поведения см. в разделе "Глобальное состояние" в
CRT.
Требования
Подпрограмма Обязательный заголовок
_get_terminate <eh.h>
abort
set_unexpected
terminate
unexpected
_get_timezone
Статья • 08.06.2023
Синтаксис
C
error_t _get_timezone(
long* seconds
);
Параметры
seconds
Возвращаемое значение
Нуль в случае успешного выполнения или значение errno при возникновении
ошибки.
Комментарии
Функция _get_timezone извлекает целое число, представляющее разницу в
секундах между временем UTC и местным временем. Значение по умолчанию —
28800 секунд (тихоокеанское время, на 8 часов отстающее от UTC). Если вы не
хотите использовать значение по умолчанию, сначала вызовите _tzset, чтобы
инициализировать часовой пояс.
_get_timezone <time.h>
_get_daylight
_get_dstbias
_get_tzname
_get_tzname
Статья • 03.04.2023
Синтаксис
C
errno_t _get_tzname(
size_t* pReturnValue,
char* timeZoneName,
size_t sizeInBytes,
int index
);
Параметры
pReturnValue
timeZoneName
sizeInBytes
index
Возвращаемое значение
Ноль в случае успешного выполнения; в противном случае — значение типа errno .
timeZoneName Если значение равно NULL sizeInBytes нулю или меньше нуля (но не
Условия ошибок
Комментарии
Функция _get_tzname извлекает символьное строковое представление текущего
имени часового пояса или имя стандартного часового пояса (DST) в адрес
timeZoneName в зависимости от index значения, а также размер строки в
2 Предупреждение
Пример
В этом примере вызывается _get_tzname получение требуемого размера буфера
для отображения текущего имени стандартного часового пояса Daylight,
выделение буфера этого размера, повторные вызовы _get_tzname для загрузки
имени в буфер и его печать в консоль.
// crt_get_tzname.c
#include <stdio.h>
#include <time.h>
#include <malloc.h>
enum TZindex {
STD,
DST
};
int main()
size_t tznameSize = 0;
// Get the size of buffer required to hold DST time zone name
return 0;
Выходные данные
Output
The current Daylight standard time zone name is Pacific Daylight Time.
Требования
Подпрограмма Обязательный заголовок
_get_tzname <time.h>
Дополнительные сведения см. в разделе Совместимость.
errno, , _doserrno_sys_errlistи_sys_nerr
_get_daylight
_get_dstbias
_get_timezone
_get_unexpected
Статья • 03.04.2023
Синтаксис
C
Возвращаемое значение
Возвращает указатель на функцию, зарегистрированную .set_unexpected Если
функция не задана, возвращаемое значение может использоваться для
восстановления поведения по умолчанию; это значение может быть NULL .
Требования
Подпрограмма Обязательный заголовок
_get_unexpected <eh.h>
abort
set_terminate
terminate
unexpected
_get_wpgmptr
Статья • 03.04.2023
Синтаксис
C
errno_t _get_wpgmptr(
wchar_t **pValue
);
Параметры
pValue
Возвращаемое значение
Возвращает нуль в случае успеха или код ошибки в случае ошибки. В противном
случае pValue NULL вызывается обработчик недопустимых параметров, как описано
в разделе "Проверка параметров". Если выполнение может быть продолжено, эта
функция задает для errno значение EINVAL и возвращает EINVAL .
Комментарии
Вызов выполняется _get_wpgmptr только в том случае, если программа имеет
широкую точку входа, например wmain() или wWinMain(). Глобальная переменная
_wpgmptr содержит полный путь к исполняемому файлу, связанному с процессом, в
Требования
Подпрограмма Обязательный заголовок
_get_wpgmptr <stdlib.h>
Синтаксис
C
int getc(
FILE *stream
);
wint_t getwc(
FILE *stream
);
Параметры
stream
Входной поток.
Возвращаемое значение
Возвращает считанный символ. Чтобы указать на ошибку чтения или конец файла,
функция getc возвращает EOF , а getwc возвращает WEOF . Для функции getc
следует использовать ferror или feof для проверки наличия ошибки или
достижения конца файла. Если stream это NULL так, getc и getwc вызовите
обработчик недопустимых параметров, как описано в разделе "Проверка
параметров". Если выполнение разрешено продолжать, эти функции возвращают
EOF (или WEOF для getwc ) и задают значение errno EINVAL .
Комментарии
Каждая подпрограмма считывает один символ из файла в текущей позиции и
увеличивает связанный указатель файла (если он определен), чтобы он указывал на
следующий символ. Файл связан с stream .
Эти функции блокируют вызывающий поток, поэтому они потокобезопасны.
Сведения о версии, отличной от блокировки, см. в разделе _getc_nolock.
_getwc_nolock
Подпрограмма Комментарии
getc То же, что и функция fgetc , однако реализована как функция и как
макрос.
Требования
Подпрограмма Обязательный заголовок
getc <stdio.h>
Пример
C
// crt_getc.c
#include <stdio.h>
int main()
char buffer[81];
int i, ch;
FILE* fp;
if (!fp)
exit(1);
buffer[i] = '\0';
fclose(fp);
Line one.
Line two.
Вывод
Output
См. также
Потоковый ввод-вывод
fgetc, fgetwc
_getch, _getwch
putc, putwc
ungetc, ungetwc
_getc_nolock , _getwc_nolock
Статья • 03.04.2023
Синтаксис
C
int _getc_nolock(
FILE *stream
);
wint_t _getwc_nolock(
FILE *stream
);
Параметры
stream
Входной поток.
Возвращаемое значение
getwcСм.getc
Комментарии
Эти функции идентичны getc и getwc за исключением того, что они не блокируют
вызывающий поток. Они могут быть быстрее, так как они не несут накладных
расходов на блокировку других потоков. Используйте эти функции только в
потокобезопасных контекстах, например в однопоточных приложениях или если
вызываемая область уже обрабатывает изоляцию потоков.
Требования
Подпрограмма Обязательный заголовок
getc_nolock <stdio.h>
Пример
C
// crt_getc_nolock.c
#include <stdio.h>
int main()
char buffer[81];
int i, ch;
FILE* fp;
if (!fp)
exit(1);
buffer[i] = '\0';
fclose(fp);
Вывод
Output
См. также
Потоковый ввод-вывод
fgetc, fgetwc
_getch, _getwch
putc, putwc
ungetc, ungetwc
getch
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
Возвращаемое значение
Возвращает считанный символ. Ошибка не возвращается.
Комментарии
Функции _getch и _getwch считывают один символ из консоли без повтора
символа. Для чтения функциональной клавиши или клавиши со стрелками каждая
функция должна вызываться дважды. Первый вызов возвращает 0 или 0xE0 .
Второй вызов возвращает код сканирования ключа.
Требования
Подпрограмма Обязательный заголовок
_getch <conio.h>
Пример
C
// crt_getch.c
// compile with: /c
#include <conio.h>
#include <ctype.h>
int ch;
do
ch = _getch();
ch = toupper( ch );
} while( ch != 'Y' );
_putch( ch );
Input
abcdefy
Output
_getche, _getwche
_cgets, _cgetws
getc, getwc
) Важно!
Синтаксис
C
Возвращаемое значение
Возвращает считанный символ. Ошибка не возвращается.
Комментарии
Функции _getch_nolock и _getwch_nolock идентичны функциям _getch и _getchw за
исключением того, что не защищены от помех со стороны других потоков. Они
могут быть быстрее, так как они не несут накладных расходов на блокировку
других потоков. Используйте эти функции только в потокобезопасных контекстах,
например в однопоточных приложениях или если вызываемая область уже
обрабатывает изоляцию потоков.
Требования
Подпрограмма Обязательный заголовок
_getch_nolock <conio.h>
Пример
C
// crt_getch_nolock.c
// compile with: /c
#include <conio.h>
#include <ctype.h>
int ch;
do
ch = _getch_nolock();
ch = toupper( ch );
} while( ch != 'Y' );
_putch_nolock( ch );
Input
abcdefy
Output
_getche, _getwche
_cgets, _cgetws
getc, getwc
Синтаксис
C
int getchar();
wint_t getwchar();
Возвращаемое значение
Возвращает считанный символ. Эти функции ожидают ввода и не возвращаются,
пока не будут доступны входные данные.
Чтобы указать на ошибку чтения или конец файла, функция getchar возвращает
EOF , а getwchar возвращает WEOF . Для функции getchar следует использовать
ferror или feof для проверки наличия ошибки или достижения конца файла.
Комментарии
Каждая подпрограмма считывает один символ из stdin и увеличивает связанный
указатель файла, чтобы он указывал на следующий символ. getchar то же самое,
что _fgetcharи функция, но реализована как функция и макрос.
Требования
Подпрограмма Обязательный заголовок
getchar <stdio.h>
Пример
C
// crt_getchar.c
#include <stdio.h>
int main()
char buffer[81];
int i, ch;
buffer[i] = '\0';
Output
This textInput was: This text
getc, getwc
fgetc, fgetwc
_getch, _getwch
putc, putwc
ungetc, ungetwc
_getchar_nolock , _getwchar_nolock
Статья • 03.04.2023
Синтаксис
C
Возвращаемое значение
getwcharСм.getchar
Комментарии
_getchar_nolock они идентичны getchar и _getwchar_nolock getwchar за
исключением того, что они не защищены от помех другими потоками. Они могут
быть быстрее, так как они не несут накладных расходов на блокировку других
потоков. Используйте эти функции только в потокобезопасных контекстах,
например в однопоточных приложениях или если вызываемая область уже
обрабатывает изоляцию потоков.
Требования
Подпрограмма Обязательный заголовок
_getchar_nolock <stdio.h>
Подпрограмма Обязательный заголовок
Пример
C
// crt_getchar_nolock.c
#include <stdio.h>
int main()
char buffer[81];
int i, ch;
buffer[i] = '\0';
Output
getc, getwc
fgetc, fgetwc
_getch, _getwch
putc, putwc
ungetc, ungetwc
getche
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
Возвращаемое значение
Возвращает считанный символ. Ошибка не возвращается.
Комментарии
Функции _getche и _getwche считывают отдельный символ из консоли с
отображением, то есть символ выводится в консоли. Эти функции нельзя
использовать для считывания сочетания CTRL+C. При _getche чтении _getwche
клавиши функции или клавиши со стрелкой функция должна вызываться дважды;
первый вызов возвращает значение 0 или 0xE0, а второй вызов возвращает
фактический код ключа.
Требования
Подпрограмма Обязательный заголовок
_getche <conio.h>
Пример
C
// crt_getche.c
// compile with: /c
#include <conio.h>
#include <ctype.h>
int ch;
do
ch = _getche();
ch = toupper( ch );
} while( ch != 'Y' );
_putch( ch );
Input
abcdefy
Output
_cgets, _cgetws
getc, getwc
) Важно!
Синтаксис
C
Возвращаемое значение
Возвращает считанный символ. Ошибка не возвращается.
Комментарии
Функции _getche_nolock и _getwche_nolock идентичны функциям _getche и
_getwche за исключением того, что не защищены от помех со стороны других
потоков. Они могут быть быстрее, так как они не влечет за собой затраты на
блокировку других потоков. Используйте эти функции только в потокобезопасных
контекстах, например в однопоточных приложениях или если вызываемая область
уже обрабатывает изоляцию потоков.
Требования
Подпрограмма Обязательный заголовок
_getche_nolock <conio.h>
Пример
C
// crt_getche_nolock.c
// compile with: /c
#include <conio.h>
#include <ctype.h>
int ch;
do
ch = _getche_nolock();
ch = toupper( ch );
} while( ch != 'Y' );
_putch_nolock( ch );
Input
abcdefy
Output
_cgets, _cgetws
getc, getwc
) Важно!
Синтаксис
C
char *_getcwd(
char *buffer,
int maxlen
);
wchar_t *_wgetcwd(
wchar_t *buffer,
int maxlen
);
Параметры
buffer
maxlen
Максимальная длина пути в символах: char для _getcwd и wchar_t для _wgetcwd .
Возвращаемое значение
Возвращает указатель на buffer . Возвращаемое NULL значение указывает на
ошибку и errno имеет значение ENOMEM , указывающее, что недостаточно памяти
для выделения maxlen байтов (при указании аргумента NULL в качестве buffer ) или
ERANGE в значение , указывающее, что путь длиннее maxlen символов. Если maxlen
значение меньше нуля или равно нулю, эта функция вызывает обработчик
недопустимых параметров, как описано в разделе "Проверка параметров".
Комментарии
Функция _getcwd получает полный путь текущего рабочего каталога для диска по
умолчанию и сохраняет его в параметре buffer . Целочисленный аргумент maxlen
указывает максимальную длину пути. Ошибка возникает, если длина пути (включая
завершающий нуль-символ) превышает значение maxlen . Аргумент buffer может
иметь значение NULL . С помощью malloc автоматически выделяется буфер
минимального размера maxlen (больше только при необходимости) для
сохранения пути. Позже этот буфер можно освободить путем вызова free и
передачи в него возвращаемого значения _getcwd (указателя на выделенный
буфер).
Требования
Подпрограмма Обязательный заголовок
_getcwd <direct.h>
Пример
C
// crt_getcwd.c
// memory for the path, which allows the code to support file paths
char* buffer;
else
free(buffer);
Output
C:\Code
_chdir, _wchdir
_mkdir, _wmkdir
_rmdir, _wrmdir
_getcwd_dbg , _wgetcwd_dbg
Статья • 03.04.2023
Синтаксис
C
char *_getcwd_dbg(
char *buffer,
int maxlen,
int blockType,
int linenumber
);
wchar_t *_wgetcwd_dbg(
wchar_t *buffer,
int maxlen,
int blockType,
int linenumber
);
Параметры
buffer
maxlen
blockType
filename
linenumber
Возвращаемое значение
Возвращает указатель на buffer . Возвращаемое NULL значение указывает на
ошибку и errno имеет значение ENOMEM , указывающее, что недостаточно памяти
для выделения maxlen байтов (если NULL аргумент указан как buffer ), или
ERANGE значение , указывающее, что путь длиннее maxlen символов.
Комментарии
_getcwd_dbg Функции и _wgetcwd_dbg идентичны _getcwd функциям и _wgetcwd , за
исключением того, что при _DEBUG определении они используют отладочную
версию malloc и для _malloc_dbg выделения памяти, если NULL передается в
качестве первого параметра. Для получения дополнительной информации см.
_malloc_dbg.
флаг _NORMAL_BLOCK . Таким образом, вам не нужно вызывать эти функции явным
образом, если вы не хотите пометить блоки кучи как _CLIENT_BLOCK .
Дополнительные сведения см. в разделе Типы блоков в отладочной куче.
Сопоставление подпрограмм с
универсальным текстом
Процедура _UNICODE и _MBCS не _MBCS _UNICODE
Tchar.h определены Определенные defined
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
_getcwd_dbg <crtdbg.h>
_wgetcwd_dbg <crtdbg.h>
Управление каталогами
Синтаксис
C
char *_getdcwd(
int drive,
char *buffer,
int maxlen
);
wchar_t *_wgetdcwd(
int drive,
wchar_t *buffer,
int maxlen
);
Параметры
drive
buffer
Если NULL задано, эта функция выделяет буфер по крайней мере maxlen размера с
помощью malloc , а возвращаемое значение _getdcwd является указателем на
выделенный буфер. Буфер может быть освобожден с помощью вызова функции
free и передачи ему указателя.
maxlen
Если maxlen значение меньше нуля или равно нулю, вызывается обработчик
недопустимых параметров. Дополнительные сведения см. в разделе "Проверка
параметров".
Возвращаемое значение
Указатель на строку, которая представляет полный путь текущей рабочей папки на
указанном диске, или значение NULL , что указывает на ошибку.
Если buffer задано значение "как NULL " и недостаточно памяти для выделения
maxlen символов, возникает ошибка и errno задано значение ENOMEM . Если длина
Комментарии
Функция _getdcwd получает полный путь текущей рабочей папки на указанном
диске и сохраняет его в параметре buffer . Если текущей рабочей папкой является
корневой каталог, строка заканчивается обратной косой чертой (\). Если текущая
рабочая папка находится в каталоге, отличном от корневого, строка заканчивается
именем каталога, а не обратной косой чертой.
Версия этой функции, которая имеет _nolock суффикс, ведет себя идентично этой
функции, за исключением того, что она не является потокобезопасной и не
защищена от вмешательства другими потоками. Дополнительные сведения см. в
разделе _getdcwd_nolock. _wgetdcwd_nolock
Когда _DEBUG и _CRTDBG_MAP_ALLOC определяются, вызовы _getdcwd и _wgetdcwd
заменяются вызовами _getdcwd_dbg и _wgetdcwd_dbg , чтобы можно было
отлаживать выделение памяти. Дополнительные сведения см. в
разделе_getdcwd_dbg_wgetdcwd_dbg .
Требования
Подпрограмма Обязательный заголовок
_getdcwd <direct.h>
Пример
См. пример в разделе _getdrive.
_chdir, _wchdir
_getcwd, _wgetcwd
_getdrive
_mkdir, _wmkdir
_rmdir, _wrmdir
_getdcwd_dbg , _wgetdcwd_dbg
Статья • 03.04.2023
Синтаксис
C
char *_getdcwd_dbg(
int drive,
char *buffer,
int maxlen,
int blockType,
int linenumber
);
wchar_t *_wgetdcwd_dbg(
int drive,
wchar_t *buffer,
int maxlen,
int blockType,
int linenumber
);
Параметры
drive
Имя диска.
buffer
maxlen
blockType
linenumber
Возвращаемое значение
Возвращает указатель на buffer . Возвращаемое NULL значение указывает на
ошибку и errno имеет значение ENOMEM , указывающее, что недостаточно памяти
для выделения maxlen байтов (если NULL аргумент указан как buffer ), или
ERANGE значение , указывающее, что путь длиннее maxlen символов.
Дополнительные сведения см. в разделе errno, _doserrno, _sys_errlistи _sys_nerr.
Комментарии
Функции _getdcwd_dbg и _wgetdcwd_dbg идентичны _getdcwd и _wgetdcwd за
исключением того, что если определен флаг _DEBUG , эти функции используют
отладочную версию функций malloc и _malloc_dbg для выделения памяти, если
NULL передается как параметр buffer . Для получения дополнительной
_getdcwd_dbg <crtdbg.h>
_wgetdcwd_dbg <crtdbg.h>
Управление каталогами
) Важно!
Синтаксис
C
char *_getdcwd_nolock(
int drive,
char *buffer,
int maxlen
);
wchar_t *_wgetdcwd_nolock(
int drive,
wchar_t *buffer,
int maxlen
);
Параметры
drive
Дисковый накопитель.
buffer
maxlen
Возвращаемое значение
См. a0/_wgetdcwd>_getdcwd.
Комментарии
_getdcwd_nolock и _wgetdcwd_nolock идентичны _getdcwd _wgetdcwd и соответственно,
Требования
Подпрограмма Обязательный заголовок
_getdcwd_nolock <direct.h>
_chdir, _wchdir
_getcwd, _wgetcwd
_getdrive
_mkdir, _wmkdir
_rmdir, _wrmdir
_getdiskfree
Статья • 03.04.2023
) Важно!
Синтаксис
C
unsigned _getdiskfree(
unsigned drive,
);
Параметры
drive
driveinfo
Возвращаемое значение
Если вызов функции заканчивается удачно, возвращается нулевое значение. Если
функция завершается с ошибкой, возвращается значение кода ошибки. Значение
параметра errno задается для всех ошибок, возвращаемых операционной
системой. Дополнительные сведения об ошибках, указанных в errno errno
константах.
Комментарии
Структура _diskfree_t определена в файле Direct.h.
struct _diskfree_t {
};
Эта функция проверяет свои параметры. driveinfo Если указатель или NULL drive
указывает недопустимый диск, эта функция вызывает обработчик недопустимых
параметров, как описано в разделе "Проверка параметров". Если выполнение
может быть продолжено, функция возвращает EINVAL и устанавливает для
параметра errno значение EINVAL . Допустимый диапазон дисков: от 0 до 26.
Значение drive , равное 0, означает текущий диск; таким образом, числа
сопоставляются с буквами английского алфавита, при этом 1 указывает на диск А,
3 — на диск C и т. д.
Требования
Подпрограмма Обязательный заголовок
_getdiskfree <direct.h>
Пример
C
// crt_getdiskfree.c
// compile with: /c
#include <windows.h>
#include <direct.h>
#include <stdio.h>
if (uDriveMask & 1)
struct _diskfree_t df = { 0 };
if (uErr == 0)
else
WCHAR errMsg[80];
unsigned uLen = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
printf("%S\n", errMsg);
uDriveMask >>= 1;
Output
Drive: C
) Важно!
Синтаксис
C
Возвращаемое значение
Возвращает текущий (используемый по умолчанию) диск (1=A, 2=B и т. д).
Возвращаемое значение равно нулю означает, что текущий путь не начинается с
имени диска буквы, например UNC-пути. Или это означает, что сбой выделения
внутреннего буфера. Если внутреннее выделение завершается ошибкой, errno
устанавливается значение ENOMEM.
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Сведения об изменении этого поведения см. в разделе "Глобальное состояние" в
CRT.
Требования
Подпрограмма Обязательный заголовок
_getdrive <direct.h>
Дополнительные сведения о совместимости см. в разделе Compatibility.
Пример
C
// crt_getdrive.c
// compile with: /c
//
#include <stdio.h>
#include <direct.h>
#include <stdlib.h>
#include <ctype.h>
curdrive = _getdrive();
putchar( '\n' );
_chdrive( curdrive );
Output
_chdrive
_getcwd, _wgetcwd
_getdcwd, _wgetdcwd
_getdrives
Статья • 03.04.2023
) Важно!
Синтаксис
C
Возвращаемое значение
Если функция завершается успешно, возвращенное значение является битовой
маской, которая представляет доступные в данный момент диски. Битовое
положение 0 (наименьший бит) представляет диск A. Аналогичным образом
битовое положение 1 представляет диск B, битовое положение 2 представляет
диск C и т. д. Если функция выполняется неудачно, возвращается нулевое значение.
Чтобы получить расширенные сведения об ошибке, вызовите функцию
GetLastError .
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, ознакомьтесь с глобальным состоянием в CRT.
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
_getdrives <direct.h>
Пример
C
// crt_getdrives.c
#include <windows.h>
#include <direct.h>
#include <stdio.h>
#include <tchar.h>
if (uDriveMask == 0)
{
GetLastError());
else
while (uDriveMask) {
if (uDriveMask & 1)
printf(g_szDrvMsg);
++g_szDrvMsg[0];
uDriveMask >>= 1;
Output
A:
C:
D:
E:
) Важно!
Синтаксис
C
char *getenv(
);
wchar_t *_wgetenv(
);
Параметры
varname
Возвращаемое значение
Возвращает указатель на запись таблицы среды, содержащую varname . Изменять
значение переменной среды с помощью возвращенного указателя небезопасно.
Чтобы изменить значение переменной среды, используйте функцию _putenv.
Возвращаемое значение равно , NULL если varname не найдено в таблице среды.
Комментарии
Функция getenv выполняет поиск в списке переменных среды для varname . getenv
не учитывает регистр в операционной системе Windows. Функции getenv и _putenv
для доступа к среде используют копию среды, указанную в глобальной
переменной _environ . Функция getenv работает только в структурах данных,
доступных в библиотеке времени выполнения, а не в "сегменте" среды, созданном
для процесса операционной системой. Таким образом, программы, использующие
envp аргумент для main или wmain , могут получать недопустимые сведения.
U Внимание!
7 Примечание
Требования
Подпрограмма Обязательный заголовок
getenv <stdlib.h>
Пример
C
// crt_getenv.c
#include <stdlib.h>
#include <stdio.h>
char *libvar;
// Attempt to change path. Note that this only affects the environment
Output
_putenv, _wputenv
Константы среды
getenv_s , _wgetenv_s
Статья • 03.04.2023
) Важно!
Синтаксис
C
errno_t getenv_s(
size_t *pReturnValue,
char* buffer,
size_t numberOfElements,
);
errno_t _wgetenv_s(
size_t *pReturnValue,
wchar_t *buffer,
size_t numberOfElements,
);
errno_t getenv_s(
size_t *pReturnValue,
char (&buffer)[size],
); // C++ only
errno_t _wgetenv_s(
size_t *pReturnValue,
wchar_t (&buffer)[size],
); // C++ only
Параметры
pReturnValue
buffer
numberOfElements
Размер buffer .
varname
Возвращаемое значение
Ноль при успехе; код ошибки при неудаче.
Условия ошибок
Кроме того, если буфер слишком мал, эти функции возвращают ERANGE . Они не
вызывают обработчик недопустимых параметров. Они записывают необходимый
размер буфера в pReturnValue , поэтому программы могут вызвать функцию снова с
большим буфером.
Комментарии
Функция getenv_s выполняет поиск в списке переменных среды для varname .
getenv_s не учитывает регистр в операционной системе Windows. getenv_s и
U Внимание!
7 Примечание
Семейства функций _putenv_s и _getenv_s не являются потокобезопасными.
_getenv_s может вернуть указатель строки, в то время как _putenv_s изменяет
строку, что может вызвать случайные сбои. Убедитесь, что вызовы этих
функций синхронизированы.
Требования
Подпрограмма Обязательный заголовок
getenv_s <stdlib.h>
Пример
C
// crt_getenv_s.c
#include <stdlib.h>
#include <stdio.h>
char* libvar;
size_t requiredSize;
if (requiredSize == 0)
exit(1);
if (!libvar)
exit(1);
if (!libvar)
exit(1);
free(libvar);
Output
Original LIB variable is:
c:\vctools\lib;c:\vctools\atlmfc\lib;c:\vctools\PlatformSDK\lib;c:\vctools\V
isual Studio SDKs\DIA Sdk\lib;c:\vctools\Visual Studio SDKs\BSC Sdk\lib
Константы среды
_putenv, _wputenv
_dupenv_s, _wdupenv_s
_getmaxstdio
Статья • 03.04.2023
Синтаксис
C
Возвращаемое значение
Возвращает число, представляющее количество одновременно открытых файлов,
которое в данный момент разрешено на уровне stdio .
Комментарии
Используется _setmaxstdio для настройки количества одновременно открытых
файлов, разрешенных на stdio уровне.
Требования
Подпрограмма Обязательный заголовок
_getmaxstdio <stdio.h>
Пример
C
// crt_setmaxstdio.c
// to the console.
#include <stdio.h>
int main()
_setmaxstdio(2048);
Output
512
2048
Синтаксис
C
Возвращаемое значение
Возвращает текущую многобайтовую кодовую страницу. Возвращаемое значение 0
означает, что используется однобайтовая кодовая страница.
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, ознакомьтесь с глобальным состоянием в CRT.
Требования
Подпрограмма Обязательный заголовок
_getmbcp <mbctype.h>
) Важно!
) Важно!
Синтаксис
C
Возвращаемое значение
Возвращает идентификатор процесса, полученный из системы. Ошибка не
возвращается.
Комментарии
Функция _getpid получает идентификатор процесса из системы. Идентификатор
процесса однозначно идентифицирует вызывающий процесс.
Требования
Подпрограмма Обязательный заголовок
_getpid <process.h>
Пример
C
// crt_getpid.c
#include <stdio.h>
#include <process.h>
Output
_mktemp, _wmktemp
gets_s , _getws_s
Статья • 03.04.2023
Синтаксис
C
char *gets_s(
char *buffer,
size_t sizeInCharacters
);
wchar_t *_getws_s(
wchar_t *buffer,
size_t sizeInCharacters
);
C++
Параметры
buffer
sizeInCharacters
Размер буфера.
Возвращаемое значение
Возвращает значение buffer в случае успешного выполнения. Указатель NULL
указывает на ошибку или конец файла. Используйте ferror или feof , чтобы
определить, какой из них произошел.
Комментарии
Функция gets_s считывает строку из стандартного потока ввода stdin и сохраняет
ее в буфере buffer . Строка состоит из всех символов до и включая первый символ
новой строки (' \n '). gets_s затем заменяет символ новой строки на пустой символ
(' \0 '), прежде чем возвращать строку. Напротив, функция fgets_s сохраняет
символ новой строки.
Если buffer значение меньше NULL или sizeInCharacters равно нулю или если
буфер слишком мал для хранения входной строки и признака конца null, эти
функции вызывают обработчик недопустимых параметров, как описано в разделе
Проверка параметров. Если выполнение может быть продолжено, эти функции
возвращают NULL и устанавливают параметр errno в значение ERANGE .
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
gets_s <stdio.h>
Пример
C
// crt_gets_s.c
#include <stdio.h>
gets_s( line, 20 );
Input
Hello there!
Output
gets, _getws
fgets, fgetws
fputs, fputws
puts, _putws
getw
Статья • 03.04.2023
Синтаксис
C
int _getw(
FILE *stream
);
Параметры
stream
Возвращаемое значение
Функция _getw возвращает считанное целочисленное значение. Возвращаемое
значение EOF указывает на ошибку или конец файла. Тем не менее, так как EOF
также является допустимым целочисленным значением, можно использовать feof
или ferror для проверки наличия ошибки или достижения конца файла. В
противном stream случае NULL вызывается обработчик недопустимых параметров,
как описано в разделе "Проверка параметров". Если выполнение может быть
продолжено, параметр errno устанавливается в значение EINVAL , и функция
возвращает значение EOF .
Комментарии
Функция _getw считывает следующее двоичное значение типа int из файла,
связанного с stream ним, и увеличивает связанный указатель файла (если он
существует), чтобы указать на следующий непрочитанные символы. _getw не
предполагает специального выравнивания элементов в потоке. При
использовании функции _getw могут возникнуть проблемы с переносом,
связанные с размером типа int и порядком байтов в типе int в разных системах.
По умолчанию глобальное состояние этой функции ограничивается приложением.
Сведения об изменении этого поведения см. в разделе "Глобальное состояние" в
CRT.
Требования
Подпрограмма Обязательный заголовок
_getw <stdio.h>
Пример
C
// crt_getw.c
#include <stdio.h>
#include <stdlib.h>
FILE *stream;
int i;
else
i = _getw( stream );
// If there is an error...
clearerr_s( stream );
else
fclose( stream );
Line one.
Line two.
Вывод
Output
См. также
Потоковый ввод-вывод
_putw
gmtime , _gmtime32 , _gmtime64
Статья • 03.04.2023
Синтаксис
C
Параметры
sourceTime
Возвращаемое значение
Указатель на структуру типа tm. Поля возвращаемой структуры содержат
вычисленное значение аргумента sourceTime в формате UTC, а не по местному
времени. Каждое из полей структуры имеет тип int , как описано далее:
Поле Описание
Эти функции проверяют свои параметры. Если sourceTime это NULL указатель или
sourceTime значение отрицательное, эти функции вызывают обработчик
Комментарии
Функция _gmtime32 разбивает sourceTime значение и сохраняет его в статической
выделенной структуре типа tm , определенной в TIME.H . Значение параметра
sourceTime обычно получается из вызова функции time.
7 Примечание
В большинстве случаев целевая среда пытается определить, действует ли
летнее время. Библиотека времени выполнения C принимает правила США
для реализации проверки на летнее время (DST).
Требования
Подпрограмма Обязательный заголовок Обязательный заголовок
C C++
Пример
C
// crt_gmtime.c
#include <time.h>
#include <stdio.h>
int main(void)
struct tm *newtime;
__int64 ltime;
char buff[80];
_time64( <ime );
Output
Coordinated universal time is Tue Feb 12 23:11:31 2002
asctime, _wasctime
Синтаксис
C
errno_t gmtime_s(
);
errno_t _gmtime32_s(
);
errno_t _gmtime64_s(
);
Параметры
tmDest
sourceTime
Возвращаемое значение
Нуль при успешном завершении. Возвращаемое значение — это код ошибки, если
произошел сбой. Коды ошибок определены в ; список этих ошибок см. в
Errno.h разделе errno.
Условия ошибок
tmDest sourceTime Возвращает Значение в tmDest
Комментарии
Функция _gmtime32_s разбивает sourceTime значение и сохраняет его в структуре
типа tm , определенной в Time.h . Адрес структуры передается в параметре tmDest .
Значение sourceTime часто получается из вызова time функции.
7 Примечание
Каждое из полей структуры имеет тип int , как показано в следующей таблице.
Поле Описание
Требования
Подпрограмма Обязательный Обязательный заголовок
заголовок C C++
Пример
C
// crt_gmtime64_s.c
#include <time.h>
#include <stdio.h>
struct tm newtime;
__int64 ltime;
char buf[26];
errno_t err;
_time64( <ime );
if (err)
if (err)
buf );
Output
asctime_s, _wasctime_s
Синтаксис
C
Возвращаемое значение
Функция _heapchk возвращает одну из следующих целочисленных констант
манифеста, определенных в файле Malloc.h.
Комментарии
Функция _heapchk используется при отладке проблем с кучей, обеспечивая
проверку минимальной согласованности кучи. Если операционная система не
поддерживает _heapchk (например, Windows 98), функция возвращает и задает
_HEAPOK значение errno ENOSYS .
Пример
C
// crt_heapchk.c
#include <malloc.h>
#include <stdio.h>
int heapstatus;
char *buffer;
free( buffer );
heapstatus = _heapchk();
switch( heapstatus )
{
case _HEAPOK:
break;
case _HEAPEMPTY:
break;
case _HEAPBADBEGIN:
break;
case _HEAPBADNODE:
break;
Output
OK - heap is fine
_heapadd
_heapmin
_heapset
_heapwalk
_heapmin
Статья • 03.04.2023
Синтаксис
C
Возвращаемое значение
В случае успешного выполнения _heapmin возвращает 0; в противном случае
функция возвращает –1 и задает для errno значение ENOSYS .
Комментарии
Функция _heapmin устанавливает минимальный размер кучи, высвобождая
неиспользуемую память для операционной системы. Если операционная система
не поддерживает _heapmin (например, Windows 98), функция возвращает значение
-1 и задает значение errno ENOSYS .
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
free
_heapadd
_heapchk
_heapset
_heapwalk
malloc
_heapwalk
Статья • 03.04.2023
) Важно!
Синтаксис
C
Параметры
entryinfo
Возвращаемое значение
Функция _heapwalk возвращает одну из следующих целочисленных констант
манифеста, определенных в файле Malloc.h.
Возвращаемое Значение
значение
Комментарии
Функция _heapwalk помогает при отладке в программах проблем, связанных с
кучей. Функция выполняет обход кучи, проходя по одной записи при каждом
вызове, и возвращает указатель на структуру типа _HEAPINFO , содержащую
сведения о следующей записи кучи. Тип _HEAPINFO , определенный в файле Malloc.h,
содержит следующие элементы.
Поле Значение
Эта функция проверяет свои параметры. Если entryinfo это пустой указатель,
вызывается обработчик недопустимых параметров, как описано в разделе
"Проверка параметров". Если выполнение может быть продолжено, параметр
errno устанавливается в значение EINVAL , и функция возвращает значение
_HEAPBADPTR .
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
Пример
C
// crt_heapwalk.c
#include <stdio.h>
#include <malloc.h>
void heapdump(void);
int main(void)
char *buffer;
heapdump();
heapdump();
free(buffer);
heapdump();
void heapdump(void)
_HEAPINFO hinfo;
int heapstatus;
int numLoops;
hinfo._pentry = NULL;
numLoops = 0;
hinfo._pentry, hinfo._size);
numLoops++;
switch(heapstatus)
case _HEAPEMPTY:
break;
case _HEAPEND:
break;
case _HEAPBADPTR:
break;
case _HEAPBADBEGIN:
break;
case _HEAPBADNODE:
break;
Output
...
OK - end of heap
_heapadd
_heapchk
_heapmin
_heapset
hypot , hypotf , hypotl , _hypot , _hypotf ,
_hypotl
Статья • 03.04.2023
Вычисляет гипотенузу.
Синтаксис
C
double hypot(
double x,
double y
);
float hypotf(
float x,
float y
);
long double x,
long double y
);
double _hypot(
double x,
double y
);
float _hypotf(
float x,
float y
);
long double x,
long double y
);
Параметры
x, y
Возвращаемое значение
В случае успешного выполнения hypot возвращает длину гипотенузы. При
переполнении hypot возвращает INF (бесконечность), а параметру errno
присваивается значение ERANGE . Изменить способ обработки ошибок можно с
помощью _matherr .
Комментарии
Функции hypot вычисляют длину гипотенузы правого треугольника, учитывая
длину двух сторон x и y (другими словами, квадратный корень x 2 + y 2).
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_hypot.c
#include <math.h>
#include <stdio.h>
printf( "If a right triangle has sides %2.1f and %2.1f, "
Output
If a right triangle has sides 3.0 and 4.0, its hypotenuse is 5.0
_matherr
ilogb , ilogbf , ilogbl
Статья • 03.04.2023
Синтаксис
C
int ilogb(
double x
);
int ilogb(
float x
); //C++ only
int ilogb(
long double x
); //C++ only
int ilogbf(
float x
);
int ilogbl(
long double x
);
Параметры
x
Указанное значение.
Возвращаемое значение
В случае успешного выполнения эти функции возвращают экспоненту x base-2 в
виде signed int значения.
±0 FP_ILOGB0
Комментарии
Поскольку C++ допускает перегрузки, можно вызывать перегрузки функции ilogb ,
принимающие и возвращающие типы float и long double . В программе C, если вы
не используете <макрос tgmath.h> для вызова этой функции, ilogb всегда
принимает и возвращает значение double .
Требования
Подпрограмма Заголовок C Заголовок C++
frexp
Синтаксис
C
intmax_t imaxabs(
intmax_t n
);
Параметры
n
Целое значение.
Возвращаемое значение
Функция imaxabs возвращает абсолютное значение аргумента. Ошибка не
возвращается.
7 Примечание
Требования
Подпрограмма Обязательный заголовок
imaxabs <inttypes.h>
Дополнительные сведения о совместимости см. в разделе Compatibility.
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_imaxabs.c
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
intmax_t x = LLONG_MIN + 2;
Output
_cabs
Синтаксис
C
imaxdiv_t imaxdiv(
intmax_t numer,
intmax_t denom
);
Параметры
numer
Числитель.
denom
Знаменатель.
Возвращаемое значение
imaxdiv , вызываемая с аргументами типа intmax_t, возвращает структуру типа
Комментарии
Функция imaxdiv производит деление numer на denom , вычисляя таким образом
частное и остаток. Структура imaxdiv_t содержит цитент, intmax_t quot а
оставшуюся часть intmax_t rem . Знак цитаты совпадает со знаком математического
кворента. Его абсолютное значение является крупнейшим целым числом, которое
меньше абсолютного значения математического кворента. Если знаменатель
равен 0, выполнение программы прекратится и появится сообщение об ошибке.
Требования
Подпрограмма Обязательный заголовок
imaxdiv <inttypes.h>
Пример
C
// crt_imaxdiv.c
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
intmax_t x,y;
imaxdiv_t div_result;
x = atoll(argv[1]);
y = atoll(argv[2]);
div_result.quot, div_result.rem);
Output
ldiv, lldiv
_initterm , _initterm_e
Статья • 03.04.2023
Синтаксис
C
PVFV *,
PVFV *
);
PVFV *,
PVFV *
);
Возвращаемое значение
Ненулевой код ошибки, если инициализация завершается неудачей и генерирует
ошибку; 0 при отсутствии ошибок.
Комментарии
Эти методы вызываются только внутри системы во время инициализации
программы C++. Не вызывайте эти методы в программе.
Когда эти методы производят обход таблицы записей функций, они пропускают
записи NULL и продолжают выполнение.
Синтаксис
C
_invalid_parameter(
_invalid_parameter_noinfo(void);
_invalid_parameter_noinfo_noreturn(void);
_invoke_watson(
Параметры
expression
file_name
line_number
reserved
Не используется.
Возвращаемое значение
Эти функции не возвращают значение. Функции _invalid_parameter_noinfo_noreturn
и _invoke_watson функции не возвращаются вызывающей стороны, а в некоторых
случаях _invalid_parameter и _invalid_parameter_noinfo не могут возвращаться
вызывающей.
Комментарии
Если функциям библиотеки времени выполнения C передаются недопустимые
параметры, они вызывают обработчик недопустимого параметра. Он
представляет собой функцию, в которой программист задает выполнение
определенных действий. Например, обработчик может сообщить о проблеме
пользователю, записать данные в журнал, установить прерывание в отладчике,
завершить работу программы или не выполнять никаких действий. Если
программист не указал никакую функцию, по умолчанию вызывается обработчик
_invoke_watson .
Требования
Компонент Обязательный
заголовок
_get_invalid_parameter_handler, _get_thread_local_invalid_parameter_handler
_set_invalid_parameter_handler, _set_thread_local_invalid_parameter_handler
Проверка параметров
isalnum , iswalnum , _isalnum_l ,
_iswalnum_l
Статья • 03.04.2023
Синтаксис
C
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм возвращает отличное от нуля значение, если c —
конкретное представление алфавитно-цифрового символа. isalnum возвращает
ненулевое значение, если isalpha одно или isdigit ненулевое значение для c , то
есть, если c находится в диапазонах A - Z, a - z или 0 - 9. Функция iswalnum
возвращает ненулевое значение, если не равна нулю функция iswalpha или
iswdigit для c . Каждая из этих подпрограмм возвращает значение 0, если c
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Сведения об изменении этого поведения см. в разделе "Глобальное состояние" в
CRT.
Требования
Подпрограмма Обязательный заголовок
isalnum <ctype.h>
_isalnum_l <ctype.h>
Локаль
Синтаксис
C
int isalpha(
int c
);
int iswalpha(
wint_t c
);
int _isalpha_l(
int c,
_locale_t locale
);
int _iswalpha_l(
wint_t c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм возвращает отличное от нуля значение, если c —
конкретное представление алфавитного символа. isalpha возвращает ненулевое
значение, если c находится в диапазонах A - Z или a - z. Функция iswalpha
возвращает ненулевое значение только для расширенных символов, для которых
iswupper или iswlower не равно нулю. К ним относятся любые расширенные
символы, принадлежащие определяемым реализацией наборам, для которых
iswcntrl , iswdigit , iswpunct или iswspace не равны нулю. Каждая из этих
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Сведения об изменении этого поведения см. в разделе "Глобальное состояние" в
CRT.
Требования
Подпрограмма Обязательный заголовок
isalpha <ctype.h>
_isalpha_l <ctype.h>
Локаль
Синтаксис
C
int __isascii(
int c
);
int iswascii(
wint_t c
);
Параметры
c
Возвращаемое значение
Каждая из этих подпрограмм возвращает отличное от нуля значение, если c —
конкретное представление символа ASCII. __isascii возвращает ненулевое
значение, если c является символом ASCII (в диапазоне 0x00 — 0x7F). iswascii
возвращает ненулевое значение, если c является представлением символа ASCII в
виде расширенного символа. Каждая из этих подпрограмм возвращает значение 0,
если c условие теста не удовлетворяет.
Комментарии
Оба __isascii и iswascii реализуются как макросы, если не определен макрос
_CTYPE_DISABLE_MACROS препроцессора.
Для обратной совместимости реализуется как макрос только в том случае, isascii
если __STDC__ он не определен или не определен как 0; в противном случае он не
определен.
Требования
Подпрограмма Обязательный заголовок
Локаль
Синтаксис
C
Параметры
fd
Возвращаемое значение
Функция _isatty возвращает ненулевое значение, если дескриптор связан с
устройством символьного ввода-вывода. В противном случае функция _isatty
возвращает 0.
Комментарии
Функция _isatty определяет, связан ли дескриптор fd с устройством символьного
ввода-вывода (терминал, консоль, принтер или последовательный порт).
Требования
Подпрограмма Обязательный заголовок
_isatty <io.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_isatty.c
*/
#include <stdio.h>
#include <io.h>
else
Синтаксис
C
int isblank(
int c
);
int iswblank(
wint_t c
);
int _isblank_l(
int c,
_locale_t locale
);
int _iswblank_l(
wint_t c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм возвращает ненулевое значение, если c является
конкретным представлением пробела, символа горизонтальной табуляции или
одного из символов языкового набора, которые используются для разделения слов
в строке текста. Функция isblank возвращает ненулевое значение, если c является
символом пробела (0x20) или горизонтальной табуляции (0x09). Результат условия
теста для isblank функций зависит от LC_CTYPE параметра категории языкового
стандарта. Дополнительные сведения см. в разделе setlocale. _wsetlocale Версии
этих функций, у которых _l нет суффикса, используют текущий языковой стандарт
для поведения, зависящее от языкового стандарта. Версии, _l имеющие суффикс,
идентичны, за исключением того, что они используют переданный языковой
стандарт. Для получения дополнительной информации см. Locale.
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, ознакомьтесь с глобальным состоянием в CRT.
Требования
Подпрограмма Обязательный заголовок
isblank <ctype.h>
_isblank_l <ctype.h>
Локаль
Синтаксис
C
int iscntrl(
int c
);
int iswcntrl(
wint_t c
);
int _iscntrl_l(
int c,
_locale_t locale
);
int _iswcntrl_l(
wint_t c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм возвращает отличное от нуля значение, если c —
конкретное представление управляющего символа. iscntrl возвращает ненулевое
значение, если c это элемент управления (0x00 — 0x1F или 0x7F). Функция iswcntrl
возвращает ненулевое значение, если c является расширенным управляющим
символом. Каждая из этих подпрограмм возвращает значение 0, если c не
удовлетворяет условию теста.
Версии этих функций с суффиксом _l используют переданный параметр языкового
стандарта вместо текущего языкового стандарта. Для получения дополнительной
информации см. Locale.
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, ознакомьтесь с глобальным состоянием в CRT.
Требования
Подпрограмма Обязательный заголовок
iscntrl <ctype.h>
_iscntrl_l <ctype.h>
Локаль
Синтаксис
C
int _isctype(
int c,
_ctype_t desc
);
int _isctype_l(
int c,
_ctype_t desc,
_locale_t locale
);
int iswctype(
wint_t c,
wctype_t desc
);
int _iswctype_l(
wint_t c,
wctype_t desc,
_locale_t locale
);
Параметры
c
desc
locale
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, ознакомьтесь с глобальным состоянием в CRT.
Требования
Подпрограмма Обязательный заголовок
_isctype <ctype.h>
_isctype_l <ctype.h>
Локаль
Синтаксис
C
int __iscsym(
int c
);
int __iswcsym(
wint_t c
);
int __iscsymf(
int c
);
int __iswcsymf(
wint_t c
);
int _iscsym_l(
int c,
_locale_t locale
);
int _iswcsym_l(
wint_t c,
_locale_t locale
);
int _iscsymf_l(
int c,
_locale_t locale
);
int _iswcsymf_l(
wint_t c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Функции __iscsym и __iswcsym возвращают ненулевое значение, если c
представляет собой букву, цифру или знак подчеркивания. Функции __iscsymf и
__iswcsymf возвращают ненулевое значение, если c представляет собой букву или
знак подчеркивания. Каждая из этих подпрограмм возвращает значение 0, если c
не удовлетворяет условию теста. Версии этих функций с суффиксом _l идентичны,
за исключением того, что они используют locale переданный вместо текущего
языкового стандарта для поведения, зависящее от языкового стандарта. Для
получения дополнительной информации см. Locale.
Комментарии
Эти подпрограммы реализуются в виде макросов за исключением случаев, когда
определен макрос препроцессора _CTYPE_DISABLE_MACROS. При использовании
версий этих подпрограмм, реализованных в виде макроса, аргументы могут
вычисляться несколько раз. При использовании выражений со списками
аргументов следует соблюдать осторожность.
Требования
Подпрограмма Обязательный
заголовок
Локаль
Синтаксис
C
int isdigit(
int c
);
int iswdigit(
wint_t c
);
int _isdigit_l(
int c,
_locale_t locale
);
int _iswdigit_l(
wint_t c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм возвращает отличное от нуля значение, если c —
конкретное представление символа десятичной цифры. isdigit возвращает
ненулевое значение, если c это десятичная цифра (0 – 9). Функция iswdigit
возвращает ненулевое значение, если c представляет собой расширенный символ,
соответствующий символу десятичной цифры. Каждая из этих подпрограмм
возвращает значение 0, если c не удовлетворяет условию теста.
Версии этих функций с суффиксом _l используют переданный параметр языкового
стандарта вместо текущего языкового стандарта для поведения, зависящего от
языкового стандарта. Для получения дополнительной информации см. Locale.
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, ознакомьтесь с глобальным состоянием в CRT.
Требования
Подпрограмма Обязательный заголовок
isdigit <ctype.h>
_isdigit_l <ctype.h>
Локаль
Синтаксис
C
int isfinite(
/* floating-point */ x
); /* C-only macro */
FloatingType x
int _finite(
double x
);
int _finitef(
float x
Параметры
x
Возвращаемое значение
Макрос isfinite и _finite _finitef функции возвращают ненулевое значение,
если x является нормальным или субнормальным конечным значением. Они
возвращают значение 0, если аргумент является бесконечным или naN. Встроенная
функция isfinite шаблона C++ работает так же, но возвращает true или false .
Комментарии
isfinite — это макрос при компиляции как C и встроенная функция шаблона при
Требования
Компонент Обязательный заголовок Обязательный заголовок (C++)
(C)
_fpclass, _fpclassf
isinf
isnormal
isgraph , iswgraph , _isgraph_l ,
_iswgraph_l
Статья • 03.04.2023
Синтаксис
C
int isgraph(
int c
);
int iswgraph(
wint_t c
);
int _isgraph_l(
int c,
_locale_t locale
);
int _iswgraph_l(
wint_t c,
_locale_t locale
);
Параметры
c
Возвращаемое значение
Каждая из этих подпрограмм возвращает отличное от нуля значение, если c —
конкретное представление печатного символа (кроме пробела). Функция isgraph
возвращает ненулевое значение, если c представляет собой печатный символ,
отличный от пробела. Функция iswgraph возвращает ненулевое значение, если c
представляет собой расширенный печатный символ, отличный от расширенного
символа пробела. Каждая из этих подпрограмм возвращает значение 0, если c
условие теста не удовлетворяет.
Версии этих функций с суффиксом _l используют переданный параметр языкового
стандарта вместо текущего языкового стандарта для поведения, зависящего от
языкового стандарта. Для получения дополнительной информации см. Locale.
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Сведения об изменении этого поведения см. в разделе "Глобальное состояние" в
CRT.
Требования
Подпрограмма Обязательный заголовок
isgraph <ctype.h>
_isgraph_l <ctype.h>
Локаль
Синтаксис
C
int isgreater(
/* floating-point */ x,
/* floating-point */ y
); /* C-only macro */
int isgreaterequal(
/* floating-point */ x,
/* floating-point */ y
); /* C-only macro */
int isless(
/* floating-point */ x,
/* floating-point */ y
); /* C-only macro */
int islessequal(
/* floating-point */ x,
/* floating-point */ y
); /* C-only macro */
int islessgreater(
/* floating-point */ x,
/* floating-point */ y
); /* C-only macro */
int isunordered(
/* floating-point */ x,
/* floating-point */ y
); /* C-only macro */
C++
FloatingType1 x,
FloatingType2 y
FloatingType1 x,
FloatingType2 y
FloatingType1 x,
FloatingType2 y
FloatingType1 x,
FloatingType2 y
FloatingType1 x,
FloatingType2 y
FloatingType1 x,
FloatingType2 y
Параметры
x, y
Возвращаемое значение
Во всех сравнениях бесконечности одного знака сравниваются как равные.
Отрицательная бесконечность меньше, чем любое конечное значение или
положительная бесконечность. Положительная бесконечность больше, чем любое
конечное значение или отрицательная бесконечность. Нули равны независимо от
знака. Значения NaN не меньше, равны или больше, чем любое значение, включая
другое значение NaN.
Макрос isunordered возвращает ненулевое значение, y если x одно из них или оба
являются naN. В противном случае возвращается значение 0. Форма функции ведет
себя так же, но возвращает true или false .
Комментарии
Эти операции сравнения реализуются как макросы при компиляции как C, а также
как встроенные функции шаблона при компиляции как C++.
Требования
Компонент Обязательный Обязательный заголовок
заголовок (C) (C++)
islessequal , islessgreater ,
isunordered
isinf
_fpclass, _fpclassf
isinf
Статья • 03.04.2023
Синтаксис
C
int isinf(
/* floating-point */ x
); /* C-only macro */
FloatingType x
Параметры
x
Возвращаемое значение
isinf возвращает ненулевое значение ( true в коде C++), если аргумент x
является положительным или отрицательным бесконечностью. isinf возвращает
значение 0 ( false в коде C++), если аргумент является конечным или NAN.
Обычные и субнормальные значения с плавающей запятой считаются конечными.
Комментарии
isinf — это макрос при компиляции как C и встроенная функция шаблона при
Требования
Компонент Обязательный заголовок (C) Обязательный заголовок (C++)
Компонент Обязательный заголовок (C) Обязательный заголовок (C++)
_fpclass, _fpclassf
isnormal
isleadbyte , _isleadbyte_l
Статья • 03.04.2023
) Важно!
Синтаксис
C
Параметры
c
Возвращаемое значение
isleadbyte возвращает ненулевое значение, если аргумент удовлетворяет условию
Комментарии
Макрос isleadbyte возвращает ненулевое значение, если его аргумент является
первым байтом многобайтового символа. isleadbyte создает значимый результат
для любого целочисленного аргумента от -1 () до UCHAR_MAX ( EOF 0xFF),
включительно.
Ожидаемый тип аргумента isleadbyte — int . Если передается символ со знаком,
компилятор может преобразовать его в целое число по расширению знака,
создавая непредсказуемые результаты.
Требования
Подпрограмма Обязательный заголовок
isleadbyte <ctype.h>
_isleadbyte_l <ctype.h>
Локаль
_ismbb Процедуры
islower , iswlower , _islower_l ,
_iswlower_l
Статья • 03.04.2023
Синтаксис
C
int islower(
int c
);
int iswlower(
wint_t c
);
int islower_l(
int c,
_locale_t locale
);
int _iswlower_l(
wint_t c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм возвращает отличное от нуля значение, если c —
конкретное представление символа в нижнем регистре. islower возвращает
ненулевое значение, если c это символ нижнего регистра (a – z). Функция iswlower
возвращает ненулевое значение только в том случае, если c является
расширенным символом, соответствующим букве в нижнем регистре, или если c
принадлежит определяемому реализацией набору расширенных символов, для
которых iswcntrl , iswdigit , iswpunct или iswspace не равны нулю. Каждая из этих
подпрограмм возвращает значение 0, если c не удовлетворяет условию теста.
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, ознакомьтесь с глобальным состоянием в CRT.
Требования
Подпрограмма Обязательный заголовок
islower <ctype.h>
_islower_l <ctype.h>
Локаль
Синтаксис
C
int _ismbbalnum(
unsigned int c
);
int _ismbbalnum_l(
unsigned int c
);
Параметры
c
locale
Возвращаемое значение
_ismbbalnum возвращает ненулевое значение, если выражение:
isalnum(c) || _ismbbkalnum(c)
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, ознакомьтесь с глобальным состоянием в CRT.
Требования
Подпрограмма Обязательный заголовок
_ismbbalnum <mbctype.h>
_ismbbalnum_l <mbctype.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
_ismbb Процедуры
_ismbbalpha , _ismbbalpha_l
Статья • 03.04.2023
Синтаксис
C
int _ismbbalpha(
unsigned int c
);
int _ismbbalpha_l(
unsigned int c
);
Параметры
c
locale
Возвращаемое значение
_ismbbalpha возвращает ненулевое значение, если выражение:
isalpha(c) || _ismbbkalnum(c)
ненулевое значение для c или 0, если выражение равно нулю. Функция _ismbbalpha
использует текущий языковой стандарт для любых параметров символов,
зависящих от языкового стандарта. Функция _ismbbalpha_l идентична за
исключением того, что использует переданный языковой стандарт.
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, ознакомьтесь с глобальным состоянием в CRT.
Требования
Подпрограмма Обязательный заголовок
_ismbbalpha <mbctype.h>
_ismbbalpha_l <mbctype.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
_ismbb Процедуры
_ismbbblank , _ismbbblank_l
Статья • 03.04.2023
) Важно!
Синтаксис
C
int _ismbbblank(
unsigned int c
);
int _ismbbblank_l(
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Функция _ismbbblank возвращает ненулевое значение, если c представляет пробел
(0x20), символ горизонтальной табуляции (0x09) или знак языкового стандарта,
используемый для разделения слов в строке текста, для которого isspace имеет
значение true. В противном случае возвращается 0. Функция _ismbbblank использует
текущий языковой стандарт для любого поведения, зависящего от языкового
стандарта. Функция _ismbbblank_l идентична за исключением того, что использует
переданный языковой стандарт. Для получения дополнительной информации см.
Locale.
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Сведения об изменении этого поведения см. в разделе "Глобальное состояние" в
CRT.
Требования
Подпрограмма Обязательный заголовок
_ismbbblank <mbctype.h>
_ismbbblank_l <mbctype.h>
_ismbb Процедуры
_ismbbgraph , _ismbbgraph_l
Статья • 03.04.2023
Синтаксис
C
int _ismbbgraph (
unsigned int c
);
int _ismbbgraph_l (
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Возвращает ненулевое значение, если выражение:
ненулевое значение для c , или 0, если оно равно нулю. Функция _ismbbgraph
использует текущий языковой стандарт для любого поведения, зависящего от
языкового стандарта. Функция _ismbbgraph_l идентична за исключением того, что
использует переданный языковой стандарт. Для получения дополнительной
информации см. Locale.
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, ознакомьтесь с глобальным состоянием в CRT.
Требования
Подпрограмма Обязательный заголовок
_ismbbgraph <mbctype.h>
_ismbbgraph_l <mbctype.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
_ismbb Процедуры
_ismbbkalnum , _ismbbkalnum_l
Статья • 03.04.2023
Синтаксис
C
int _ismbbkalnum(
unsigned int c
);
int _ismbbkalnum_l(
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
_ismbbkalnum возвращает ненулевое значение, если целое число c является
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, ознакомьтесь с глобальным состоянием в CRT.
Требования
Подпрограмма Обязательный заголовок
_ismbbkalnum <mbctype.h>
_ismbbkalnum_l <mbctype.h>
_ismbb Процедуры
_ismbbkana , _ismbbkana_l
Статья • 03.04.2023
Синтаксис
C
int _ismbbkana(
unsigned int c
);
int _ismbbkana_l(
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
_ismbbkana возвращает ненулевое значение, если целое число c является
символом катаканы. В противном случае возвращается значение 0.
Функция _ismbbkana использует текущий языковой стандарт для получения
сведений о символах, зависящих от языкового стандарта. Функция _ismbbkana_l
идентична, за исключением того, что она использует переданный объект
языкового стандарта. Для получения дополнительной информации см. Locale.
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, ознакомьтесь с глобальным состоянием в CRT.
Требования
Подпрограмма Обязательный заголовок
_ismbbkana <mbctype.h>
_ismbbkana_l <mbctype.h>
_ismbb Процедуры
_ismbbkprint , _ismbbkprint_l
Статья • 03.04.2023
Синтаксис
C
int _ismbbkprint(
unsigned int c
);
int _ismbbkprint_l(
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
_ismbbkprint возвращает ненулевое значение, если целое число c является
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Сведения об изменении этого поведения см. в разделе "Глобальное состояние" в
CRT.
Требования
Подпрограмма Обязательный заголовок
_ismbbkprint <mbctype.h>
_ismbbkprint_l <mbctype.h>
_ismbb Процедуры
_ismbbkpunct , _ismbbkpunct_l
Статья • 03.04.2023
Синтаксис
C
int _ismbbkpunct(
unsigned int c
);
int _ismbbkpunct_l(
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
_ismbbkpunct возвращает ненулевое значение, если целое число c представляет
собой символ знака препинания, не входящий в набор ASCII. В противном случае
возвращается значение 0. Например, только для кодовой страницы 932,
_ismbbkpunct проверяет на принадлежность к пунктуационным символам катаканы.
Функция _ismbbkpunct использует текущий языковой стандарт для любых
параметров символов, зависящих от языкового стандарта. Функция _ismbbkpunct_l
идентична, за исключением того, что используется переданный языковой стандарт.
Для получения дополнительной информации см. Locale.
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Сведения об изменении этого поведения см. в разделе "Глобальное состояние" в
CRT.
Требования
Подпрограмма Обязательный заголовок
_ismbbkpunct <mbctype.h>
_ismbbkpunct_l <mbctype.h>
_ismbb Процедуры
_ismbblead , _ismbblead_l
Статья • 03.04.2023
Синтаксис
C
int _ismbblead(
unsigned int c
);
int _ismbblead_l(
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Возвращает ненулевое значение, если целочисленное значение c является
первым байтом многобайтового символа.
Комментарии
Многобайтовые символы состоят из старшего байта, за которым следует конечный
байт. Старшие байты относятся к определенному диапазону данной кодировки.
Например, только на кодовой странице 932 в диапазоне от 0x81 — 0x9F и 0xE0 —
0xFC.
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
_ismbb Процедуры
mbrlen
_ismbbprint , _ismbbprint_l
Статья • 03.04.2023
Синтаксис
C
int _ismbbprint(
unsigned int c
);
int _ismbbprint_l(
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
_ismbbprint возвращает ненулевое значение, если выражение:
isprint(c) || _ismbbkprint(c)
ненулевое значение для c , или 0, если это не так. Функция _ismbbprint использует
текущий языковой стандарт для любого поведения, зависящего от языкового
стандарта. Функция _ismbbprint_l идентична за исключением того, что использует
переданный языковой стандарт. Для получения дополнительной информации см.
Locale.
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Сведения об изменении этого поведения см. в разделе "Глобальное состояние" в
CRT.
Требования
Подпрограмма Обязательный заголовок
_ismbbprint <mbctype.h>
_ismbbprint_l <mbctype.h>
_ismbb Процедуры
_ismbbpunct , _ismbbpunct_l
Статья • 03.04.2023
Синтаксис
C
int _ismbbpunct(
unsigned int c
);
int _ismbbpunct_l(
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
_ismbbpunct возвращает ненулевое значение, если целое число c представляет
собой символ знака препинания, не входящий в набор ASCII. Функция _ismbbpunct
использует текущий языковой стандарт для любых параметров символов,
зависящих от языкового стандарта. Функция _ismbbpunct_l идентична, за
исключением того, что используется переданный языковой стандарт. Для
получения дополнительной информации см. Locale.
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, ознакомьтесь с глобальным состоянием в CRT.
Требования
Подпрограмма Обязательный заголовок
_ismbbpunct <mbctype.h>
_ismbbpunct_l <mbctype.h>
_ismbb Процедуры
_ismbbtrail , _ismbbtrail_l
Статья • 03.04.2023
Синтаксис
C
int _ismbbtrail(
unsigned int c
);
int _ismbbtrail_l(
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
_ismbbtrail возвращает ненулевое значение, если целочисленное значение c
является вторым байтом многобайтового символа. Например, только для кодовой
страницы 932, допустимые диапазоны: 0x40–0x7E и 0x80–0xFC.
Комментарии
Функция _ismbbtrail использует текущий языковой стандарт для поведения,
зависящего от языкового стандарта. Функция _ismbbtrail_l идентична за
исключением того, что использует переданный языковой стандарт. Для получения
дополнительной информации см. Locale.
_ismbb Процедуры
_ismbcalnum , _ismbcalnum_l ,
_ismbcalpha , _ismbcalpha_l ,
_ismbcdigit , _ismbcdigit_l
Статья • 03.04.2023
) Важно!
Синтаксис
C
int _ismbcalnum
unsigned int c
);
int _ismbcalnum_l
unsigned int c,
_locale_t locale
);
int _ismbcalpha
unsigned int c
);
int _ismbcalpha_l
unsigned int c,
_locale_t locale
);
int _ismbcdigit
unsigned int c
);
int _ismbcdigit_l
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм возвращает ненулевое значение, если символ
удовлетворяет условию теста. В противном случае они возвращают значение 0.
Если c <= 255 и имеется соответствующая _ismbb подпрограмма (например,
_ismbcalnum соответствует _ismbbalnum ), результатом является возвращаемое
Комментарии
Каждая из этих подпрограмм проверяет определенный многобайтовый символ на
соответствие заданному условию.
Требования
Подпрограмма Обязательный заголовок
_ismbc Процедуры
_ismbb Процедуры
_ismbcgraph , _ismbcgraph_l ,
_ismbcprint , _ismbcprint_l ,
_ismbcpunct , _ismbcpunct_l ,
_ismbcblank , _ismbcblank_l ,
_ismbcspace , _ismbcspace_l
Статья • 03.04.2023
) Важно!
Синтаксис
C
int _ismbcgraph(
unsigned int c
);
int _ismbcgraph_l(
unsigned int c,
_locale_t locale
);
int _ismbcprint(
unsigned int c
);
int _ismbcprint_l(
unsigned int c,
_locale_t locale
);
int _ismbcpunct(
unsigned int c
);
int _ismbcpunct_l(
unsigned int c,
_locale_t locale
);
int _ismbcblank(
unsigned int c
);
int _ismbcblank_l(
unsigned int c,
_locale_t locale
);
int _ismbcspace(
unsigned int c
);
int _ismbcspace_l(
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм возвращает ненулевое значение, если символ
удовлетворяет условию теста. В противном случае они возвращают значение 0.
Если c <= 255 и имеется соответствующая _ismbb подпрограмма (например,
_ismbcalnum соответствует _ismbbalnum ), результатом будет возвращаемое значение
Комментарии
Каждая из этих функций проверяет определенный многобайтовый символ на
соответствие заданному условию.
Требования
Подпрограмма Обязательный заголовок
_ismbcgraph <mbstring.h>
_ismbcgraph_l <mbstring.h>
_ismbcprint <mbstring.h>
_ismbcprint_l <mbstring.h>
_ismbcpunct <mbstring.h>
_ismbcpunct_l <mbstring.h>
_ismbcblank <mbstring.h>
_ismbcblank_l <mbstring.h>
Подпрограмма Обязательный заголовок
_ismbcspace <mbstring.h>
_ismbcspace_l <mbstring.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Локаль
_ismbc Процедуры
_ismbb Процедуры
_ismbchira , _ismbchira_l , _ismbckata ,
_ismbckata_l
Статья • 03.04.2023
) Важно!
Синтаксис
C
int _ismbchira(
unsigned int c
);
int _ismbchira_l(
unsigned int c,
_locale_t locale
);
int _ismbckata(
unsigned int c
);
int _ismbckata_l(
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм возвращает ненулевое значение, если символ
удовлетворяет условию теста. В противном случае они возвращают значение 0.
Если c <= 255 и имеется соответствующая _ismbb подпрограмма (например,
_ismbcalnum соответствует _ismbbalnum ), результатом является возвращаемое
значение соответствующей _ismbb подпрограммы.
Комментарии
Каждая из этих функций проверяет определенный многобайтовый символ на
соответствие заданному условию.
Требования
Подпрограмма Обязательный заголовок
_ismbchira <mbstring.h>
_ismbchira_l <mbstring.h>
_ismbckata <mbstring.h>
_ismbckata_l <mbstring.h>
Дополнительные сведения о совместимости см. в разделе Compatibility.
_ismbc Процедуры
Локаль
) Важно!
Синтаксис
C
int _ismbcl0(
unsigned int c
);
int _ismbcl0_l(
unsigned int c,
_locale_t locale
);
int _ismbcl1(
unsigned int c
);
int _ismbcl1_l(
unsigned int c ,
_locale_t locale
);
int _ismbcl2(
unsigned int c
);
int _ismbcl2_l(
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм возвращает ненулевое значение, если символ
удовлетворяет условию теста. В противном случае они возвращают значение 0.
Если c <= 255 и имеется соответствующая _ismbb подпрограмма (например,
_ismbcalnum соответствует _ismbbalnum ), результатом является возвращаемое
значение соответствующей _ismbb подпрограммы.
Комментарии
Каждая из этих функций проверяет определенный многобайтовый символ на
соответствие заданному условию.
Требования
Подпрограмма Обязательный заголовок
_ismbcl0 <mbstring.h>
_ismbcl0_l <mbstring.h>
_ismbcl1 <mbstring.h>
_ismbcl1_l <mbstring.h>
_ismbcl2 <mbstring.h>
_ismbcl2_l <mbstring.h>
_ismbc Процедуры
) Важно!
Синтаксис
C
int _ismbclegal(
unsigned int c
);
int _ismbclegal_l(
unsigned int c,
_locale_t locale
);
int _ismbcsymbol(
unsigned int c
);
int _ismbcsymbol_l(
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм возвращает ненулевое значение, если символ
удовлетворяет условию теста. В противном случае они возвращают значение 0.
Если c <= 255 и имеется соответствующая _ismbb подпрограмма (например,
_ismbcalnum соответствует _ismbbalnum ), результатом является возвращаемое
значение соответствующей _ismbb подпрограммы.
Комментарии
Каждая из этих функций проверяет определенный многобайтовый символ на
соответствие заданному условию.
Требования
Подпрограмма Обязательный заголовок
_ismbc Процедуры
_ismbb Процедуры
_ismbclower , _ismbclower_l ,
_ismbcupper , _ismbcupper_l
Статья • 03.04.2023
) Важно!
Синтаксис
C
int _ismbclower(
unsigned int c
);
int _ismbclower_l(
unsigned int c,
_locale_t locale
);
int _ismbcupper(
unsigned int c
);
int _ismbcupper_l(
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм возвращает ненулевое значение, если символ
удовлетворяет условию теста. В противном случае они возвращают значение 0.
Если c <= 255 и имеется соответствующая _ismbb подпрограмма (например,
_ismbcalnum соответствует _ismbbalnum ), результатом является возвращаемое
значение соответствующей _ismbb подпрограммы.
Комментарии
Каждая из этих функций проверяет определенный многобайтовый символ на
соответствие заданному условию.
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
_ismbclower <mbstring.h>
_ismbclower_l <mbstring.h>
_ismbcupper <mbstring.h>
_ismbcupper_l <mbstring.h>
_ismbc Процедуры
Локаль
_ismbb Процедуры
_ismbslead , _ismbstrail , _ismbslead_l ,
_ismbstrail_l
Статья • 03.04.2023
) Важно!
Синтаксис
C
int _ismbslead(
);
int _ismbstrail(
);
int _ismbslead_l(
_locale_t locale
);
int _ismbstrail_l(
_locale_t locale
);
Параметры
str
locale
Возвращаемое значение
_ismbslead возвращает значение -1, если символ является ведущим байтом и
_ismbstrail возвращает значение -1, если символ является байтом следа. Если
Комментарии
_ismbslead и _ismbstrail выполняются медленнее, чем версии _ismbblead и
_ismbbtrail , так как учитывает контекст строки.
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
_ismbc Процедуры
_ismbb Процедуры
isnan , _isnan , _isnanf
Статья • 03.04.2023
Синтаксис
C
int isnan(
/* floating-point */ x
); /* C-only macro */
int _isnan(
double x
);
int _isnanf(
float x
); /* x64 only */
bool isnan(
T x
Параметры
x
Возвращаемое значение
В C макрос и _isnan _isnanf функции возвращают ненулевое значение, isnan если
аргумент x является naN; в противном случае они возвращают значение 0.
Комментарии
Так как значение NaN не сравнивается как равное самому себе или любому
другому значению NaN, чтобы определить его, необходимо использовать одну из
этих функций или макросов. Значение NaN создается, если результат операции с
плавающей запятой не может быть представлен в формате с плавающей запятой
IEEE-754 для указанного типа. Сведения о том, как представляется naN для
выходных данных, см. в разделе printf.
При компиляции как C++ isnan макрос не определен, и isnan вместо этого
определяется функция шаблона. Он ведет себя так же, как макрос, но возвращает
значение типа bool вместо целого числа.
Требования
Подпрограмма Обязательный заголовок (C) Обязательный заголовок (C++)
_fpclass, _fpclassf
isinf
isnormal
isnormal
Статья • 03.04.2023
Синтаксис
C
int isnormal(
/* floating-point */ x
); /* C-only macro */
FloatingType x
Параметры
x
Возвращаемое значение
isnormal возвращает ненулевое значение ( true в коде C++), если аргумент x не
равен нулю, субнормальному, бесконечному или naN. isnormal В противном
случае возвращает значение 0 ( false в коде C++).
Комментарии
isnormal — это макрос, скомпилированный как C, и встроенный шаблон функции
при компиляции как C++.
Требования
Компонент Обязательный заголовок (C) Обязательный заголовок (C++)
isinf
_fpclass, _fpclassf
ispunct , iswpunct , _ispunct_l ,
_iswpunct_l
Статья • 03.04.2023
Синтаксис
C
int ispunct(
int c
);
int iswpunct(
wint_t c
);
int _ispunct_l(
int c,
_locale_t locale
);
int _iswpunct_l(
wint_t c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм возвращает отличное от нуля значение, если c —
конкретное представление знака препинания. ispunct возвращает ненулевое
значение для любого печатного символа, который не является пробелом или
символом, для которого isalnum не является ненулевой. iswpunct возвращает
ненулевое значение для любого печатного широкого символа, который не
является символом ширины пробела или расширенным символом, для которого
iswalnum ненулевое значение. Каждая из этих подпрограмм возвращает значение
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, ознакомьтесь с глобальным состоянием в CRT.
Требования
Подпрограмма Обязательный заголовок
ispunct <ctype.h>
_ispunct_l <ctype.h>
Локаль
Синтаксис
C
int isprint(
int c
);
int iswprint(
wint_t c
);
int _isprint_l(
int c,
_locale_t locale
);
int _iswprint_l(
wint_t c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм возвращает отличное от нуля значение, если c —
конкретное представление печатного символа. isprint возвращает ненулевое
значение, если c является печатным символом (0x20 — 0x7E), включая символ
пробела. iswprint возвращает ненулевое значение, если c является печатаемым
расширенным символом, включая символ пробела. Каждая из этих подпрограмм
возвращает 0, если c не соответствует условию теста.
Результат условия теста для этих функций зависит LC_CTYPE от параметра категории
языкового стандарта. Дополнительные сведения см. в разделеsetlocale . _wsetlocale
Версии этих функций без _l суффикса используют текущий языковой стандарт для
любого поведения, зависящее от языкового стандарта; версии, имеющие суффикс
_l , идентичны, за исключением того, что они используют переданный языковой
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, см. статью Глобальное состояние в CRT.
Требования
Подпрограмма Обязательный заголовок
isprint <ctype.h>
_isprint_l <ctype.h>
Локаль
Синтаксис
C
int isspace(
int c
);
int iswspace(
wint_t c
);
int _isspace_l(
int c,
_locale_t locale
);
int _iswspace_l(
wint_t c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм возвращает отличное от нуля значение, если c —
конкретное представление символа пробела. isspace возвращает ненулевое
значение, если c является символом пробела (0x09 — 0x0D или 0x20). Результат
условия теста для isspace функции зависит LC_CTYPE от параметра категории
языкового стандарта. Дополнительные сведения см. в разделеsetlocale , _wsetlocale.
Версии этих функций, у которых нет суффикса _l , используют текущий языковой
стандарт для любого поведения, зависящее от языкового стандарта. Версии с
суффиксом _l идентичны, за исключением того, что они используют переданный
языковой стандарт. Для получения дополнительной информации см. Locale.
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, см. статью Глобальное состояние в CRT.
Требования
Подпрограмма Обязательный заголовок
isspace <ctype.h>
_isspace_l <ctype.h>
Локаль
Синтаксис
C
int isupper(
int c
);
int _isupper_l (
int c,
_locale_t locale
);
int iswupper(
wint_t c
);
int _iwsupper_l(
wint_t c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм возвращает отличное от нуля значение, если c —
конкретное представление буквы в верхнем регистре. isupper возвращает
ненулевое значение, если c является символом верхнего регистра (A – Z). Функция
iswupper возвращает ненулевое значение только в том случае, если c является
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Сведения об изменении этого поведения см. в разделе "Глобальное состояние" в
CRT.
Требования
Подпрограмма Обязательный заголовок
isupper <ctype.h>
_isupper_l <ctype.h>
_iswupper_l <ctype.h>
Локаль
Синтаксис
C
int isxdigit(
int c
);
int iswxdigit(
wint_t c
);
int _isxdigit_l(
int c,
_locale_t locale
);
int _iswxdigit_l(
wint_t c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм возвращает отличное от нуля значение, если c —
конкретное представление шестнадцатеричного символа. isxdigit возвращает
ненулевое значение, если c является шестнадцатеричной цифрой (A - F, a - f или 0
– 9). Функция iswxdigit возвращает ненулевое значение, если c представляет
собой расширенный символ, соответствующий шестнадцатеричному символу.
Каждая из этих подпрограмм возвращает значение 0, если c условие теста не
удовлетворяет.
Комментарии
По умолчанию глобальное состояние этой функции ограничивается приложением.
Сведения об изменении этого поведения см. в разделе "Глобальное состояние" в
CRT.
Требования
Подпрограмма Обязательный заголовок
isxdigit <ctype.h>
_isxdigit_l <ctype.h>
Локаль
Синтаксис
C
char * _ui64toa( unsigned long long value, char *buffer, int radix );
wchar_t * _ui64tow( unsigned long long value, wchar_t *buffer, int radix );
char * _ui64toa( unsigned long long value, char (&buffer)[size], int radix
);
int radix );
Параметры
value
buffer
radix
size
Возвращаемое значение
Каждая из этих функций возвращает указатель на buffer . Ошибка не возвращается.
Комментарии
Функции _itoa , , _ltoa и _i64toa _ui64toa _ultoa функции преобразуют цифры
заданного value аргумента в строку символов, завершающейся значением NULL, и
сохраняют результат (до 33 символов для _itoa , _ltoa и, а также _ultoa 65 для
_i64toa и _ui64toa ) в buffer . Если radix значение равно 10 и value
) Важно!
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdlib.h>
#define _CRT_NONSTDC_NO_WARNINGS 1
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdlib.h>
_itoa , _itow 16
_MAX_ITOSTR_BASE16_COUNT
10
_MAX_ITOSTR_BASE10_COUNT
8
_MAX_ITOSTR_BASE8_COUNT
2 _MAX_ITOSTR_BASE2_COUNT
_ltoa , _ltow 16
_MAX_LTOSTR_BASE16_COUNT
10
_MAX_LTOSTR_BASE10_COUNT
8
_MAX_LTOSTR_BASE8_COUNT
2 _MAX_LTOSTR_BASE2_COUNT
_ultoa , _ultow 16
_MAX_ULTOSTR_BASE16_COUNT
10
_MAX_ULTOSTR_BASE10_COUNT
8
_MAX_ULTOSTR_BASE8_COUNT
2 _MAX_ULTOSTR_BASE2_COUNT
_i64toa , _i64tow 16
_MAX_I64TOSTR_BASE16_COUNT
10
_MAX_I64TOSTR_BASE10_COUNT
8
_MAX_I64TOSTR_BASE8_COUNT
2 _MAX_I64TOSTR_BASE2_COUNT
_ui64toa , _ui64tow 16
_MAX_U64TOSTR_BASE16_COUNT
10
_MAX_U64TOSTR_BASE10_COUNT
8
_MAX_U64TOSTR_BASE8_COUNT
2 _MAX_U64TOSTR_BASE2_COUNT
C++
#include <wchar.h>
#include <iostream>
int main()
wchar_t buffer[_MAX_U64TOSTR_BASE2_COUNT];
Требования
Подпрограмма Обязательный заголовок
Пример
В этом примере демонстрируется использование некоторых функций
преобразования целых чисел. Обратите внимание на использование
_CRT_SECURE_NO_WARNINGS макроса для молчания предупреждения C4996.
// crt_itoa.c
// in various examples.
#define _CRT_SECURE_NO_WARNINGS 1
int main(void)
char buffer[_MAX_U64TOSTR_BASE2_COUNT];
int r;
strnlen(buffer, _countof(buffer)));
printf("\n");
strnlen(buffer, _countof(buffer)));
printf("\n");
strnlen(buffer, _countof(buffer)));
Output
См. также:
Преобразование данных
Синтаксис
C
errno_t _itoa_s( int value, char * buffer, size_t size, int radix );
errno_t _ltoa_s( long value, char * buffer, size_t size, int radix );
errno_t _ultoa_s( unsigned long value, char * buffer, size_t size, int radix
);
);
Параметры
value
buffer
size
radix
Радикс или числовая база для преобразования value , которая должна находиться в
диапазоне от 2 до 36.
Возвращаемое значение
Возвращает нуль в случае успеха или код ошибки в случае неудачи. Если
применяется любое из следующих условий, функция вызывает обработчик
недопустимых параметров, как описано в разделе "Проверка параметров".
Условия ошибок
Проблемы с безопасностью
Эти функции могут создать нарушение доступа, если buffer не указывает на
допустимую память и не NULL является, или если длина буфера недостаточно
длинна для хранения результирующих строк.
Комментарии
За исключением параметров и возвращаемого значения, семейства функций
_itow_s имеют то же поведение, _itoa_s что и соответствующие менее
безопасные _itoa и _itow версии.
Версии библиотек отладки этих функций сначала заполняют буфер 0xFE. Чтобы
отключить это поведение, используйте _CrtSetDebugFillThreshold.
Требования
Подпрограмма Обязательный заголовок
Пример
В этом примере показано использование нескольких функций преобразования
целых чисел. Макрос _countof работает только для определения размера буфера,
когда объявление массива отображается компилятору, а не для параметров,
которые разлагались на указатели.
// crt_itoa_s.c
char buffer[_MAX_U64TOSTR_BASE2_COUNT];
int r;
printf( "\n" );
printf( "\n" );
Output
См. также:
Преобразование данных
) Важно!
) Важно!
Синтаксис
C
Возвращаемое значение
Функция _kbhit возвращает ненулевое значение, если была нажата клавиша. В
противном случае возвращается значение 0.
Комментарии
Функция _kbhit проверяет консоль на предмет недавнего нажатия клавиши. Если
функция возвращает ненулевое значение, нажатие клавиши ожидает в буфере.
Программа может затем вызвать _getch или _getche для получения нажатия
клавиши.
Требования
Подпрограмма Обязательный заголовок
_kbhit <conio.h>
Дополнительные сведения о совместимости см. в разделе Compatibility.
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_kbhit.c
// compile with: /c
*/
#include <conio.h>
#include <stdio.h>
while( !_kbhit() )
Hit me!! Hit me!! Hit me!! Hit me!! Hit me!! Hit me!! Hit me!!
Синтаксис
C
double ldexp(
double x,
int exp
);
float ldexpf(
float x,
int exp
);
long double x,
int exp
);
float ldexp(
float x,
int exp
); // C++ only
long double x,
int exp
); // C++ only
Параметры
x
exp
Возвращаемое значение
При ldexp успешном выполнении x функции возвращают значение *2 exp . При
переполнении x ldexp и в зависимости от знака возвращает +/- HUGE_VAL значение
errno ERANGE .
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки ldexp , которые
принимают типы float или long double . В программе C, если вы не используете
<макрос tgmath.h> для вызова этой функции, ldexp всегда принимает double и
int возвращает значение double .
Требования
Подпрограмма Заголовок C Заголовок C++
Пример
C
// crt_ldexp.c
#include <math.h>
#include <stdio.h>
double x = 4.0, y;
int p = 3;
y = ldexp( x, p );
Выходные данные
Output
См. также
Поддержка математических функций для чисел с плавающей запятой
frexp
Синтаксис
C
div_t div(
int numer,
int denom
);
ldiv_t ldiv(
long numer,
long denom
);
lldiv_t lldiv(
);
C++
ldiv_t div(
long numer,
long denom
); /* C++ only */
lldiv_t div(
); /* C++ only */
Параметры
numer
Числитель.
denom
Знаменатель.
Возвращаемое значение
div вызывается с помощью аргументов типа int , возвращает структуру типа
Комментарии
Функция div делится numer на denom и вычисляет цитент и оставшуюся часть.
Структура div_t содержит частное ( quot ) и остаток ( rem ). Знак цитаты совпадает со
знаком математического кворента. Его абсолютное значение является крупнейшим
целым числом, которое меньше абсолютного значения математического кворента.
Если знаменатель равен 0, выполнение программы прекратится и появится
сообщение об ошибке.
Перегрузки, которые принимают аргументы div типа long или long long доступны
только для кода C++. Возвращаемые типы ldiv_t и lldiv_t содержат элементы quot ,
rem которые имеют те же значения, что и члены div_t .
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_div.c
// arguments: 876 13
//
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int x,y;
div_t div_result;
x = atoi( argv[1] );
y = atoi( argv[2] );
div_result = div( x, y );
div_result.quot, div_result.rem );
Output
x is 876, y is 13
Синтаксис
C
void *_lfind(
);
Параметры
key
Искомый объект.
base
number
width
compare
Возвращаемое значение
Если ключ найден, функция _lfind возвращает указатель на элемент массива base ,
соответствующий key . Если ключ не найден, _lfind возвращается NULL .
Комментарии
Функция _lfind выполняет линейный поиск значения key в массиве из number
элементов шириной width каждый. В отличие от bsearch этого, _lfind не требует
сортировки массива. Аргумент base является указателем на начало массива, в
котором осуществляется поиск. Аргумент compare является указателем на
пользовательскую подпрограмму, которая сравнивает два элемента массива и
возвращает значение, показывающее, как соотносятся их значения. Во время
поиска функция _lfind вызывает подпрограмму compare один или несколько раз,
передавая указатели на два элемента массива при каждом вызове. Подпрограмма
compare должна сравнивать элементы и возвращать либо отличное от нуля
Эта функция проверяет свои параметры. Если compare значение равно или
key number равно base NULL number NULL или ненулевое значение или width меньше
Требования
Подпрограмма Обязательный заголовок
_lfind <search.h>
Пример
C
// crt_lfind.c
#include <search.h>
#include <string.h>
#include <stdio.h>
int main( )
char **result;
if( result )
else
Output
Hello found
_lfind_s
bsearch
_lsearch
qsort
_lfind_s
Статья • 03.04.2023
Синтаксис
C
void *_lfind_s(
size_t size,
void * context
);
Параметры
key
Искомый объект.
base
number
size
compare
context
Условия ошибок
Комментарии
Функция _lfind_s выполняет линейный поиск значения key в массиве из number
элементов шириной size каждый. В отличие от bsearch_s этого, _lfind_s не
требуется сортировка массива. Аргумент base является указателем на начало
массива, в котором осуществляется поиск. Аргумент compare является указателем
на пользовательскую подпрограмму, которая сравнивает два элемента массива и
возвращает значение, показывающее, как соотносятся их значения. Во время
поиска функция _lfind_s вызывает подпрограмму compare один или несколько раз,
передавая указатель context и указатели на два элемента массива при каждом
вызове. Подпрограмма compare должна сравнивать элементы и возвращать либо
отличное от нуля значение (если элементы различаются), либо 0 (если элементы
идентичны).
Требования
Подпрограмма Обязательный заголовок
_lfind_s <search.h>
Пример
C++
// crt_lfind_s.cpp
#include <stdlib.h>
#include <stdio.h>
#include <search.h>
#include <process.h>
#include <locale.h>
#include <locale>
#include <windows.h>
// The sort order is dependent on the code page. Use 'chcp' at the
// the command prompt codepage must match the codepage used here:
#define CODEPAGE_850
#ifdef CODEPAGE_850
"weit" };
#endif
#ifdef CODEPAGE_1252
"weit" };
#endif
int compare( void *pvlocale, const void *str1, const void *str2)
s1, s1+strlen(s1),
s2, s2+strlen(s2) );
void find_it( char *key, char *array[], unsigned int num, locale &loc )
if( result )
else
int main( )
Output
weit found
bsearch_s
_lsearch_s
qsort_s
_lfind
lgamma , lgammaf , lgammal
Статья • 03.04.2023
Синтаксис
C
Параметры
x
Вычисляемое значение.
Возвращаемое значение
В случае успеха возвращается естественный логарифм абсолютного значения
гамма-функции x .
Проблема Возвращает
x = не число не число
x = ±0 +INFINITY
±INFINITY +INFINITY
Требования
Компонент Заголовок C Заголовок C++
Синтаксис
C
Возвращаемое значение
localeconv возвращает указатель на заполненный объект типа struct lconv.
Значения, содержащиеся в объекте, копируются из параметров языкового
стандарта в локальном хранилище потока и могут быть перезаписаны
последующими вызовами localeconv . Изменения, внесенные в значения этого
объекта, не изменяют параметры языкового стандарта. setlocale Вызовы со
значениями LC_ALL category , LC_MONETARY или LC_NUMERIC перезапись содержимого
структуры.
Комментарии
Функция localeconv получает подробные сведения о форматировании чисел для
текущего языкового стандарта. Эти сведения хранятся в структуре типа lconv .
Структура, определенная lconv в LOCALE. H содержит следующие элементы:
Поле Значение
decimal_point ,
Указатель на символ десятичной запятой для немонетарных
_W_decimal_point значений.
thousands_sep ,
Указатель на символ, разделяющий группы цифр слева от
_W_thousands_sep десятичной запятой для немонетарных значений.
int_curr_symbol ,
Указатель на международный символ валюты для текущего
_W_int_curr_symbol языкового стандарта. Первые три символа определяют
международный алфавитный символ валюты, как определено в
стандарте ISO 4217. Коды для представления валют и фондов.
Четвертый символ (непосредственно перед нуль-символом)
разделяет международный символ валюты и денежное значение.
currency_symbol ,
Указатель на символ локальной валюты для текущего языкового
_W_currency_symbol стандарта.
mon_decimal_point ,
Указатель на символ десятичной запятой для денежных величин.
_W_mon_decimal_point
mon_thousands_sep ,
Указатель на разделитель для групп цифр слева от десятичного
_W_mon_thousands_sep разряда в денежных количествах.
positive_sign ,
Строка, обозначающая знак для неотрицательных денежных
_W_positive_sign значений.
negative_sign ,
Строка, обозначающая знак для отрицательных денежных значений.
_W_negative_sign
Требования
Подпрограмма Обязательный заголовок
localeconv <locale.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
setlocale
Функции strcoll
Синтаксис
C
Параметры
sourceTime
Возвращаемое значение
Возвращает указатель на результирующую структуру или значение NULL , если дата,
переданная функции, удовлетворяет следующим условиям:
После 23:59:59 31-го декабря 3000 года в формате UTC (при использовании
функций _time64 и __time64_t ).
Поле Описание
tm_isdst Положительное значение, если летнее время действует; 0, если летнее время не
действует; отрицательное значение, если состояние летнего времени неизвестно.
Если задана переменная среды TZ , для реализации перехода на летнее время (DST)
в библиотеке времени выполнения C принимаются правила, подходящие для США.
Комментарии
Функция localtime преобразует время, хранящееся в виде time_t значения, и
сохраняет результат в структуре типа tm. Значение long типа sourceTime
представляет секунды, прошедшие с полуночи (00:00:00) 1-го января 1970 года в
формате UTC. Это значение часто получается из time функции.
7 Примечание
Эти функции проверяют свои параметры. Если sourceTime это пустой указатель или
sourceTime значение отрицательное, эти функции вызывают обработчик
Требования
Подпрограмма Обязательный Обязательный заголовок
заголовок C C++
Пример
C
// crt_localtime.cpp
#include <stdio.h>
#include <string.h>
#include <time.h>
struct tm *newtime;
__time64_t long_time;
newtime->tm_hour = 12;
char buff[30];
Output
asctime, _wasctime
_tzset
localtime_s , _localtime32_s ,
_localtime64_s
Статья • 03.04.2023
Синтаксис
C
errno_t localtime_s(
);
errno_t _localtime32_s(
);
errno_t _localtime64_s(
);
Параметры
tmDest
sourceTime
Возвращаемое значение
Нуль при успешном завершении. Возвращаемое значение — это код ошибки, если
произошел сбой. Коды ошибок определяются в Errno.h . Список этих ошибок см. в
разделе errno.
Условия ошибок
tmDest sourceTime Возвращаемое Значение Вызывает
значение в tmDest обработчик
недопустимого
параметра
Комментарии
Функция localtime_s преобразует время, хранящееся в time_t качестве значения, и
сохраняет результат в структуре типа tm. Значение time_t типа sourceTime
представляет секунды, прошедшие с полуночи (00:00:00) 1-го января 1970 года в
формате UTC. Это значение часто получается из time функции .
7 Примечание
Целевая среда должна попытаться определить, действует ли летнее время.
Поле Описание
tm_isdst Положительное значение, если действует летнее время; 0, если летнее время не
действует; отрицательное значение, если состояние летнего времени неизвестно.
Если задана переменная среды TZ , для реализации перехода на летнее время (DST)
в библиотеке времени выполнения C принимаются правила, подходящие для США.
Требования
Подпрограмма Обязательный Обязательный заголовок
заголовок C C++
Пример
C
// crt_localtime_s.c
#include <stdio.h>
#include <string.h>
#include <time.h>
struct tm newtime;
__time64_t long_time;
char timebuf[26];
errno_t err;
_time64( &long_time );
if (err)
exit(1);
newtime.tm_hour = 12;
if (err)
exit(1);
Output
asctime_s, _wasctime_s
_tzset
_lock_file
Статья • 03.04.2023
Синтаксис
C
Параметры
file
Дескриптор файла.
Комментарии
Функция _lock_file блокирует объект FILE , заданный с помощью file . Базовый
файл не заблокирован. _lock_file Используется для _unlock_file освобождения
блокировки файла. Вызовы _lock_file и _unlock_file должны совпадать в потоке.
Требования
Подпрограмма Обязательный заголовок
_lock_file <stdio.h>
Пример
C
// crt_lock_file.c
#include <stdio.h>
_lock_file( stdout );
_unlock_file( stdout );
int main()
HANDLE h[3];
Output
...
First
Second
First
Second
Third
Second
Third
Second
...
FSiercsotn
dF
iSrescto
nFdi
rSsetc
oFnidr
sSte
cFoinrds
tS
eFciornsdt
_creat, _wcreat
_open, _wopen
_unlock_file
locking
Статья • 03.04.2023
Синтаксис
C
int _locking(
int fd,
int mode,
long nbytes
);
Параметры
fd
Дескриптор файла.
mode
nbytes
Возвращаемое значение
Функция _locking возвращает 0 в случае успеха. Возвращаемое значение -1
указывает на сбой. В этом случае errno устанавливается одно из следующих
значений.
Значение Условие
errno
EDEADLOCK Нарушение блокировки. Возвращается, если _LK_LOCK указан флаг или _LK_RLCK
и файл не может быть заблокирован после 10 попыток.
Значение Условие
errno
Комментарии
Функция _locking блокирует или разблокирует байты nbytes файла, указанного
параметром fd . Блокировка байтов в файле предотвращает доступ других
процессов к этим байтам. Блокировка или разблокировка начинается с текущей
позиции указателя на файл и продолжается в течение следующих nbytes байтов.
Можно заблокировать байты в конце файла.
Locking.h.
Значение Действие
mode
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_locking.c
* some bytes before reading them, then unlocks them. Note that the
*/
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/locking.h>
#include <share.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
char buffer[40];
* support sharing.
*/
_S_IREAD | _S_IWRITE );
if( err != 0 )
exit( 1 );
long lseek_ret;
printf( "No one can change these bytes while I'm reading them\n" );
buffer[30] = '\0';
else
_close( fh );
_creat, _wcreat
_open, _wopen
log , logf , logl , log10 , log10f , log10l
Статья • 03.04.2023
Вычисляет логарифмы.
Синтаксис
C
Параметры
x
Возвращаемое значение
В log случае успешного выполнения функции возвращают естественный логарифм
(базовый e x ). Функции log10 возвращают логарифм base-10. Если x значение
отрицательное, эти функции по умолчанию возвращают неопределенное значение
( IND ). Если x имеет значение 0, они возвращают бесконечность ( INF ).
±0 ZERODIVIDE _SING
Комментарии
C++ позволяет перегружать, поэтому можно вызывать перегрузки log и log10 ,
которые принимают и возвращают float значения или long double . В программе
на языке C, если вы не используете <tgmath.h> макрос для вызова этой функции и
log10 log всегда принимаете и возвращаете double .
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_log.c
#include <math.h>
#include <stdio.h>
double x = 9000.0;
double y;
y = log( x );
y = log10( x );
Output
C++
// logbase.cpp
#include <math.h>
#include <stdio.h>
int main()
double x = 65536;
double result;
Output
_matherr
_CIlog
_CIlog10\
log1p , log1pf , log1pl
Статья • 03.04.2023
Синтаксис
C
Параметры
x
Возвращаемое значение
В случае успешного выполнения возвращает естественный (base-e) журнал ( x + 1).
+INF +INF
errno имеет значение ERANGE, если x = –1. Если errno задано EDOM x < значение
-1.
Комментарии
Функции log1p могут быть более точными, чем при использовании log(x + 1) ,
когда x значение близко к 0.
Требования
Компонент Заголовок C Заголовок C++
Синтаксис
C
double log2(
double x
);
float log2(
float x
); //C++ only
long double x
); //C++ only
float log2f(
float x
);
long double x
);
Параметры
x
Возвращаемое значение
При успешном выполнении функции возвращают журнал base-2 для x .
Проблема Возвращает
Проблема Возвращает
x< 0 не число
x = ±0 -INFINITY
x =1 +0
+INFINITY +INFINITY
Не число Не число
Комментарии
Если x является целым числом, эта функция по сути возвращает отсчитываемый от
нуля индекс наиболее значительного 1 бита x .
Требования
Компонент Заголовок C Заголовок C++
Синтаксис
C
double logb(
double x
);
float logb(
float x
); // C++ only
long double x
); // C++ only
float logbf(
float x
);
long double x
);
double _logb(
double x
);
float _logbf(
float x
);
Параметры
x
Возвращаемое значение
Функция logb возвращает значение экспоненты x без смещения в виде целого
числа со знаком, представленного как значение с плавающей запятой.
Комментарии
Функции logb извлекают экспоненциальное значение аргумента с плавающей
запятой x так, как если бы x было представлено с бесконечным диапазоном. Если
аргумент x денормализован, он обрабатывается как нормализованный.
±0 ZERODIVIDE _SING
Требования
Подпрограмма Обязательный заголовок
_logb <float.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Синтаксис
C
void longjmp(
jmp_buf env,
int value
);
Параметры
env
value
Комментарии
Функция longjmp восстанавливает среду стека и языковой стандарт выполнения,
которые ранее были сохранены в параметре env функцией setjmp . setjmp и
longjmp предоставьте способ выполнения нелокального goto ; они обычно
используются для передачи управления выполнением в код обработки ошибок
или восстановления в ранее вызываемой подпрограмме без использования
обычных соглашений о вызове и возврате.
7 Примечание
Требования
Подпрограмма Обязательный заголовок
longjmp <setjmp.h>
Пример
См. пример для _fpreset.
Синтаксис
C
double x
);
float x
); //C++ only
long double x
); //C++ only
float x
);
long double x
);
double x
);
float x
); //C++ only
long double x
); //C++ only
float x
);
long double x
);
Параметры
x
Округляемое значение.
Возвращаемое значение
В случае успешного выполнения возвращает округленное целочисленное значение
x.
Проблема Возвращает
x = ±INF
x = не число
Комментарии
Так как C++ допускает перегрузку, можно вызывать перегрузки lrint и llrint ,
которые принимают float типы и long double . В программе C, если вы не
используете макрос tgmath.h> для вызова этой функции и lrint llrint всегда
принимаете double .<
Требования
Компонент Заголовок C Заголовок C++
Синтаксис
C
long lround(
double x
);
long lround(
float x
); // C++ only
long lround(
long double x
); // C++ only
long lroundf(
float x
);
long lroundl(
long double x
);
double x
);
float x
); // C++ only
long double x
); // C++ only
float x
);
long double x
);
Параметры
x
Комментарии
Так как C++ допускает перегрузку, можно вызывать lround или llround
перегрузки, которые принимают и возвращают float значения и long double . В
программе C, если вы не используете макрос tgmath.h> для вызова этой функции и
lround llround всегда принимаете и возвращаете double .<
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_lround.c
#include <math.h>
#include <stdio.h>
double x = 2.499999;
float y = 2.8f;
Output
lround(2.499999) is 2
lround(-2.499999) is -2
lroundf(2.800000) is 3
lroundf(-2.800000) is -3
lroundl(3.500000) is 4
lroundl(-3.500000) is -4
fmod, fmodf
Синтаксис
C
Параметры
value
shift
Возвращаемое значение
Обе функции возвращают значение с циклическим сдвигом. Ошибка не
возвращается.
Комментарии
Функции _lrotl _lrotr поворачиваются value по битам shift . _lrotl
поворачивает значение влево, в сторону более значимых битов. _lrotr
поворачивает значение вправо, в сторону менее значимых битов. Обе функции
обтекают биты, поворачиваемые от одного конца value к другому.
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_lrot.c
#include <stdlib.h>
#include <stdio.h>
Output
Синтаксис
C
void *_lsearch(
void *base,
);
Параметры
key
Искомый объект.
base
number
Число элементов.
width
compare
Возвращаемое значение
Если ключ найден, функция _lsearch возвращает указатель на элемент массива
base , соответствующий key . Если ключ не найден, _lsearch возвращает указатель
на добавленный элемент в конце массива.
Комментарии
Функция _lsearch выполняет линейный поиск значения key в массиве из number
элементов шириной width каждый. В отличие от bsearch не _lsearch требуется
сортировка массива. Если key объект не найден, _lsearch добавляет его в конец
массива и увеличивает number .
Эта функция проверяет свои параметры. Если compare , key или number имеет
значение NULL , или , если base имеет значение NULL и number не равно нулю, width
вызывается обработчик недопустимых параметров, как описано в разделе
Проверка параметров. Если выполнение может быть продолжено, параметр errno
устанавливается в значение EINVAL , и функция возвращает значение NULL .
Требования
Подпрограмма Обязательный заголовок
_lsearch <search.h>
Пример
C
// crt_lsearch.c
#include <search.h>
#include <string.h>
#include <stdio.h>
int main(void)
int n = 3;
char **result;
printf( "\n" );
printf( "\n" );
Output
bsearch
_lfind
_lsearch_s
_lsearch_s
Статья • 03.04.2023
Синтаксис
C
void *_lsearch_s(
void *base,
size_t size,
void * context
);
Параметры
key
Искомый объект.
base
number
Число элементов.
size
compare
context
Условия ошибок
Комментарии
Функция _lsearch_s выполняет линейный поиск значения key в массиве из number
элементов шириной size каждый. В отличие от bsearch_s не _lsearch_s требуется
сортировка массива. Если key не найден, добавляет _lsearch_s его в конец
массива и увеличивается number .
Требования
Подпрограмма Обязательный заголовок
_lsearch_s <search.h>
bsearch_s
_lfind_s
_lsearch
lseek
Статья • 03.04.2023
Синтаксис
C
long _lseek(
int fd,
long offset,
int origin
);
__int64 _lseeki64(
int fd,
__int64 offset,
int origin
);
Параметры
fd
offset
origin
Первоначальная позиция.
Возвращаемое значение
Функция _lseek возвращает смещение новой позиции в байтах относительно
начала файла. Функция _lseeki64 возвращает смещение в виде 64-разрядного
целого числа. Функция возвращает -1L, чтобы указать ошибку. Если передан
недопустимый параметр, например недопустимый дескриптор файла, или
значение origin недопустимого или позиция, указанная offset перед началом
файла, вызывается обработчик недопустимых параметров, как описано в разделе
"Проверка параметров". Если выполнение может быть продолжено, эти функции
устанавливают параметр errno в значение EBADF и возвращают –1L. Если
устройство неспособно выполнять поиск (например, терминалы и принтеры),
возвращаемое значение не определено.
Комментарии
Функция _lseek перемещает указатель файла, связанный с fd новым
расположением, offset из байтов origin . Следующая операция в файле
выполняется в новом местоположении. Аргумент origin должен быть одной из
следующих констант, определенных в Stdio.h.
Требования
Подпрограмма Обязательный заголовок
_lseek <io.h>
_lseeki64 <io.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_lseek.c
*/
#include <io.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <share.h>
int fh;
char buffer[10];
else
else
else
_close( fh );
Line one.
Line two.
Line three.
Line four.
Line five.
Вывод
Output
См. также
Низкоуровневый ввод-вывод
fseek, _fseeki64
_tell, _telli64
_makepath , _wmakepath
Статья • 03.04.2023
Синтаксис
C
void _makepath(
char *path,
);
void _wmakepath(
wchar_t *path,
);
Параметры
path
drive
dir
fname
Содержит базовое имя файла без расширений. Если параметр fname имеет
значение NULL или указывает на пустую строку, имя файла не вставляется в
составную строку path .
ext
Комментарии
Функция _makepath создает строку составного пути из отдельных компонентов,
сохраняя результат в параметре path . Путь path может включать букву диска, путь
к каталогу, имя файла и расширение имени файла. _wmakepath — это двухбайтовая
версия _makepath ; аргументы для _wmakepath представляют собой двухбайтовые
строки. Поведение _wmakepath и _makepath идентично в противном случае.
Требования
Подпрограмма Обязательный заголовок
_makepath <stdlib.h>
Пример
C
// crt_makepath.c
#include <stdlib.h>
#include <stdio.h>
char path_buffer[_MAX_PATH];
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
Output
Drive: c:
Dir: \sample\crt\
Filename: makepath
Ext: .c
_fullpath, _wfullpath
_splitpath, _wsplitpath
_makepath_s, _wmakepath_s
_makepath_s , _wmakepath_s
Статья • 03.04.2023
Синтаксис
C
errno_t _makepath_s(
char *path,
size_t sizeInBytes,
);
errno_t _wmakepath_s(
wchar_t *path,
size_t sizeInWords,
);
errno_t _makepath_s(
char (&path)[size],
); // C++ only
errno_t _wmakepath_s(
wchar_t (&path)[size],
); // C++ only
Параметры
path
sizeInWords
sizeInBytes
drive
dir
fname
Содержит базовое имя файла без расширений. Если параметр fname имеет
значение NULL или указывает на пустую строку, имя файла не вставляется в
составную строку path .
ext
Возвращаемое значение
Возвращает нуль в случае успеха или код ошибки в случае неудачи.
Условия ошибок
path sizeInWords / sizeInBytes Возвращает Содержимое path
Комментарии
Функция _makepath_s создает строку составного пути из отдельных компонентов,
сохраняя результат в параметре path . Путь path может включать букву диска, путь
к каталогу, имя файла и расширение имени файла. _wmakepath_s — это
двухбайтовая версия _makepath_s ; аргументы для _wmakepath_s представляют собой
двухбайтовые строки. Поведение _wmakepath_s и _makepath_s идентично в
противном случае.
Требования
Подпрограмма Обязательный заголовок
_makepath_s <stdlib.h>
Пример
C
// crt_makepath_s.c
#include <stdlib.h>
#include <stdio.h>
char path_buffer[_MAX_PATH];
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
errno_t err;
"crt_makepath_s", "c" );
if (err != 0)
exit(1);
if (err != 0)
exit(1);
Output
Dir: \sample\crt\
Filename: crt_makepath_s
Ext: .c
_fullpath, _wfullpath
_splitpath_s, _wsplitpath_s
_makepath, _wmakepath
malloc
Статья • 03.04.2023
Синтаксис
C
void *malloc(
size_t size
);
Параметры
size
Возвращаемое значение
malloc возвращает пустой указатель на выделенное пространство или NULL , если
доступно недостаточно памяти. Чтобы вернуть указатель на тип, отличный от void ,
используйте приведение типов для возвращаемого значения. Дисковое
пространство, на которое указывает возвращаемое значение, хорошо
выравнивается для хранения объектов любого типа, требования к выравниванию
которого меньше или равны базовому выравниванию. (В Visual C++ основное
выравнивание — это выравнивание, необходимое double для , или 8 байт. В коде,
предназначенном для 64-разрядных платформ, это 16 байт.) Используйте
_aligned_malloc для выделения хранилища для объектов с большими требованиями
к выравниванию, например для типов __m128 SSE и __m256 , и типов, объявленных с
помощью __declspec(align( n )) , где n больше 8. Если значение size равно 0,
функция malloc выделяет элемент нулевой длины в куче и возвращает допустимый
указатель на этот элемент. Всегда проверяйте возвращаемое функцией malloc
значение, даже если объем запрошенной памяти мал.
Комментарии
Функция malloc выделяет блок памяти размером не менее size байтов. Размер
блока может превышать size байтов из-за дополнительных затрат места на
хранение информации о выравнивании и обслуживании.
Функция malloc задает для параметра errno в значение ENOMEM , если выделение
памяти завершается сбоем или количество запрошенной памяти превышает
_HEAP_MAXREQ . Сведения об этом и других кодах ошибок см. в разделеerrno ,
calloc
Функции _exec
fgetc
_fgetchar
fgets
fprintf
fputc
_fputchar
fputs
fread
fscanf
fseek
fsetpos
_fullpath
fwrite
getc
getchar
_getcwd
_getdcwd
gets
_getw
_popen
printf
putc
putchar
_putenv
puts
_putw
scanf
_searchenv
setvbuf
Функции _spawn
_strdup
system
_tempnam
ungetc
vfprintf
vprintf
Функция C++ _set_new_mode задает новый режим обработчика для malloc . Новый
режим обработки указывает, должна ли функция malloc при сбое вызывать новую
подпрограмму обработчика, заданную функцией _set_new_handler. По умолчанию
malloc не вызывает новую подпрограмму обработчика при сбое выделения
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_malloc.c
#include <stdio.h>
#include <malloc.h>
char *string;
else
free( string );
Output
Memory freed
calloc
free
realloc
_aligned_malloc
_malloc_dbg
Статья • 03.04.2023
Синтаксис
C
void *_malloc_dbg(
size_t size,
int blockType,
int linenumber
);
Параметры
size
blockType
filename
linenumber
Возвращаемое значение
При успешном завершении эта функция возвращает указатель на пользовательную
часть выделенного блока памяти, вызывает новую функцию обработчика или
возвращает NULL . Полное описание поведения возвращения см. в следующем
разделе "Примечания". Дополнительные сведения об использовании новой
функции обработчика см. в malloc этой функции.
Комментарии
_malloc_dbg — отладочная версия malloc функции. Если _DEBUG параметр не
пользовательской части блока для тестирования утечек, параметр типа блока для
отслеживания конкретных типов выделения, а также сведения о
filename / linenumber для определения источника запросов на выделение.
_malloc_dbg задает для errno значение ENOMEM в случае сбоя выделения памяти или
Требования
Подпрограмма Обязательный заголовок
_malloc_dbg <crtdbg.h>
Пример
Пример использования _malloc_dbg см. в разделе crt_dbg1 .
malloc
_calloc_dbg
_malloca
Статья • 03.04.2023
Синтаксис
C
void *_malloca(
size_t size
);
Параметры
size
Возвращаемое значение
Подпрограмма _malloca возвращает void указатель на выделенное пространство,
которое подходит для хранения любого типа объекта. Если значение size равно 0,
_malloca выделяет элемент нулевой длины и возвращает допустимый указатель на
этот элемент.
Комментарии
_malloca выделяет size байтов из стека программы или кучи, если запрос
) Важно!
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
_malloca <malloc.h>
Пример: _malloca
C
// crt_malloca_simple.c
#include <stdio.h>
#include <malloc.h>
void Fn()
_freea( buf );
int main()
Fn();
// crt_malloca_exception.c
#include <windows.h>
#include <stdio.h>
#include <malloc.h>
int main()
int size;
int numberRead = 0;
int errcode = 0;
void *p = NULL;
while (numberRead == 0)
__try
if (size > 0)
p = _malloca( size );
else
_freea( p );
printf_s("_malloca failed!\n");
errcode = _resetstkoflw();
if (errcode)
_exit(1);
};
Входные данные
Input
1000
calloc
malloc
realloc
_resetstkoflw
_matherr
Статья • 03.04.2023
Синтаксис
C
Параметры
except
Возвращаемое значение
_matherr возвращает значение 0, указывающее на ошибку, или ненулевое
значение, указывающее на успешное выполнение:
Комментарии
Функция _matherr обрабатывает ошибки, созданные функциями с плавающей
запятой математической библиотеки. Эти функции вызываются _matherr при
обнаружении ошибки. На это взаимодействие не влияет режим с плавающей
запятой компилятора или управляющее слово с плавающей запятой. Так как
_matherr является функцией библиотеки, встроенные математические функции не
struct _exception
};
Макрос Описание
_UNDERFLOW Результат слишком мал для представления. (Это условие в настоящее время не
поддерживается.)
Требования
Подпрограмма Обязательный заголовок
_matherr <math.h>
Пример
C
/* crt_matherr.c
* functions.
*/
#include <math.h>
#include <string.h>
#include <stdio.h>
int main()
*/
*/
if (except->type == _DOMAIN)
if (strcmp(except->name, "log") == 0)
except->retval = log(-(except->arg1));
"error\n", except->name);
return 1;
except->retval = log10(-(except->arg1));
"error\n", except->name);
return 1;
printf("Normal: ");
return 0; /* Else use the default actions */
Output
Синтаксис
C
Параметры
a, b
Возвращаемое значение
Функция __max возвращает больший из двух своих аргументов.
Комментарии
Макрос __max сравнивает два значения и возвращает значение большего.
Аргументы могут быть любого числового типа данных со знаком или без знака.
Оба аргумента и возвращаемое значение должны принадлежать к одному типу
данных.
Requirements (Требования)
Макрос Обязательный заголовок
__max <stdlib.h>
Пример
Дополнительные сведения см. в примере для __min.
) Важно!
Синтаксис
C
);
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Если функция _mbbtombc успешно преобразовывает c , она возвращает
многобайтовый символ; в противном случае она возвращает c .
Комментарии
Функция _mbbtombc преобразовывает указанный однобайтовый многобайтовый
символ в соответствующий двухбайтовый многобайтовый символ. Символы
должны находиться в диапазоне 0x20 — 0x7E или 0xA1 — 0xDF для
преобразования.
В более ранних версиях функция _mbbtombc называлась hantozen . Для нового кода
используйте _mbbtombc .
Требования
Подпрограмма Обязательный заголовок
_mbbtombc <mbstring.h>
_mbbtombc_l <mbstring.h>
См. также:
Преобразование данных
_mbctombb, _mbctombb_l
_mbbtype , _mbbtype_l
Статья • 03.04.2023
) Важно!
Синтаксис
C
int _mbbtype(
unsigned char c,
int type
);
int _mbbtype_l(
unsigned char c,
int type,
_locale_t locale
);
Параметры
c
Проверяемый символ.
type
locale
Возвращаемое значение
_mbbtype возвращает тип байта в строке. Это решение контекстно зависимо — на
Любое Допустимый _MBC_SINGLE (0) Один байт (0x20 — 0x7E, 0xA1 — 0xDF)
значение, одиночный байт
кроме 1 или старший байт
1 Допустимый _MBC_ILLEGAL
Недопустимый символ (любое
младший байт значение, кроме 0x20 — 0x7E, 0xA1 —
(-1) 0xDF, 0x81 — 0x9F, 0xE0 — 0xFC
Комментарии
Функция _mbbtype определяет тип байта в многобайтовом символе. Если параметр
type имеет любым значение, кроме 1, _mbbtype проверяет допустимый одиночный
байт или старший байт многобайтового символа. Если значение параметра type
равно 1, _mbbtype проверяет допустимый младший байт многобайтового символа.
В более ранних версиях функция _mbbtype называлась chkctype . Для нового кода
используйте вместо нее _mbbtype .
) Важно!
Синтаксис
C
void _mbccpy(
);
void _mbccpy_l(
_locale_t locale
);
Параметры
dest
src
locale
Комментарии
Функция _mbccpy копирует один многобайтовый символ из src в dest .
Эта функция проверяет свои параметры. Если _mbccpy передается пустой указатель
или dest src вызывается обработчик недопустимых параметров, как описано в
разделе "Проверка параметров". Если выполнение может быть продолжено,
параметр errno устанавливается в значение EINVAL .
Требования
Подпрограмма Обязательный заголовок
_mbccpy <mbctype.h>
_mbccpy_l <mbctype.h>
) Важно!
Синтаксис
C
errno_t _mbccpy_s(
int * pCopied,
);
errno_t _mbccpy_s_l(
int * pCopied,
_locale_t locale
);
errno_t _mbccpy_s(
int * pCopied,
); // C++ only
errno_t _mbccpy_s_l(
int * pCopied,
_locale_t locale
); // C++ only
Параметры
dest
buffSizeInBytes
pCopied
src
locale
Возвращаемое значение
Возвращает нуль в случае успеха или код ошибки в случае неудачи. Если src или
dest есть NULL или больше buffSizeinBytes байтов копируются dest в, вызывается
Комментарии
Функция _mbccpy_s копирует один многобайтовый символ из src в dest . Если src
не указывает на ведущий байт многобайтового символа, определяемый неявным
вызовом _ismbblead, то копируется один байт, src указывающий на этот символ.
Если src указывает на байт свинца, но следующий байт равен 0 и, следовательно,
является недопустимым, то 0 копируется dest в , errno имеет значение EILSEQ , а
функция возвращает . EILSEQ
_mbccpy_s не добавляет признак конца NULL; однако, если src указывает на нуль-
0 0 1 0
Требования
Подпрограмма Обязательный заголовок
_mbccpy_s <mbstring.h>
Подпрограмма Обязательный заголовок
_mbccpy_s_l <mbstring.h>
) Важно!
Синтаксис
C
unsigned int c
);
unsigned int c,
_locale_t locale
);
unsigned int c
);
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Комментарии
Функция _mbcjistojms преобразует символ стандарта Japan Industry Standard (JIS) в
символ Microsoft Kanji (Shift JIS). Символ преобразуется, только если байты свинца
и следа находятся в диапазоне 0x21 — 0x7E. Если старший или младший байт лежит
вне этого диапазона, errno получает значение EILSEQ . Дополнительные сведения
об этом и других кодах ошибок см. в разделе errno, и _doserrno_sys_errlist_sys_nerr.
Требования
Подпрограмма Обязательный заголовок
_mbcjistojms <mbstring.h>
_mbcjistojms_l <mbstring.h>
_mbcjmstojis <mbstring.h>
_mbcjmstojis_l <mbstring.h>
См. также:
Преобразование данных
_ismbb Процедуры
_mbclen , mblen , _mblen_l , _mbclen_l
Статья • 03.04.2023
) Важно!
Синтаксис
C
size_t _mbclen(
);
size_t _mbclen_l(
_locale_t locale
);
int mblen(
size_t count
);
int _mblen_l(
size_t count,
_locale_t locale
);
Параметры
c
Многобайтовый символ.
mbstr
count
Возвращаемое значение
_mbclen и _mbclen_l возвращает значение 1 или 2 в соответствии с длиной
многобайтового символа c . Функции всегда возвращают значение 1 для UTF-8
независимо от того, является ли c многобайтовый. Не возвращается ошибка для
_mbclen .
Комментарии
Функция _mbclen возвращает длину многобайтового символа c в байтах. Если c не
указывает на ведущий байт многобайтового символа (как определено неявным
вызовом _ismbblead, результат _mbclen будет непредсказуемым.
Требования
Подпрограмма Обязательный заголовок
_mbclen <mbstring.h>
mblen <stdlib.h>
_mblen_l <stdlib.h>
Пример
C
// crt_mblen.c
*/
#include <stdlib.h>
#include <stdio.h>
int i;
wchar_t wc = L'a';
pmbc = NULL;
Output
Characters converted: 1
Multibyte character: 61
Локаль
_mbccpy, _mbccpy_l
mbrlen
) Важно!
Синтаксис
C
unsigned int c
);
unsigned int c,
_locale_t locale
);
unsigned int c
);
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих функций возвращает преобразованный символ c , если это
возможно. В противном случае символ c возвращается без изменений.
Комментарии
Функции _mbctohira и _mbctokata проверяют символ c и, если это возможно,
выполняют одно из следующих преобразований.
Подпрограммы Преобразования
Требования
Подпрограмма Обязательный заголовок
_mbctohira <mbstring.h>
_mbctohira_l <mbstring.h>
_mbctokata <mbstring.h>
_mbctokata_l <mbstring.h>
_mbctombb, _mbctombb_l
_mbctolower , _mbctolower_l ,
_mbctoupper , _mbctoupper_l
Статья • 03.04.2023
) Важно!
Синтаксис
C
unsigned int c
);
unsigned int c,
_locale_t locale
);
unsigned int c
);
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих функций возвращает преобразованный символ c , если это
возможно. В противном случае символ c возвращается без изменений.
Комментарии
Функции проверяют символ c и, если это возможно, выполняют одно из
следующих преобразований.
Подпрограммы Преобразования
Требования
Подпрограммы Обязательный заголовок
См. также:
Преобразование данных
_mbbtombc, _mbbtombc_l
_mbctombb, _mbctombb_l
_mbctombb , _mbctombb_l
Статья • 03.04.2023
) Важно!
Синтаксис
C
);
unsigned int c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
В случае успешного _mbctombb выполнения и _mbctombb_l возвращает
однобайтовый символ, соответствующий ; в c противном случае возвращается c .
Комментарии
Функции _mbctombb и _mbctombb_l преобразуют заданный многобайтовый символ в
соответствующий однобайтовый многобайтовый символ. Символы должны
соответствовать однобайтовой символам в диапазоне 0x20 ( 0x7E или 0xA1 - 0xDF
для преобразования.
Требования
Подпрограмма Обязательный заголовок
_mbctombb <mbstring.h>
_mbctombb_l <mbstring.h>
См. также:
Преобразование данных
_mbbtombc, _mbbtombc_l
Синтаксис
C
size_t mbrlen(
size_t count,
mbstate_t * mbstate
);
Параметры
str
count
mbstate
Возвращаемое значение
Одно из следующих значений:
Значение Описание
Комментарии
Функция mbrlen проверяет не более count байт, начиная с байта, на который
указывает параметр str , для определения числа байтов, необходимых для
составления следующего многобайтового символа, включая любые
последовательности сдвигов. Это эквивалентно вызову mbrtowc(NULL, str, count,
&mbstate) , где mbstate является либо предоставленным mbstate_t пользователем
объектом, либо статическим внутренним объектом, предоставляемым
библиотекой.
Требования
Подпрограмма Обязательный заголовок
mbrlen <wchar.h>
Пример
В этом примере показано, как интерпретация многобайтовых символов зависит от
текущей кодовой страницы, и демонстрируется возможность продолжения
выполнения функции mbrlen .
// crt_mbrlen.c
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <locale.h>
#include <wchar.h>
size_t charLen = 0;
size_t charCount = 0;
charLen != (size_t)-1)
charCount++;
return (charCount);
int cp;
size_t charCount = 0;
cp = _getmbcp();
charCount = Example(pSample);
printf("\nCode page: %d\n%s\nCharacter count: %d\n",
cp, pSample, charCount);
cp = _getmbcp();
charCount = Example(pSample);
printf("\nCode page: %d\n%s\nCharacter count: %d\n",
cp, pSample, charCount);
Output
Code page: 0
Character count: 29
Character count: 25
Локаль
mbrtoc16 , mbrtoc32
Статья • 03.04.2023
Синтаксис
C
size_t mbrtoc16(
char16_t* destination,
size_t max_bytes,
mbstate_t* state
);
size_t mbrtoc32(
char32_t* destination,
size_t max_bytes,
mbstate_t* state
);
Параметры
destination
source
max_bytes
Возвращаемое значение
В случае успешного выполнения возвращает значение, соответствующее первому
из приведенных ниже условий, с учетом текущего значения state .
Значение Условие
Если source значение равно NULL, эти функции возвращают эквивалент вызова,
выполненного с использованием аргументов NULL for destination , "" (пустая,
строка, завершающаяся null) для source и 1 для max_bytes . Значения, передаваемые
в параметрах destination и max_bytes , игнорируются.
Требования
Компонент Заголовок C Заголовок C++
См. также:
Преобразование данных
Локаль
c16rtomb, c32rtomb
mbrtowc
mbsrtowcs
mbsrtowcs_s
mbrtowc
Статья • 03.04.2023
Синтаксис
C
size_t mbrtowc(
wchar_t *wchar,
size_t count,
mbstate_t *mbstate
);
Параметры
wchar
mbchar
count
mbstate
Возвращаемое значение
Принимает одно из следующих значений:
(size_t) (-1) Произошла ошибка кодирования. Следующие count или меньше байтов
не способствуют созданию полного и допустимого многобайтового символа. В
этом случае значение errno будет EILSEQ, а состояние сдвига преобразования в
mbstate будет не определено.
Комментарии
Если параметр mbchar является пустым указателем, функция эквивалентна вызову:
Пример
Преобразует многобайтовый символ в эквивалентный расширенный символ.
C++
// crt_mbrtowc.cpp
#include <stdio.h>
#include <mbctype.h>
#include <string.h>
#include <locale.h>
#include <wchar.h>
size_t nConvResult,
nmbLen = 0,
nwcLen = 0;
char* szLocal;
if (!szLocal)
return 1;
if (_setmbcp(_MB_CP_SBCS) == -1)
return 1;
//
switch (nConvResult)
case 0:
{ // done
printf(szIn);
wprintf(wcOut);
printf("\n");
mbCur = mbEnd;
break;
case -1:
{ // encoding error
mbCur = mbEnd;
break;
case -2:
{ // incomplete character
if (!mbsinit(&state))
++nmbLen;
++mbCur;
break;
default:
++nmbLen;
++nwcLen;
++wcCur;
++mbCur;
break;
return 0;
Conversion succeeded!
WC String: AaBbCcÜïα∩≡xXyYzZ
Требования
Подпрограмма Обязательный заголовок
mbrtowc <wchar.h>
См. также:
Преобразование данных
Локаль
) Важно!
Синтаксис
C
int _mbsbtype(
size_t count
);
int _mbsbtype_l(
size_t count,
_locale_t locale
);
Параметры
mbstr
count
locale
Возвращаемое значение
_mbsbtype и _mbsbtype_l возвращает целочисленное значение, указывающее
_MBC_ILLEGAL NULL строка, недопустимый символ или пустой байт, найденный до байта
(-1) со смещением count в mbstr .
Комментарии
Функция _mbsbtype определяет тип байта в строке многобайтовых символов. Эта
функция проверяет только байт со смещением count в mbstr , пропуская
недопустимые символы перед указанным байтом.
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
Синтаксис
C
int mbsinit(
const mbstate_t* ps
);
Параметры
ps
Возвращаемое значение
Ненулевое значение, если ps оно находится NULL или не находится в середине
преобразования.
Комментарии
При использовании одной из функций ANSI, принимающей mbstate_t указатель,
передайте адрес, mbstate_t который будет возвращать сведения о том, был ли
преобразован последний байт в буфере.
Пример
C++
// crt_mbsinit.cpp
#include <stdio.h>
#include <mbctype.h>
#include <string.h>
#include <locale.h>
#include <cwchar>
#include <xlocinfo.h>
if (_setmbcp(_MB_CP_LOCALE) != -1)
switch (nConvResult)
case 0:
{ // done
printf(szIn);
wprintf(wcOut);
printf("\n");
mbCur = mbEnd;
break;
case -1:
{ // encoding error
printf("ERROR: The call to mbrtowc has detected an encoding
error.\n");
mbCur = mbEnd;
break;
case -2:
{ // incomplete character
if (!mbsinit(&state))
++nmbLen;
++mbCur;
break;
default:
++nmbLen;
++nwcLen;
++wcCur;
++mbCur;
break;
else
return 0;
Conversion succeeded!
MB String: AaBbCcxXyYzZ
WC String: AaBbCcxXyYzZ
) Важно!
Синтаксис
C
size_t count
);
size_t count,
_locale_t locale
);
size_t count
); // C++ only
size_t count,
_locale_t locale
); // C++ only
Параметры
dest
src
count
locale
Возвращаемое значение
Функция _mbsnbcat возвращает указатель на целевую строку символов. Нет
зарезервированных возвращаемых значений для указания ошибки.
Комментарии
Функция _mbsnbcat добавляет не более count первых байтов строки src в строку
dest . Если байт непосредственно перед нуль-символом в строке dest является
старшим байтом, он перезаписывается начальным байтом строки src . В
противном случае начальный байт строки src перезаписывает завершающий
нуль-символ строки dest . Если байт NULL встречается в строке src до того как
будет добавлено count байтов, функция _mbsnbcat добавляет все байты из строки
src вплоть до нуль-символа. Если значение count больше длины строки src ,
Если dest или src нет NULL , функция создаст ошибку недопустимого параметра,
как описано в разделе "Проверка параметров". Если ошибка обработана, функция
возвращает EINVAL и задает для параметра errno значение EINVAL .
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые
и безопасные аналоги этих функций. Дополнительные сведения см. в разделе
"Безопасные перегрузки шаблонов".
Требования
Подпрограмма Обязательный заголовок
_mbsnbcat <mbstring.h>
_mbsnbcat_l <mbstring.h>
_mbsnbcmp, _mbsnbcmp_l
_mbsnbcpy, _mbsnbcpy_l
_mbsnbicmp, _mbsnbicmp_l
_mbsnbset, _mbsnbset_l
_mbsnbcat_s, _mbsnbcat_s_l
_mbsnbcat_s , _mbsnbcat_s_l
Статья • 03.04.2023
) Важно!
Синтаксис
C
errno_t _mbsnbcat_s(
size_t count
);
errno_t _mbsnbcat_s_l(
size_t count,
_locale_t locale
);
errno_t _mbsnbcat_s(
size_t count
); // C++ only
errno_t _mbsnbcat_s_l(
size_t count,
_locale_t locale
); // C++ only
Параметры
dest
sizeInBytes
src
count
locale
Возвращаемое значение
Ноль в случае успешного выполнения; в противном случае — код ошибки.
Условия ошибок
Комментарии
Функция _mbsnbcat_s добавляет в строку dest не более count первых байт строки
src . Если байт, непосредственно предшествующий символу NULL в dest , является
Требования
Подпрограмма Обязательный заголовок
_mbsnbcat_s <mbstring.h>
Подпрограмма Обязательный заголовок
_mbsnbcat_s_l <mbstring.h>
_mbsnbcmp, _mbsnbcmp_l
_mbsnbcpy, _mbsnbcpy_l
_mbsnbcpy_s, _mbsnbcpy_s_l
_mbsnbset, _mbsnbset_l
) Важно!
Синтаксис
C
int _mbsnbcmp(
size_t count
);
int _mbsnbcmp_l(
size_t count,
_locale_t locale
);
Параметры
string1 , string2
count
locale
Возвращаемое значение
Возвращаемое значение отражает порядковую взаимосвязь подстрок string1 и
string2 .
Комментарии
Функции _mbsnbcmp сравнивают не более чем count первых байт в string1 и
string2 и возвращают значение, указывающее отношение между подстроками.
Если или string1 string2 является пустым указателем, эти функции вызывают
обработчик недопустимых параметров, как описано в разделе Проверка
параметров. Если выполнение разрешено для продолжения, функции возвращают
_NLSCMPERROR , а errno для задано значение EINVAL .
Требования
Подпрограмма Обязательный заголовок
_mbsnbcmp <mbstring.h>
_mbsnbcmp_l <mbstring.h>
Пример
C
// crt_mbsnbcmp.c
#include <mbstring.h>
#include <stdio.h>
char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown fox jumps over the lazy dog";
char tmp[20];
int result;
else
else
Выходные данные
Output
Compare strings:
См. также
Манипуляция со строками
_mbsnbcat, _mbsnbcat_l
_mbsnbicmp, _mbsnbicmp_l
Локаль
) Важно!
Синтаксис
C
int _mbsnbcoll(
size_t count
);
int _mbsnbcoll_l(
size_t count,
_locale_t locale
);
int _mbsnbicoll(
size_t count
);
int _mbsnbicoll_l(
size_t count,
_locale_t locale
);
Параметры
string1 , string2
count
locale
Возвращаемое значение
Возвращаемое значение отражает взаимосвязь подстрок string1 и string2 .
Комментарии
Каждая из этих функций сравнивает максимум count первых байтов в string1 и
string2 , после чего возвращает значение, указывающее на отношение между
подстроками string1 и string2 . Если последний байт в подстроке string1 или
string2 является ведущим байтом, он не включается в сравнение; эти функции
сравнивают только полные символы в подстроках. _mbsnbicoll — не
чувствительная к регистру версия _mbsnbcoll . Аналогично функциям _mbsnbcmp и
_mbsnbicmp, функции _mbsnbcoll и _mbsnbicoll сравнивают две строки
многобайтовых символов в соответствии с лексикографическим порядком,
который задается используемой в данный момент многобайтовой кодовой
страницей.
Для некоторых кодовых страниц и соответствующих наборов символов порядок
символов в наборе может отличаться от лексикографического порядка символов. В
языковом стандарте "C" порядок символов в кодировке ASCII совпадает с
лексикографическим порядком символов. Однако, в некоторых европейских
языковых стандартах, например, символ "a" (значение 0x61) предшествует символу
"ä" (значение 0xE4) в кодировке, но "ä" предшествует символу "a"
лексикографически. В таком случае для лексикографического сравнения строк по
байтам используйте функцию _mbsnbcoll вместо _mbsnbcmp . Чтобы проверить
только равенство строк, используйте функцию _mbsnbcmp .
Требования
Подпрограмма Обязательный заголовок
_mbsnbcoll <mbstring.h>
_mbsnbcoll_l <mbstring.h>
_mbsnbicoll <mbstring.h>
_mbsnbicoll_l <mbstring.h>
_mbsnbcat, _mbsnbcat_l
_mbsnbcmp, _mbsnbcmp_l
_mbsnbicmp, _mbsnbicmp_l
Функции strcoll
) Важно!
Синтаксис
C
size_t count
);
size_t count,
_locale_t locale
);
size_t count
); // C++ only
size_t count,
_locale_t locale
); // C++ only
Параметры
strDest
strSource
count
locale
Возвращаемое значение
Функция _mbsnbcpy возвращает указатель на конечную строку символов. Нет
зарезервированных возвращаемых значений для указания ошибки.
Комментарии
Функция _mbsnbcpy копирует count байт из strSource в strDest . Если count
превышает размер strDest или строки источника и назначения перекрываются,
поведение функции _mbsnbcpy не определено.
Если strSource или strDest является пустым указателем, эта функция вызывает
обработчик недопустимых параметров, как описано в разделе Проверка
параметров. Если выполнение может быть продолжено, функция возвращает NULL
и устанавливает для параметра errno значение EINVAL .
) Важно!
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые
и безопасные аналоги этих функций. Дополнительные сведения см. в разделе
Безопасные перегрузки шаблонов.
Требования
Подпрограмма Обязательный заголовок
_mbsnbcpy <mbstring.h>
_mbsnbcpy_l <mbstring.h>
_mbsnbcat, _mbsnbcat_l
_mbsnbcmp, _mbsnbcmp_l
_mbsnbset, _mbsnbset_l
) Важно!
Синтаксис
C
errno_t _mbsnbcpy_s(
size_t sizeInBytes,
size_t count
);
errno_t _mbsnbcpy_s_l(
size_t sizeInBytes,
size_t count,
_locale_t locale
);
errno_t _mbsnbcpy_s(
size_t count
); // C++ only
errno_t _mbsnbcpy_s_l(
size_t count,
_locale_t locale
); // C++ only
Параметры
strDest
sizeInBytes
strSource
count
locale
Возвращаемое значение
Нуль в случае успешного выполнения. EINVAL , если был передан недопустимый
параметр.
Комментарии
Функция _mbsnbcpy_s копирует count байт из strSource в strDest . Если count
размер превышает значение , либо входные строки являются пустым указателем,
либо sizeInBytes count равными 0, функция вызывает обработчик недопустимых
strDest параметров, как описано в разделе Проверка параметров . Если
выполнение может быть продолжено, функция возвращает EINVAL . При
перекрытии исходной и конечной строк поведение функции _mbsnbcpy_s не
определено.
7 Примечание
В отличие от небезопасной версии этой функции, функция _mbsnbcpy_s не
выполняет заполнение значениями NULL и всегда завершает строку нуль-
символом.
Требования
Подпрограмма Обязательный заголовок
_mbsnbcpy_s <mbstring.h>
_mbsnbcpy_s_l <mbstring.h>
_mbsnbcat, _mbsnbcat_l
_mbsnbcmp, _mbsnbcmp_l
_mbsnbicmp, _mbsnbicmp_l
_mbsnbset, _mbsnbset_l
) Важно!
Синтаксис
C
int _mbsnbicmp(
size_t count
);
Параметры
string1 , string2
count
Возвращаемое значение
Возвращаемое значение показывает связь между подстроками.
Комментарии
Функция _mbsnbicmp выполняет порядковое сравнение не более count первых
байтов строк string1 и string2 . Сравнение выполняется путем преобразования
каждого символа в нижний регистр; _mbsnbcmp — версия _mbsnbicmp ,
учитывающая регистр. Сравнение заканчивается, если был достигнут
завершающий нуль-символ в любой из строк до того, как были сравнены count
симв. Если строки равны, когда завершающий нуль-символ достигается в любой из
строк до того, как count симв. сравнены, более короткая строка считается
меньшей.
Требования
Подпрограмма Обязательный заголовок
_mbsnbicmp <mbstring.h>
Пример
См. пример для _mbsnbcmp, _mbsnbcmp_l.
_mbsnbcat, _mbsnbcat_l
_mbsnbcmp, _mbsnbcmp_l
) Важно!
Синтаксис
C
unsigned int c,
size_t count
);
unsigned int c,
size_t count,
_locale_t locale
);
Параметры
str
count
Возвращаемое значение
Функция _mbsnbset возвращает указатель на измененную строку.
Комментарии
Функции _mbsnbset и _mbsnbset_l устанавливают максимум первые несколько байт
( count ) str до c . Если значение count больше длины строки str , вместо
параметра count используется длина строки str . Если c является многобайтовый
символ и не может быть полностью задан в последний байт, указанный
параметром count , последний байт заполняется пустым символом. _mbsnbset и
_mbsnbset_l не помещает завершающее значение NULL в конце str .
Если str значение равно NULL или count равно нулю, эта функция создает
исключение недопустимого параметра, как описано в разделе Проверка
параметров. Если выполнение может быть продолжено, параметр errno
устанавливается в значение EINVAL , и функция возвращает значение NULL . Кроме
того, если c не является допустимым многобайтовый символ, errno
устанавливается значение EINVAL и вместо него используется пробел.
Требования
Подпрограмма Обязательный заголовок
_mbsnbset <mbstring.h>
_mbsnbset_l <mbstring.h>
Пример
C
// crt_mbsnbset.c
#include <mbstring.h>
#include <stdio.h>
Выходные данные
Output
См. также
Манипуляция со строками
_mbsnbcat, _mbsnbcat_l
Задает для первого n байт многобайтовой строки для заданного символа. Эти
версии _mbsnbsetимеют _mbsnbset_l улучшения безопасности, как описано в
разделе Функции безопасности в CRT.
) Важно!
Синтаксис
C
errno_t _mbsnbset_s(
size_t size,
unsigned int c,
size_t count
);
errno_t _mbsnbset_s_l(
size_t size,
unsigned int c,
size_t count,
_locale_t locale
);
errno_t _mbsnbset_s(
unsigned int c,
size_t count
); // C++ only
errno_t _mbsnbset_s_l(
unsigned int c,
size_t count,
_locale_t locale
); // C++ only
Параметры
str
size
count
locale
Возвращаемое значение
Ноль в случае успешного выполнения; в противном случае — код ошибки.
Комментарии
Функции _mbsnbset_s и _mbsnbset_s_l устанавливают максимум первые несколько
байт ( count ) str до c . Если значение count больше длины строки str , вместо
параметра count используется длина строки str . Если c является многобайтовый
символ и не может быть полностью задан в последний байт, указанный
параметром count , последний байт заполняется пустым символом. _mbsnbset_s и
_mbsnbset_s_l не помещайте завершающее значение NULL в конце str .
Если str значение равно NULL или count равно нулю, эта функция создает
исключение недопустимого параметра, как описано в разделе Проверка
параметров. Если выполнение может быть продолжено, параметр errno
устанавливается в значение EINVAL , и функция возвращает значение NULL . Кроме
того, если c не является допустимым многобайтовый символ, errno
устанавливается значение EINVAL и вместо него используется пробел.
На выходное значение влияет настройка LC_CTYPE категории языкового стандарта.
Для получения дополнительной информации см. setlocale. Версия _mbsnbset_s этой
функции использует текущий языковой стандарт для поведения, зависящего от
языкового стандарта; версия _mbsnbset_s_l работает аналогично, но использует
переданный языковой стандарт. Для получения дополнительной информации см.
Locale.
Требования
Подпрограмма Обязательный заголовок
_mbsnbset_s <mbstring.h>
_mbsnbset_s_l <mbstring.h>
Пример
C
// crt_mbsnbset_s.c
#include <mbstring.h>
#include <stdio.h>
Выходные данные
Output
См. также
Манипуляция со строками
_mbsnbcat, _mbsnbcat_l
Синтаксис
C
size_t mbsrtowcs(
wchar_t *wcstr,
sizeof count,
mbstate_t *mbstate
);
size_t mbsrtowcs(
wchar_t (&wcstr)[size],
sizeof count,
mbstate_t *mbstate
); // C++ only
Параметры
wcstr
mbstr
count
mbstate
Возвращаемое значение
Возвращает число успешно преобразованных символов без учета завершающего
нуль-символа, если он есть. Возвращает (size_t)(-1), если произошла ошибка, и
задает значение errno EILSEQ .
Комментарии
Функция mbsrtowcs преобразует строку многобайтовых символов, на которую
косвенно указывает параметр mbstr , в расширенные символы, сохраняемые в
буфере, на который указывает параметр wcstr . При этом используется состояние
преобразования, содержащееся в mbstate . Преобразование продолжается для
каждого символа до тех пор, пока не будет обнаружен завершающий
многобайтовый символ NULL, многобайтовая последовательность, которая не
соответствует допустимому символу в текущем языковом стандарте, или пока
count не будут преобразованы символы. Если функция mbsrtowcs встречает
В C++ эта функция имеет шаблонную перегрузку, которая вызывает более новые и
безопасные аналоги этой функции. Дополнительные сведения см. в разделе
Безопасные перегрузки шаблонов.
Исключения
Функция mbsrtowcs является многопоточной при условии, что никакие функции в
текущем потоке не вызывают setlocale , пока эта функция выполняется, а mbstate
аргумент не является пустым указателем.
Требования
Подпрограмма Обязательный заголовок
mbsrtowcs <wchar.h>
См. также:
Преобразование данных
Локаль
mbrtowc
mbtowc, _mbtowc_l
mbstowcs, _mbstowcs_l
mbsinit
mbsrtowcs_s
Статья • 03.04.2023
Синтаксис
C
errno_t mbsrtowcs_s(
size_t * pReturnValue,
wchar_t * wcstr,
size_t sizeInWords,
mbstate_t * mbstate
);
errno_t mbsrtowcs_s(
size_t * pReturnValue,
wchar_t (&wcstr)[size],
mbstate_t * mbstate
); // C++ only
Параметры
pReturnValue
wcstr
sizeInWords
mbstr
count
mbstate
Возвращаемое значение
Нуль, если преобразование выполнено успешно; код ошибки при неудаче.
Комментарии
Функция mbsrtowcs_s преобразует строку многобайтовых символов, на которую
косвенно указывает параметр mbstr , в расширенные символы, сохраняемые в
буфере, на который указывает параметр wcstr . При этом используется состояние
преобразования, содержащееся в mbstate . Преобразование будет продолжаться
для каждого символа до тех пор, пока не будет выполнено одно из указанных ниже
условий.
Конечная строка wcstr всегда завершается null, даже при возникновении ошибки,
если wcstr только не является пустым указателем.
вычисляется, даже если wcstr аргумент является пустым указателем, что позволяет
определить требуемый размер буфера. Если wcstr является пустым указателем,
count параметр игнорируется.
Исключения
Функция mbsrtowcs_s является многопоточной, если ни в какой из функций в
текущем потоке не вызывается setlocale до тех пор, пока эта функция
выполняется, а mbstate аргумент не является пустым указателем.
Требования
Подпрограмма Обязательный заголовок
mbsrtowcs_s <wchar.h>
См. также:
Преобразование данных
Локаль
mbrtowc
mbtowc, _mbtowc_l
mbstowcs_s, _mbstowcs_s_l
mbsinit
mbstowcs , _mbstowcs_l
Статья • 03.04.2023
Синтаксис
C
size_t mbstowcs(
wchar_t *wcstr,
size_t count
);
size_t _mbstowcs_l(
wchar_t *wcstr,
size_t count,
_locale_t locale
);
size_t mbstowcs(
wchar_t (&wcstr)[size],
size_t count
); // C++ only
size_t _mbstowcs_l(
wchar_t (&wcstr)[size],
size_t count,
_locale_t locale
); // C++ only
Параметры
wcstr
mbstr
locale
Возвращаемое значение
Если функция mbstowcs успешно преобразовывает исходную строку, возвращается
число преобразованных многобайтовых символов. Если аргумент wcstr имеет
значение NULL , функция возвращает необходимый размер (в расширенных
символах) строки назначения. При mbstowcs обнаружении недопустимого
многобайтового символа возвращается значение -1. Если возвращаемое значение
равно count , строка расширенных символов не заканчивается null.
) Важно!
Комментарии
Функция mbstowcs преобразовывает не более count многобайтовых символов,
указанных в параметре mbstr , в строку соответствующих расширенных символов,
определяемых текущим языковым стандартом. Она сохраняет результирующую
строку расширенных символов по адресу, указанному в параметре wcstr . Результат
аналогичен последовательности вызовов функции mbtowc. Если mbstowcs
обнаруживает однобайтовый пустой символ ('\0') до или при count возникновении,
он преобразует символ NULL в символ NULL с широким символом ( L'\0' ) и
останавливается. Таким образом, строка расширенных символов в параметре
wcstr заканчивается нуль-символом только в том случае, если нуль-символ
mbstr Если аргумент имеет значение NULL , или , если count имеет значение
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые
и безопасные аналоги этих функций. Дополнительные сведения см. в разделе
Безопасные перегрузки шаблонов.
Требования
Подпрограмма Обязательный заголовок
mbstowcs <stdlib.h>
_mbstowcs_l <stdlib.h>
Пример
C
// crt_mbstowcs.c
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
size_t size;
int requiredSize;
char* localeInfo;
wchar_t *pwc;
if (! pmbhello)
return 1;
return 1;
if (! pwc)
return 1;
free(pwc);
free(pmbhello);
Output
Required Size: 4
Characters converted: 2
Локаль
mbtowc, _mbtowc_l
wcstombs, _wcstombs_l
wctomb, _wctomb_l
MultiByteToWideChar
mbstowcs_s , _mbstowcs_s_l
Статья • 03.04.2023
Синтаксис
C
errno_t mbstowcs_s(
size_t *pReturnValue,
wchar_t *wcstr,
size_t sizeInWords,
size_t count
);
errno_t _mbstowcs_s_l(
size_t *pReturnValue,
wchar_t *wcstr,
size_t sizeInWords,
size_t count,
_locale_t locale
);
errno_t mbstowcs_s(
size_t *pReturnValue,
wchar_t (&wcstr)[size],
size_t count
); // C++ only
errno_t _mbstowcs_s_l(
size_t *pReturnValue,
wchar_t (&wcstr)[size],
size_t count,
_locale_t locale
); // C++ only
Параметры
pReturnValue
sizeInWords
mbstr
count
locale
Возвращаемое значение
Нуль в случае успеха или код ошибки в случае неудачи.
Комментарии
Функция mbstowcs_s преобразует строку многобайтовых символов, на которую
указывает mbstr , в расширенные символы, сохраненные в буфере, на который
указывает wcstr . Преобразование будет продолжаться для каждого символа до тех
пор, пока не будет выполнено одно из указанных ниже условий.
требуемого размера буфера. Если wcstr имеет значение NULL , count параметр
игнорируется и sizeInWords должен иметь значение 0.
) Важно!
Требования
Подпрограмма Обязательный заголовок
mbstowcs_s <stdlib.h>
_mbstowcs_s_l <stdlib.h>
См. также:
Преобразование данных
Локаль
MultiByteToWideChar
mbtowc, _mbtowc_l
wcstombs, _wcstombs_l
wctomb, _wctomb_l
mbtowc , _mbtowc_l
Статья • 03.04.2023
Синтаксис
C
int mbtowc(
wchar_t *wchar,
size_t count
);
int _mbtowc_l(
wchar_t *wchar,
size_t count,
_locale_t locale
);
Параметры
wchar
mbchar
count
locale
Возвращаемое значение
Если mbchar значение не NULL равно , и если mbchar указывает на допустимый
многобайтовый символ, mbtowc возвращает длину многобайтового символа в
байтах. Если mbchar имеет значение NULL или указывает на расширенный символ
NULL (L'\0'), функция возвращает значение 0. Если объект, указывающий mbchar на,
не формирует допустимый многобайтовый символ в первых count символах,
возвращается значение -1.
Комментарии
Функция mbtowc преобразует или меньше байтов count , на которые указывает
mbchar , если mbchar значение не NULL равно , в соответствующий расширенный
Требования
Подпрограмма Обязательный заголовок
mbtowc <stdlib.h>
_mbtowc_l <stdlib.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_mbtowc.c
#include <stdlib.h>
#include <stdio.h>
int i;
wchar_t wc = L'a';
"character:\n" );
pmbc = NULL;
Output
Characters converted: 1
Multibyte character: 61
Bytes converted: 1
Wide character: 61
Bytes converted: 0
MultiByteToWideChar
Локаль
wcstombs, _wcstombs_l
wctomb, _wctomb_l
memccpy
Статья • 03.04.2023
Синтаксис
C
void *_memccpy(
void *dest,
int c,
size_t count
);
Параметры
dest
Указатель на назначение.
src
Указатель на источник.
count
Число символов.
Возвращаемое значение
Если символ c копируется, _memccpy возвращает указатель на символ, который
dest сразу же следует за символом. Если c он не копируется, возвращается NULL .
Комментарии
Функция _memccpy копирует ноль или более символов src dest в, останавливается
при копировании символа c или при count копировании символов, в зависимости
от того, в каком случае он будет первым.
Примечание о безопасности. Убедитесь в том, что буфер назначения равен или
превосходит по размеру исходный буфер. Дополнительные сведения см. в разделе
"Предотвращение переполнения буфера".
Требования
Подпрограмма Обязательный заголовок
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_memccpy.c
#include <memory.h>
#include <stdio.h>
#include <string.h>
char string1[60] = "The quick brown dog jumps over the lazy fox";
char buffer[61];
char *pdest;
*pdest = '\0';
Выходные данные
Output
Function: _memccpy 60 characters or to character 's'
Source: The quick brown dog jumps over the lazy fox
См. также
Операции с буфером
memchr, wmemchr
memcmp, wmemcmp
memcpy, wmemcpy
memset, wmemset
memchr , wmemchr
Статья • 03.04.2023
Синтаксис
C
void *memchr(
int c,
size_t count
); // C only
void *memchr(
void *buffer,
int c,
size_t count
); // C++ only
int c,
size_t count
); // C++ only
wchar_t *wmemchr(
wchar_t c,
size_t count
); // C only
wchar_t *wmemchr(
wchar_t * buffer,
wchar_t c,
size_t count
); // C++ only
wchar_t c,
size_t count
); // C++ only
Параметры
buffer
Указатель на буфер.
c
count
Возвращаемое значение
В случае успешного выполнения возвращает указатель на первое расположение
символа c в buffer . В противном случае возвращается значение NULL.
Комментарии
memchr ищите wmemchr первое вхождение c в первых count символах buffer . Он
останавливается при обнаружении c или проверке первых count символов.
Требования
Подпрограмма Обязательный заголовок
wmemchr <wchar.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_memchr.c
#include <memory.h>
#include <stdio.h>
int ch = 'r';
char *pdest;
int result;
if ( pdest != NULL )
printf( "Result: %c found at position %d\n", ch, result );
else
Выходные данные
Output
String to be searched:
1 2 3 4 5
12345678901234567890123456789012345678901234567890
Search char: r
См. также
Операции с буфером
_memccpy
memcmp, wmemcmp
memcpy, wmemcpy
memset, wmemset
Синтаксис
C
int memcmp(
);
int wmemcmp(
size_t count
);
Параметры
buffer1
Первый буфер.
buffer2
Второй буфер.
count
Возвращаемое значение
Возвращаемое значение показывает связь между буферами.
Комментарии
Сравнивает первые count символов в buffer1 и buffer2 , возвращая значение,
указывающее на соотношение между ними. Знак ненулевого возвращаемого
значения соответствует знаку разности между первой отличающейся парой
значений в буферах. Значения интерпретируются как unsigned char для memcmp и
как wchar_t для wmemcmp .
Требования
Подпрограмма Обязательный заголовок
wmemcmp <wchar.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_memcmp.c
*/
#include <string.h>
#include <stdio.h>
int result;
else
else
Output
_memccpy
memchr, wmemchr
memcpy, wmemcpy
memset, wmemset
Синтаксис
C
void *memcpy(
void *dest,
size_t count
);
wchar_t *wmemcpy(
wchar_t *dest,
size_t count
);
Параметры
dest
Новый буфер.
src
count
Возвращаемое значение
Значение dest .
Комментарии
memcpy копирует байты count из src в dest ; wmemcpy копирует расширенные count
символы. Если исходный и целевой регионы перекрываются, поведение memcpy не
определено. Используйте memmove для обработки перекрывающихся областей.
) Важно!
) Важно!
C
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <memory.h>
или
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>
Требования
Подпрограмма Обязательный заголовок
wmemcpy <wchar.h>
Пример
См memmove . пример использования memcpy .
_memccpy
memchr, wmemchr
memcmp, wmemcmp
memmove, wmemmove
memset, wmemset
Синтаксис
C
errno_t memcpy_s(
void *dest,
size_t destSize,
size_t count
);
errno_t wmemcpy_s(
wchar_t *dest,
size_t destSize,
size_t count
);
Параметры
dest
Новый буфер.
destSize
src
count
Возвращаемое значение
Возвращает нуль в случае успеха или код ошибки в случае неудачи.
Условия ошибок
Комментарии
memcpy_s копирует байты count из src ; dest wmemcpy_s копирует расширенные
Эти функции проверяют свои параметры. Если count значение не равно нулю и
src dest является пустым указателем или destSize меньше count , эти функции
Требования
Подпрограмма Обязательный заголовок
wmemcpy_s <wchar.h>
// crt_memcpy_s.c
#include <memory.h>
#include <stdio.h>
int main()
errno_t err;
a2[i] = i*i;
if (err)
else
printf("\n");
Output
0 1 4 9 16 25 36 49 64 81
_memccpy
memchr, wmemchr
memcmp, wmemcmp
memmove, wmemmove
memset, wmemset
Синтаксис
C
int _memicmp(
);
int _memicmp_l(
_locale_t locale
);
Параметры
buffer1
Первый буфер.
buffer2
Второй буфер.
count
Число символов.
locale
Возвращаемое значение
Возвращаемое значение показывает связь между буферами.
Комментарии
Функция _memicmp сравнивает первые символы ( count ) двух буферов buffer1 и
buffer2 по байтам. Сравнение не учитывает регистр.
Если какой-либо или buffer1 buffer2 является пустым указателем, эта функция
вызывает обработчик недопустимых параметров, как описано в разделе "Проверка
параметров". Если выполнение может быть продолжено, функция возвращает
_NLSCMPERROR и устанавливает для параметра errno значение EINVAL .
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_memicmp.c
#include <memory.h>
#include <stdio.h>
#include <string.h>
int result;
char second[] = "THOSE WHO WILL NOT LEARN FROM their mistakes";
Output
Compare 'Those Who Will Not Learn from' to 'THOSE WHO WILL NOT LEARN FROM'
_memccpy
memchr, wmemchr
memcmp, wmemcmp
memcpy, wmemcpy
memset, wmemset
Синтаксис
C
void *memmove(
void *dest,
size_t count
);
wchar_t *wmemmove(
wchar_t *dest,
size_t count
);
Параметры
dest
Конечный объект.
src
Исходный объект.
count
Возвращаемое значение
Значение dest .
Комментарии
Копирует count байтов ( memmove ) или символов ( wmemmove ) из src в dest . Если
некоторые части исходного и целевого регионов перекрываются, обе функции
гарантируют, что исходные байты в перекрывающейся области копируются перед
перезаписью.
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <string.h>
или
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>
Требования
Подпрограмма Обязательный заголовок
memmove <string.h>
wmemmove <wchar.h>
Пример
C
// crt_memcpy.c
// it correctly.
//
#include <memory.h>
#include <string.h>
#include <stdio.h>
Output
_memccpy
memcpy, wmemcpy
Синтаксис
C
errno_t memmove_s(
void *dest,
size_t numberOfElements,
size_t count
);
errno_t wmemmove_s(
wchar_t *dest,
size_t numberOfElements,
size_t count
);
Параметры
dest
Конечный объект.
numberOfElements
src
Исходный объект.
count
Возвращаемое значение
Возвращает нуль в случае успеха или код ошибки в случае неудачи
Условия ошибок
Комментарии
Копирует count байтов символов из src в dest . Если некоторые части исходного и
целевого регионов перекрываются, memmove_s перед перезаписью копируются
исходные байты в перекрывающейся области.
Если dest или src является пустым указателем или если целевая строка слишком
мала, эти функции вызывают обработчик недопустимых параметров, как описано в
разделе "Проверка параметров ". Если продолжение выполнения разрешено, эти
функции возвращают EINVAL и устанавливают для errno значение EINVAL .
Требования
Подпрограмма Обязательный заголовок
memmove_s <string.h>
wmemmove_s <wchar.h>
Пример
C
// crt_memmove_s.c
//
#include <stdio.h>
#include <string.h>
int main()
Выходные данные
Output
Before: 0123456789
After: 0012345789
См. также
Операции с буфером
_memccpy
memcpy, wmemcpy
Синтаксис
C
void *memset(
void *dest,
int c,
size_t count
);
wchar_t *wmemset(
wchar_t *dest,
wchar_t c,
size_t count
);
Параметры
dest
Задаваемый символ.
count
Число символов.
Возвращаемое значение
Значение dest .
Комментарии
Задает для первых count символов dest значение символа c .
Требования
Подпрограмма Обязательный заголовок
wmemset <wchar.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_memset.c
*/
#include <memory.h>
#include <stdio.h>
Output
Before: This is a test of the memset function
// crt_wmemset.c
*/
#include <wchar.h>
#include <stdio.h>
Output
_memccpy
memchr, wmemchr
memcmp, wmemcmp
memcpy, wmemcpy
Синтаксис
C
Параметры
a, b
Возвращаемое значение
Меньший из двух аргументов.
Комментарии
Макрос __min сравнивает два значения и возвращает значение меньшего.
Аргументы могут быть любого числового типа данных со знаком или без знака.
Оба аргумента и возвращаемое значение должны принадлежать к одному типу
данных.
Требования
Подпрограмма Обязательный заголовок
__min <stdlib.h>
Пример
C
// crt_minmax.c
#include <stdlib.h>
#include <stdio.h>
int a = 10;
int b = 21;
Output
Создает каталог.
Синтаксис
C
int _mkdir(
);
int _wmkdir(
);
Параметры
dirname
Возвращаемое значение
Каждая функция возвращает значение 0, если новый каталог успешно создан. При
ошибке функция возвращает значение -1 и задает errno следующее.
EEXIST Каталог не был создан, так как dirname это имя существующего файла,
каталога или устройства.
Комментарии
Функция _mkdir создает новый каталог с указанным dirname . Функция _mkdir
может создать только один новый каталог для одного вызова, поэтому только
последний компонент dirname может присвоить имя новому каталогу. _mkdir не
преобразует разделители пути. В Windows NT обратная косая черта ( \ ) и косая
черта ( / ) являются допустимыми разделителями пути в символьных строках в
подпрограммах времени выполнения.
в противном случае.
Требования
Подпрограмма Обязательный заголовок
_mkdir <direct.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_makedir.c
#include <direct.h>
#include <stdlib.h>
#include <stdio.h>
else
else
Directory of C:\testtmp
0 File(s) 0 bytes
_chdir, _wchdir
_rmdir, _wrmdir
_mkgmtime , _mkgmtime32 , _mkgmtime64
Статья • 03.04.2023
Синтаксис
C
time_t _mkgmtime(
);
__time32_t _mkgmtime32(
);
__time64_t _mkgmtime64(
);
Параметры
timeptr
Возвращаемое значение
Значение типа __time32_t или __time64_t , представляющее количество секунд,
истекших после полуночи 1 января 1970 года, в формате UTC. Если дата выходит за
пределы диапазона (см. раздел "Примечания") или входные данные не могут быть
интерпретированы как допустимое время, возвращаемое значение равно -1.
Комментарии
Функции _mkgmtime32 и _mkgmtime64 преобразовывают время в формате UTC в тип
__time32_t или __time64_t , представляющий время в формате UTC. Для
преобразования местного времени во время в формате UTC вместо этого
используйте mktime , _mktime32 и _mktime64 .
_mkgmtime — встроенная функция, которая принимает значение _mkgmtime64 и
игнорируется.
Примеры
C
// crt_mkgmtime.c
#include <stdio.h>
#include <time.h>
int main()
char buff[30];
mytime = mktime(&t1);
gmtime = _mkgmtime(&t2);
Output
My time: 1171588492
// crt_mkgmtime2.c
#include <stdio.h>
#include <time.h>
#include <memory.h>
int main()
time_t gmtime;
char buff[30];
t1.tm_mon = 1;
t1.tm_isdst = 0;
t1.tm_year = 103;
t1.tm_mday = 12;
// The day of the week and year will be incorrect in the output here.
buff, t1.tm_yday );
gmtime = _mkgmtime(&t1);
buff, t1.tm_yday );
Output
t.tm_yday = 0
t.tm_yday = 42
asctime, _wasctime
asctime_s, _wasctime_s
Создает уникальное имя файла. Доступны более безопасные версии этих функций;
См. раздел_mktemp_s , _wmktemp_s.
Синтаксис
C
char *_mktemp(
char *nameTemplate
);
wchar_t *_wmktemp(
wchar_t *nameTemplate
);
char *_mktemp(
char (&nameTemplate)[size]
); // C++ only
wchar_t *_wmktemp(
wchar_t (&nameTemplate)[size]
); // C++ only
Параметры
nameTemplate
Возвращаемое значение
Каждая из этих функций возвращает указатель на измененный объект
nameTemplate. Функция возвращает значение NULL , если nameTemplate имеет
неправильный формат или из заданного имениTemplate невозможно создать более
уникальные имена.
Комментарии
Функция _mktemp создает уникальное имя файла, изменяя аргумент nameTemplate .
Функция _mktemp автоматически требуемым образом обрабатывает аргументы в
виде многобайтовых строк, распознавая многобайтовые последовательности
символов в соответствии с текущей многобайтовой кодовой страницей,
используемой системой времени выполнения. _wmktemp — это версия с
расширенными символами для _mktemp ; аргумент и возвращаемое значение
_wmktemp являются строками с расширенными символами. _wmktemp и _mktemp ведут
Аргумент nameTemplate имеет форму baseXXXXXX , где base является частью нового
имени файла, который вы указали, а X — это заполнитель для символа, указанного
в _mktemp . Каждый символ заполнителя в функции nameTemplate должен быть
обозначен символом X в верхнем регистре. Функция _mktemp сохраняет base и
заменяет первый конечный символ X на букву. _mktemp заменяет конечные
символы X пятизначным значением. Это значение является уникальным числом,
которое идентифицирует вызывающий процесс или в многопоточных программах
вызывающий поток.
fn
а пятизначное число, предоставляемое _mktemp , — 12345, то возвращается имя:
fna12345
Если это имя используется для создания файла FNA12345 и этот файл существует, то
следующее имя, возвращаемое из того же процесса или потока с таким же
аргументом base для nameTemplate будет
fnb12345
fna12345
_mktemp может создать не более 26 уникальных имен файлов для любого заданного
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые
и безопасные аналоги этих функций. Дополнительные сведения см. в разделе
Безопасные перегрузки шаблонов.
Требования
Подпрограмма Обязательный заголовок
_mktemp <io.h>
Пример
C
// crt_mktemp.c
*/
#include <io.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
char *result;
char names[27][9];
int i;
FILE *fp;
if (errno == EINVAL)
else
if( fp != NULL )
fclose( fp );
Output
fopen, _wfopen
_getmbcp
_getpid
_open, _wopen
_setmbcp
tmpfile
_mktemp_s , _wmktemp_s
Статья • 03.04.2023
Синтаксис
C
errno_t _mktemp_s(
char *nameTemplate,
size_t sizeInChars
);
errno_t _wmktemp_s(
wchar_t *nameTemplate,
size_t sizeInChars
);
errno_t _mktemp_s(
char (&nameTemplate)[size]
); // C++ only
errno_t _wmktemp_s(
wchar_t (&nameTemplate)[size]
); // C++ only
Параметры
nameTemplate
sizeInChars
Возвращаемое значение
Обе этих функции возвращают нулевое значение в случае успешного выполнения;
код ошибки — в случае сбоя.
Условия ошибок
nameTemplate sizeInChars Возвращаемое Новое
значение значение в
nameTemplate
Комментарии
Функция _mktemp_s создает уникальное имя файла, изменяя аргумент nameTemplate
таким образом, чтобы после вызова указатель nameTemplate ссылался на строку,
содержащую имя нового файла. Функция _mktemp_s автоматически требуемым
образом обрабатывает аргументы в виде многобайтовых строк, распознавая
многобайтовые последовательности символов в соответствии с текущей
многобайтовой кодовой страницей, используемой системой времени выполнения.
Функция _wmktemp_s — это версия _mktemp_s с расширенными символами; аргумент
_wmktemp_s — строка расширенных символов. _wmktemp_s и _mktemp_s ведут себя
Версии библиотек отладки этих функций сначала заполняют буфер 0xFE. Чтобы
отключить это поведение, используйте _CrtSetDebugFillThreshold.
Аргумент nameTemplate имеет форму baseXXXXXX , где base является частью нового
имени файла, который вы указали, а X — это заполнитель для символа, указанного
в _mktemp_s . Каждый символ заполнителя в функции nameTemplate должен быть
обозначен символом X в верхнем регистре. Функция _mktemp_s сохраняет base и
заменяет первый конечный символ X на букву. _mktemp_s заменяет символы X,
которые следуют за пятизначным значением. Это значение является уникальным
числом, которое идентифицирует вызывающий процесс или в многопоточных
программах.
fn
fna12345
Если это имя используется для создания файла FNA12345 и этот файл существует, то
следующее имя, возвращаемое из того же процесса или потока с таким же
аргументом base для nameTemplate будет
fnb12345
fna12345
_mktemp_s может создавать не более 26 уникальных имен файлов для любого
Требования
Подпрограмма Обязательный заголовок
_mktemp_s <io.h>
Пример
C++
// crt_mktemp_s.cpp
*/
#include <io.h>
#include <string.h>
#include <stdio.h>
char names[5][9];
int main()
FILE *fp;
/* Get the size of the string and add one for the null terminator.*/
sizeInChars = strnlen(names[i], 9) + 1;
if( err != 0 )
else
else
fclose( fp );
return 0;
fopen, _wfopen
_getmbcp
_getpid
_open, _wopen
_setmbcp
tmpfile_s
mktime , _mktime32 , _mktime64
Статья • 03.04.2023
Синтаксис
C
time_t mktime(
struct tm *timeptr
);
__time32_t _mktime32(
struct tm *timeptr
);
__time64_t _mktime64(
struct tm *timeptr
);
Параметры
timeptr
Возвращаемое значение
_mktime32 возвращает указанное время календаря, закодированное как значение
типа time_t. Если timeptr ссылка на дату до полуночи, 1 января 1970 г., или если
календарное время не может быть представлено, возвращает значение -1
приведения _mktime32 к типу time_t . При использовании _mktime32 и при timeptr
ссылке на дату после 23:59:59 18 января 2038 г. в формате UTC возвращается
значение -1 приведения к типу time_t .
Комментарии
Функции mktime , _mktime32 и _mktime64 преобразуют предоставленную структуру
времени (возможно, незавершенную), на которую указывает timeptr , в полностью
определенную структуру с нормализованными значениями, а затем преобразует ее
в значение календарного time_t времени. Преобразованное время имеет ту же
кодировку, что и значения, возвращаемые функцией time . Исходные значения
tm_wday компонентов timeptr и tm_yday структуры игнорируются, а исходные
значения других компонентов не ограничиваются их обычными диапазонами.
значение больше нуля, чтобы указать, что действует переход на зимнее время;
Требования
Подпрограмма Обязательный заголовок
mktime <time.h>
_mktime32 <time.h>
_mktime64 <time.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_mktime.c
*/
#include <time.h>
#include <stdio.h>
struct tm when;
int days;
char buff[80];
time( &now );
days = 20;
} else
asctime, _wasctime
Синтаксис
C
C++
long double modf( long double x, long double * intptr ); // C++ only
Параметры
x
intptr
Возвращаемое значение
Эта функция возвращает дробную часть x со знаком . Ошибка не возвращается.
Комментарии
Функции modf разбивают значение с плавающей запятой x на дробную и целую
части, каждая из которых имеет тот же знак, что и x . Возвращается дробная часть
числа x со знаком. Целочисленная часть хранится в виде значения с плавающей
запятой. intptr
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_modf.c
#include <math.h>
#include <stdio.h>
double x, y, n;
x, y, n );
Output
ldexp
_msize
Статья • 03.04.2023
Синтаксис
C
size_t _msize(
void *memblock
);
Параметры
memblock
Возвращаемое значение
Функция _msize возвращает размер (в байтах) как целое число без знака.
Комментарии
Функция _msize возвращает размер блока памяти (в байтах), выделенного вызовом
функции calloc , malloc или realloc .
Эта функция проверяет свои параметры. Если memblock является указателем NULL ,
_msize вызывает обработчик недопустимого параметра, как описано в разделе
_msize <malloc.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
См. пример для realloc.
calloc
_expand
malloc
realloc
_msize_dbg
Статья • 03.04.2023
Синтаксис
C
size_t _msize_dbg(
void *userData,
int blockType
);
Параметры
userData
blockType
Возвращаемое значение
При успешном завершении _msize_dbg возвращает размер (в байтах) указанного
блока памяти; в противном случае возвращается NULL .
Комментарии
_msize_dbg — отладочная версия функции _msize . Если _DEBUG параметр не
определен, каждый вызов _msize_dbg сводится к вызову _msize . Обе функции
_msize и _msize_dbg вычисляют размер блока памяти в основной куче, однако
_msize_dbg добавляет две функции отладки: одна функция включает в
Требования
Подпрограмма Обязательный заголовок
_msize_dbg <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Пример
C
// crt_msize_dbg.c
/*
*/
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <crtdbg.h>
/*
*/
exit( 1 );
/*
*/
/*
* Reallocate the buffer using _realloc_dbg and show the new size
*/
exit( 1 );
buffer = newbuffer;
free( buffer );
exit( 0 );
Выходные данные
Output
См. также
Подпрограммы отладки
_malloc_dbg
nan , nanf , nanl
Статья • 03.04.2023
Синтаксис
C
Параметры
input
Строковое значение.
Возвращаемое значение
Функции nan возвращают несигнальное значение NaN (QNaN).
Комментарии
Функции nan возвращают значение с плавающей запятой, которое соответствует
несигнальному значению NaN (QNaN). Значение параметра input игнорируется.
Сведения о том, как naN представлено для выходных данных, см. в разделе printf, ,
_printf_lwprintf. _wprintf_l
Требования
Компонент Заголовок C Заголовок C++
_fpclass, _fpclassf
isinf
isnormal
nearbyint , nearbyintf , nearbyintl
Статья • 03.04.2023
Синтаксис
C
Параметры
x
Округляемое значение.
Возвращаемое значение
В случае успешного выполнения возвращает x , округленное до ближайшего
целого числа, используя текущий формат округления, как сообщает .fegetround В
противном случае функция может вернуть одно из следующих значений:
Проблема Возвращает
x = не число не число
Комментарии
Основное различие между этой функцией и rint заключается в том, что эта функция
не создает исключение неточной с плавающей запятой.
Требования
Компонент Заголовок C Заголовок C++
Синтаксис
C
long double nextafter( long double x, long double y ); /* C++ only, requires
<cmath> */
Параметры
x
Комментарии
Семейства функций nextafter и nexttoward эквивалентны за исключением типа
параметра y . Если значения x и y равны, возвращается значение y ,
преобразованное в возвращаемый тип.
Так как C++ допускает перегрузку, при включении <cmath> можно вызывать
перегрузки nextafter и nexttoward , возвращающие float и long double типы. В
программе C, если вы не используете <tgmath.h> макрос для вызова этой функции
и nextafter nexttoward всегда возвращаете double .
Требования
Подпрограмма Обязательный Обязательный
заголовок (C) заголовок (C++)
Подпрограмма Обязательный Обязательный
заголовок (C) заголовок (C++)
Синтаксис
C
C++
Параметры
z
Комплексное число.
Возвращаемое значение
Абсолютное значение z в квадрате.
Комментарии
Так как C++ допускает перегрузку, можно вызывать перегрузки norm , которые
принимают значения _Fcomplex или _Lcomplex и возвращают значения float или
long double . В программе на языке C norm всегда принимает значение _Dcomplex и
возвращает значение double .
Требования
Подпрограмма Заголовок C Заголовок C++
Подпрограмма Заголовок C Заголовок C++
Альтернатива оператору ! .
Синтаксис
C
#define not !
Remarks
Макрос возвращает оператор ! .
Пример
C++
// iso646_not.cpp
#include <iostream>
#include <iso646.h>
int main( )
int a = 0;
if (!a)
if (not(a))
Output
a is zero
a is zero
Требования
Заголовка:< iso646.h>
not_eq
Статья • 03.04.2023
Альтернатива оператору != .
Синтаксис
C
#define not_eq !=
Remarks
Макрос возвращает оператор != .
Пример
C++
// iso646_not_eq.cpp
#include <iostream>
#include <iso646.h>
int main( )
int a = 0, b = 1;
if (a != b)
if (a not_eq b)
Output
a is not equal to b
a is not equal to b
Требования
Заголовка:< iso646.h>
Макрос offsetof
Статья • 03.04.2023
Синтаксис
C
size_t offsetof(
structName,
memberName
);
Параметры
structName
memberName
Возвращаемое значение
offsetof возвращает смещение в байтах указанного члена относительно начала
Комментарии
Макрос offsetof возвращает смещение в байтах memberName от начала структуры,
заданной параметром structName , как значение типа size_t . С помощью
ключевого слова struct можно указывать типы.
7 Примечание
offsetof <stddef.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Синтаксис
C
_onexit_t _onexit(
_onexit_t function
);
_onexit_t_m _onexit_m(
_onexit_t_m function
);
Параметры
function
Возвращаемое значение
_onexit возвращает указатель на функцию в случае успешного выполнения или
NULL если нет места для хранения указателя функции.
Комментарии
Функции _onexit передается адрес функции ( function ), которую требуется
вызывать при завершении программы в обычном режиме. Последовательные
вызовы функции _onexit создают регистр функций, которые выполняются в
порядке LIFO (последним поступил — первым обслужен). Передаваемые функции
_onexit не могут принимать параметры.
Требования
Подпрограмма Обязательный заголовок
_onexit <stdlib.h>
Пример
C
// crt_onexit.c
#include <stdlib.h>
#include <stdio.h>
/* Prototypes */
_onexit( fn1 );
_onexit( fn2 );
_onexit( fn3 );
_onexit( fn4 );
int fn1()
printf( "next.\n" );
return 0;
int fn2()
return 0;
int fn3()
return 0;
int fn4()
return 0;
Выходные данные
Output
См. также
Управление процессами и средой
atexit
__dllonexit
open
Статья • 03.04.2023
Открывает файл. Эти функции являются устаревшими, так как доступны более
безопасные версии; see _sopen_s, _wsopen_s.
Синтаксис
C
int _open(
int oflag [,
int pmode]
);
int _wopen(
int oflag [,
int pmode]
);
Параметры
filename
Имя файла.
oflag
pmode
Режим разрешений.
Возвращаемое значение
Каждая из этих функций возвращает дескриптор файла для открытого файла.
Возвращаемое значение -1 указывает на ошибку; в этом случае для errno задается
одно из следующих значений.
Значение Условие
errno
Значение Условие
errno
EACCES Попытка открыть файл только для чтения для записи, режим общего доступа к
файлу не разрешает указанные операции, или заданный путь является
каталогом.
EMFILE Больше нет доступных дескрипторов файлов (открыто слишком много файлов).
Комментарии
Функция _open открывает файл, указанный параметром filename , и готовит его к
чтению или записи, как задано параметром oflag . _wopen — это версия _open с
расширенными символами; аргумент filename для _wopen — строка расширенных
символов. Поведение _wopen и _open идентично в противном случае.
константа Поведение
oflag ;
_O_CREAT Создает файл и открывает его для записи. Не действует, если существует
файл, указанный параметром filename . Аргумент pmode обязателен, если
указан флаг _O_CREAT .
_O_CREAT | Создает файл как временный и, если это возможно, не сбрасывает на диск.
_O_SHORT_LIVED Аргумент pmode обязателен, если указан флаг _O_CREAT .
_O_CREAT | Создает файл в качестве временного файла; файл удаляется при закрытии
_O_TEMPORARY последнего дескриптора файла. Аргумент pmode обязателен, если указан
флаг _O_CREAT . Чтобы сохранить устаревшее поведение для совместимости
приложений, другие процессы не препятствуют удалению этого файла.
_O_RDONLY Открывает файл только для чтения. Не удается указать с _O_RDWR помощью
или _O_WRONLY .
Если для открытия файла для чтения используется флаг _O_WTEXT , _open считывает
начало файла и проверяет наличие метки порядка байтов (BOM). Если существует
BOM, файл обрабатывается как UTF-8 или UTF-16LE в зависимости от BOM. Если
метка порядка байтов есть, файл обрабатывается как ANSI. Если файл открыт для
записи с помощью флага _O_WTEXT , используется кодировка UTF-16. Независимо от
любых предыдущих параметров или метки порядка байтов, если используется флаг
_O_U8TEXT , файл всегда открывается в кодировке UTF-8; если используется флаг
_O_U16TEXT , файл всегда открывается в кодировке UTF-16.
для чтения и записи, считывается метка порядка байтов, а затем файл снова
открывается только для записи. Если происходит сбой открытия файла для чтения и
записи, файл открывается только для записи и для параметра режима Юникода
используется значение по умолчанию.
Аргумент pmode обязателен, только если указан флаг _O_CREAT . Если файл уже
существует, pmode игнорируется. В противном случае аргумент pmode задает
параметры разрешений файла, которые настраиваются при первом закрытии
нового файла. _open применяет текущую маску разрешений файла к pmode до
настройки разрешений. (Дополнительные сведения см. в разделе _umask.) pmode
представляет собой целочисленное выражение, содержащее одну или обе
следующие константы манифеста, определенные в <sys\stat.h> .
pmode Значение
Требования
Компонент Обязательный заголовок Необязательный заголовок
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_open.c
*/
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>
if( fh1 == -1 )
else
_close( fh1 );
_O_WRONLY | _O_CREAT,
if( fh2 == -1 )
else
_close( fh2 );
Выходные данные
Output
См. также
Низкоуровневый ввод-вывод
_chmod, _wchmod
_close
_creat, _wcreat
_dup, _dup2
fopen, _wfopen
_sopen, _wsopen
_open_osfhandle
Статья • 03.04.2023
Синтаксис
C++
int _open_osfhandle (
intptr_t osfhandle,
int flags
);
Параметры
osfhandle
flags
Возвращаемое значение
В случае успешного выполнения функция _open_osfhandle возвращает дескриптор
файла времени выполнения C. Иначе возвращается значение -1.
Комментарии
Функция _open_osfhandle выделяет дескриптор файла времени выполнения C. Он
связывает дескриптор файла с дескриптором операционной системы, указанным в
параметре osfhandle . Чтобы избежать предупреждения компилятора, приведите
osfhandle аргумент из HANDLE intptr_t . Аргумент flags представляет собой
целочисленное выражение, сформированное из одной или нескольких констант
манифеста, определенных в <fcntl.h> . Оператор bitwise or ( | ) можно
использовать для объединения двух или более констант манифеста для
формирования аргумента flags .
Эти константы манифеста определены в <fcntl.h> следующих значениях:
Константа Описание
_O_APPEND Помещает указатель файла в конец файла перед каждой операцией записи.
Требования
Подпрограмма Обязательный заголовок
_open_osfhandle <io.h>
_get_osfhandle
or_eq
Статья • 03.04.2023
Альтернатива оператору |= .
Синтаксис
C
#define or_eq |=
Remarks
Макрос возвращает оператор |= .
Пример
C++
// iso646_oreq.cpp
#include <iostream>
#include <iso646.h>
int main( )
int a = 3, b = 2, result;
result= a |= b;
result= a or_eq b;
Output
Требования
Заголовка:< iso646.h>
or
Статья • 03.04.2023
Альтернатива оператору || .
Синтаксис
C
#define or ||
Remarks
Макрос возвращает оператор || .
Пример
C++
// iso646_or.cpp
#include <iostream>
#include <iso646.h>
int main( )
boolalpha(cout);
result= a || b;
result= a or b;
Output
true
true
Требования
Заголовка:< iso646.h>
_pclose
Статья • 03.04.2023
) Важно!
Синтаксис
C
int _pclose(
FILE *stream
);
Параметры
stream
Возвращаемое значение
Возвращает состояние выхода завершающего обработчика команд или -1 при
возникновении ошибки. Формат возвращаемого значения совпадает _cwait с
форматом, за исключением байтов низкого и высокого порядка. Если поток имеет
значение NULL , _pclose задает EINVAL errno значение -1 и возвращает значение -1.
Комментарии
Функция _pclose ищет идентификатор процесса обработчика команд (Cmd.exe),
запущенного связанным вызовом, выполняет _cwait вызов нового обработчика
команд и закрывает поток в связанном _popen канале.
Требования
Подпрограмма Обязательный заголовок
_pclose <stdio.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
_pipe
_popen, _wpopen
perror , _wperror
Статья • 03.04.2023
Синтаксис
C
void perror(
);
void _wperror(
);
Параметры
message
Комментарии
Функция perror выводит сообщение об ошибке в stderr . _wperror — это версия
_perror с расширенными символами; аргумент message для _wperror — строка
Для получения точных результатов вызовите perror сразу после того, как
подпрограмма библиотеки возвращает ошибку. В противном случае последующие
вызовы могут перезаписать значение errno .
Требования
Подпрограмма Обязательный заголовок
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_perror.c
*/
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <share.h>
int fh;
else
_close( fh );
Output
clearerr
ferror
) Важно!
Синтаксис
C
int _pipe(
int *pfds,
int textmode
);
Параметры
pfds
psize
textmode
Файловый режим.
Возвращаемое значение
Возвращает 0 в случае успеха. Возвращает значение -1, указывающее на ошибку.
При возникновении ошибки параметру errno присваивается одно из следующих
значений:
EMFILE , которое означает, что больше нет доступных дескрипторов файлов.
EINVAL , которое означает, что либо массив pfds является указателем NULL,
Комментарии
Функция _pipe создает искусственный канал ввода-вывода, который программа
использует для передачи сведений другим программам. Канал напоминает файл,
так как он имеет указатель на файл, дескриптор файла или оба файла. Кроме того,
его можно считывать из стандартной библиотеки или записывать в него с
помощью функций ввода и вывода стандартной библиотеки. Однако канал не
представляет конкретный файл или устройство. Вместо этого он представляет
временное хранилище в памяти, которое не зависит от собственной памяти
программы и полностью контролируется операционной системой.
Функция _pipe похожа на функцию _open , но открывает канал для чтения и записи
и возвращает два дескриптора файла, а не один. Программа может использовать
обе стороны канала или закрыть ту сторону, которая не используется. Например,
обработчик команд в Windows создает канал во время выполнения команды, такой
как PROGRAM1 | PROGRAM2 .
Функция _pipe возвращает два дескриптора файлов для канала в аргументе pfds .
Элемент pfds [0] содержит дескриптор чтения, а элемент pfds [1] содержит
дескриптор записи. Дескрипторы файлов канала используются точно так же, как и
другие дескрипторы файлов. (Низкоуровневые функции _read ввода и вывода,
которые _write могут считывать и записывать данные в канал.) Чтобы определить
условие завершения канала, проверьте _read запрос, возвращающий значение 0 в
виде числа прочитанных байтов.
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
1 2
_pipe <io.h> <fcntl.h> <errno.h>
1
Для _O_BINARY и _O_TEXT определений.
2
errno определения.
Дополнительные сведения о совместимости см. в разделе Compatibility.
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример 1
C
// crt_pipe.c
*/
#include <stdlib.h>
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
#include <process.h>
#include <math.h>
enum PIPES { READ, WRITE }; /* Constants 0 and 1 for READ and WRITE */
#define NUMPROBLEM 8
int fdpipe[2];
char hstr[20];
if( argc == 1 )
exit( 1 );
*/
hstr, NULL ) ) == -1 )
*/
_close( fdpipe[READ] );
_close( fdpipe[WRITE] );
else
Output
Пример 2
Пример кода — это базовое приложение фильтра. Он создает приложение
crt_pipe_beeper после создания канала, который направляет созданное
// crt_pipe_beeper.c
#include <stdio.h>
#include <string.h>
int main()
int i;
for(i=0;i<10;++i)
return 0;
// crt_pipe_BeepFilter.C
// arguments: crt_pipe_beeper.exe
#include <windows.h>
#include <process.h>
#include <memory.h>
#include <string.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#define READ_FD 0
#define WRITE_FD 1
#define BEEP_CHAR 7
char szBuffer[OUT_BUFF_SIZE];
if (*szPos == nChar)
--nRet;
--szPos;
return nRet;
if (argc >= 2)
HANDLE hProcess;
int fdStdOut;
int fdStdOutPipe[2];
return 1;
fdStdOut = _dup(_fileno(stdout));
if(_dup2(fdStdOutPipe[WRITE_FD], _fileno(stdout)) != 0)
return 2;
_close(fdStdOutPipe[WRITE_FD]);
// Spawn process
if(_dup2(fdStdOut, _fileno(stdout)) != 0)
return 3;
_close(fdStdOut);
if(hProcess)
int nOutRead;
nOutRead = _read(fdStdOutPipe[READ_FD],
szBuffer, OUT_BUFF_SIZE);
if(nOutRead)
if(!GetExitCodeProcess(hProcess,(unsigned long*)&nExitCode))
return 4;
return nExitCode;
Output
_open, _wopen
_popen , _wpopen
Статья • 03.04.2023
) Важно!
Синтаксис
C
FILE *_popen(
);
FILE *_wpopen(
Параметры
command
mode
Возвращаемое значение
Возвращает поток, связанный с одним концом созданного канала. Другой конец
канала связан со стандартным инициированным потоком ввода и вывода команд.
Функции возвращают ошибку NULL . Если ошибка вызвана недопустимым
параметром, errno для параметра задано значение EINVAL . Сведения о допустимых
режимах см. в разделе "Примечания".
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
Комментарии
Функция _popen создает канал. Затем он асинхронно выполняет порожденную
копию командного процессора и использует в command качестве командной строки.
Символьная строка mode указывает тип запрошенного доступа, как показано ниже.
Режим Описание
доступа
7 Примечание
Требования
Подпрограмма Обязательный заголовок
_popen <stdio.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// popen.c
*/
#include <stdio.h>
#include <stdlib.h>
int main(void)
char psBuffer[128];
FILE* pPipe;
*/
exit(1);
puts(psBuffer);
if (endOfFileVal)
else
В выходных данных предполагается, что в текущем каталоге есть только один файл
с расширением .c имени файла.
Output
Directory of D:\proj\console\test1
Process returned 0
_pclose
_pipe
pow , powf , powl
Статья • 03.04.2023
Синтаксис
C
Параметры
x
База.
Экспонента.
Возвращаемое значение
Возвращает значение x y . Сообщение об ошибке не выводится в случае
переполнения или потери значимости.
x != 0,0 и y == 0,0 1
x == 0,0 и y == 0,0 1
(например, 1.0E100).
Так как C++ допускает перегрузку, можно вызывать любые перегрузки pow . В
программе C, если вы не используете <tgmath.h> макрос для вызова этой функции,
pow всегда принимает два double значения и возвращает double значение.
Требования
Подпрограмма Обязательный заголовок (C) Обязательный заголовок (C++)
Пример
C
// crt_pow.c
#include <math.h>
#include <stdio.h>
z = pow( x, y );
Output
_CIpow
printf , _printf_l , wprintf , _wprintf_l
Статья • 03.04.2023
Синтаксис
C
int printf(
argument]...
);
int _printf_l(
_locale_t locale [,
argument]...
);
int wprintf(
argument]...
);
int _wprintf_l(
_locale_t locale [,
argument]...
);
Параметры
format
Формат объекта.
argument
Необязательные аргументы.
locale
Возвращаемое значение
Возвращает число выведенных символов или отрицательное значение в случае
ошибки. В противном format случае NULL вызывается обработчик недопустимых
параметров, как описано в разделе "Проверка параметров". Если выполнение
может быть продолжено, функция возвращает -1 и устанавливает errno в значение
EINVAL . Если EOF (0xFFFF) встречается в argument , функция возвращает -1.
Комментарии
Функция printf форматирует и выводит последовательность символов и значений
в стандартный поток вывода, stdout . Если за строкой format следуют аргументы,
строка format должна содержать спецификации, которые определяют формат
вывода для аргументов. printf и fprintf ведут себя одинаково, за исключением
того, что printf выходные данные записываются stdout вместо назначения типа
FILE .
Output
Line one
Line two
) Важно!
Требования
Подпрограмма Обязательный заголовок
) Важно!
Начиная с Windows 10 версии 2004 (сборка 19041), printf семейство функций
выводит точно представленные числа с плавающей запятой в соответствии с
правилами IEEE 754 для округления. В предыдущих версиях Windows точно
представленные числа с плавающей запятой, заканчивающиеся на "5", всегда
округлялись вверх. IEEE 754 утверждает, что они должны округляются до
ближайшей четной цифры (также известной как "Округление банкира").
Например, оба printf("%1.0f", 1.5) и printf("%1.0f", 2.5) должны
округляется до 2. Ранее 1,5 округлялось до 2 и 2,5 округлялось до 3. Это
изменение влияет только на точно представляемые числа. Например, 2.35
(который при представлении в памяти приближается к
2,350000000000000000008) продолжает округляется до 2,4. Округление,
выполняемое этими функциями, также учитывает режим округления с
плавающей запятой, заданный параметром fesetround. Ранее округление
всегда выбрало FE_TONEAREST поведение. Это изменение влияет только на
программы, созданные с помощью Visual Studio 2019 версии 16.2 и более
поздних версий. Чтобы использовать устаревшее поведение округления с
плавающей запятой, свяжите с legacy_stdio_float_rounding.obj.
Пример
C
// crt_printf.c
#include <stdio.h>
char ch = 'h',
*string = "computer";
*wstring = L"Unicode";
double fp = 251.7366;
// Display integers
"Unsigned: %u\n",
// Display decimals
0x10, 010, 10 );
// Display characters
"%10c%5hc%5C%5lc\n",
L"%10C%5hc%5c%5lc\n",
// Display strings
"%25.4hs\n %S%25.3ls\n",
L"%25.4hs\n %s%25.3ls\n",
// Display pointer
Integer formats:
Digits 10 equal:
h h w w
h h w w
computer
comp
Unicode Uni
computer
comp
Unicode Uni
Real numbers:
Локаль
fopen, _wfopen
Функции vprintf
_set_output_format
_printf_p , _printf_p_l , _wprintf_p ,
_wprintf_p_l
Статья • 03.04.2023
Синтаксис
C
int _printf_p(
argument]...
);
int _printf_p_l(
_locale_t locale [,
argument]...
);
int _wprintf_p(
argument]...
);
int _wprintf_p_l(
_locale_t locale [,
argument]...
);
Параметры
format
Формат объекта.
argument
Необязательные аргументы.
locale
Комментарии
Функция _printf_p форматирует и выводит последовательность символов и
значений в стандартный поток вывода, stdout . Если за строкой format следуют
аргументы, строка format должна содержать спецификации, которые определяют
формат вывода для аргументов (см. раздел Позиционные параметры printf_p).
Юникод.
) Важно!
Если format или argument нет NULL , либо строка формата содержит недопустимые
символы форматирования, _printf_p а _wprintf_p функции вызывают обработчик
недопустимых параметров, как описано в разделе "Проверка параметров". Если
выполнение может быть продолжено, функция возвращает -1 и устанавливает
errno в значение EINVAL .
Требования
Подпрограмма Обязательный заголовок
) Важно!
// crt_printf_p.c
// are used.
#include <stdio.h>
// Positional arguments
// Resume arguments
// Width argument
Output
Reusing arguments: 10 10 10 10
Локаль
fopen, _wfopen
Функции vprintf
printf_s , _printf_s_l , wprintf_s ,
_wprintf_s_l
Статья • 03.04.2023
Синтаксис
C
int printf_s(
argument]...
);
int _printf_s_l(
_locale_t locale [,
argument]...
);
int wprintf_s(
argument]...
);
int _wprintf_s_l(
_locale_t locale [,
argument]...
);
Параметры
format
Формат объекта.
argument
Необязательные аргументы.
locale
Комментарии
Функция printf_s форматирует и выводит последовательность символов и
значений в стандартный поток вывода, stdout . Если за строкой format следуют
аргументы, строка format должна содержать спецификации, которые определяют
формат вывода для аргументов.
Output
Line one
Line two
) Важно!
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_printf_s.c
*/
#include <stdio.h>
double fp = 251.7366;
/* Display integers. */
0x10, 010, 10 );
/* Display characters. */
/* Display strings. */
/* Display pointer. */
Integer formats:
Digits 10 equal:
h h w w
h h w w
computer
comp
Unicode Uni
computer
comp
Unicode Uni
Real numbers:
Локаль
fopen, _wfopen
Функции vprintf
_purecall
Статья • 03.04.2023
Синтаксис
C
Remarks
Эта _purecall функция представляет собой сведения о реализации компилятора
Microsoft C++. Эта функция не предназначена для непосредственного вызова кода
и не имеет открытого объявления заголовка. Он описан здесь, так как он является
общедоступным экспортом библиотеки среды выполнения C.
Вызов чистой виртуальной функции является ошибкой, так как она не имеет
реализации. При вызове чистой виртуальной функции компилятор создает код для
вызова этой функции обработчика ошибок _purecall . По умолчанию _purecall
завершает программу. _purecall Перед завершением работы функции она
вызывает _purecall_handler функцию, если она была задана для процесса. Можно
установить собственный обработчик ошибок для вызовов чистых виртуальных
функций, который будет перехватывать их в целях отладки или ведения отчетности.
Чтобы использовать собственный обработчик ошибок, создайте функцию с
сигнатурой _purecall_handler , а затем с помощью _set_purecall_handler установите
ее в качестве текущего обработчика.
Требования
Функция _purecall не имеет объявления заголовка. Typedef _purecall_handler
определяется в <stdlib.h>.
_get_purecall_handler, _set_purecall_handler
putc , putwc
Статья • 03.04.2023
Синтаксис
C
int putc(
int c,
FILE *stream
);
wint_t putwc(
wchar_t c,
FILE *stream
);
Параметры
c
stream
Возвращаемое значение
Возвращает записанный символ. Чтобы указать ошибку или условие окончания
файла, putc putchar возвращается EOF ; putwc и putwchar возвращается WEOF . Для
всех четырех подпрограмм используйте ferror или feof , чтобы проверить наличие
ошибки или конца файла. Если передается пустой указатель для stream , вызывается
обработчик недопустимых параметров, как описано в разделе Проверка
параметров. Если выполнение разрешено продолжать, эти функции возвращают
EOF или WEOF и устанавливают для значение . EINVAL errno
Комментарии
Подпрограмма putc записывает отдельный символ c в выходные данные stream в
текущей позиции. Любое целое число может быть передано для putc , но
записываются только младшие 8 битов. Подпрограмма putchar идентична putc( c,
stdout ) . Если возникает ошибка чтения, то в каждой подпрограмме для каждого
потока устанавливается индикатор ошибки. putc и putchar похожи на и
_fputchar соответственно, но реализуются как функции и макросы (см. статью
Требования
Подпрограмма Обязательный заголовок
putc <stdio.h>
Пример
C
// crt_putc.c
*/
#include <stdio.h>
FILE *stream;
int ch;
ch = 0;
stream = stdout;
Выходные данные
Output
См. также
Потоковый ввод-вывод
fputc, fputwc
getc, getwc
_putc_nolock , _putwc_nolock
Статья • 03.04.2023
Синтаксис
C
int _putc_nolock(
int c,
FILE *stream
);
wint_t _putwc_nolock(
wchar_t c,
FILE *stream
);
Параметры
c
stream
Возвращаемое значение
См. putc, putwc.
Комментарии
_putc_nolock и _putwc_nolock идентичны версиям без суффикса _nolock , за
исключением того, что они не защищены от помех со стороны других потоков. Они
могут выполняться быстрее, так как они не несут накладных расходов, связанных с
блокировкой других потоков. Используйте эти функции только в потокобезопасных
контекстах, например в однопоточных приложениях или если вызываемая область
уже обрабатывает изоляцию потоков.
Функция _putwc_nolock является версией функции _putc_nolock с расширенными
символами; обе функции ведут себя одинаково, если поток открыт в режиме ANSI.
Функция _putc_nolock на данный момент не поддерживает вывод данных в поток в
кодировке Юникод.
Требования
Подпрограмма Обязательный заголовок
_putc_nolock <stdio.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_putc_nolock.c
*/
#include <stdio.h>
FILE *stream;
int ch;
ch = 0;
stream = stdout;
Выходные данные
Output
См. также
Потоковый ввод-вывод
fputc, fputwc
getc, getwc
putch
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
int _putch(
int c
);
wint_t _putwch(
wchar_t c
);
Параметры
c
Возвращаемое значение
Возвращает значение c в случае успешного выполнения. Если _putch ошибка
завершается ошибкой, она возвращается EOF ; в _putwch случае сбоя возвращается
WEOF .
Комментарии
Эти функции записывают символ c напрямую в консоль (без буферизации). В
Windows NT _putwch записывает символы Юникода с помощью текущего
параметра языкового стандарта консоли.
Требования
Подпрограмма Обязательный заголовок
_putch <conio.h>
_putwch <conio.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
См. пример для _getch.
_getch, _getwch
_putch_nolock , _putwch_nolock
Статья • 03.04.2023
) Важно!
Синтаксис
C
int _putch_nolock(
int c
);
wint_t _putwch_nolock(
wchar_t c
);
Параметры
c
Возвращаемое значение
Возвращает значение c в случае успешного выполнения. В случае _putch_nolock
сбоя возвращается EOF ; в случае _putwch_nolock сбоя возвращается WEOF .
Комментарии
_putch_nolock и _putwch_nolock идентичны _putch и _putwch соответственно, за
исключением того, что они не защищены от помех со стороны других потоков. Они
могут выполняться быстрее, так как они не несут накладных расходов, связанных с
блокировкой других потоков. Используйте эти функции только в потокобезопасных
контекстах, например в однопоточных приложениях или если вызываемая область
уже обрабатывает изоляцию потоков.
Требования
Подпрограмма Обязательный заголовок
_putch_nolock <conio.h>
_putwch_nolock <conio.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
_getch, _getwch
putchar , putwchar
Статья • 03.04.2023
Синтаксис
C
int putchar(
int c
);
wint_t putwchar(
wchar_t c
);
Параметры
c
Возвращаемое значение
Возвращает записанный символ. Чтобы указать ошибку или условие завершения
файла, putc возвратить EOF putchar и putwc putwchar вернуть . WEOF Для всех
четырех подпрограмм используйте ferror или feof проверьте наличие ошибки или
окончания файла. При передаче указателя NULL для stream этих функций создается
исключение недопустимого параметра, как описано в разделе "Проверка
параметров". Если выполнение разрешено продолжать, они возвращают EOF или
WEOF задают значение errno EINVAL .
Комментарии
Подпрограмма putc записывает отдельный символ c в выходные данные stream в
текущей позиции. Любое целое число может быть передано для putc , но
записываются только младшие 8 битов. Подпрограмма putchar идентична putc( c,
stdout ) . Если возникает ошибка чтения, то в каждой подпрограмме для каждого
Требования
Подпрограмма Обязательный заголовок
putchar <stdio.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_putchar.c
*/
#include <stdio.h>
FILE *stream;
int ch;
ch = 0;
ch = putchar( *p );
Выходные данные
Output
См. также
Потоковый ввод-вывод
fputc, fputwc
getc, getwc
_putchar_nolock , _putwchar_nolock
Статья • 03.04.2023
Синтаксис
C
int _putchar_nolock(
int c
);
wint_t _putwchar_nolock(
wchar_t c
);
Параметры
c
Возвращаемое значение
См. описание функций putchar, putwchar.
Комментарии
putchar_nolock и _putwchar_nolock идентичны версиям без суффикса _nolock , за
исключением того, что они не защищены от помех со стороны других потоков. Они
могут выполняться быстрее, так как они не несут накладных расходов, связанных с
блокировкой других потоков. Используйте эти функции только в потокобезопасных
контекстах, например в однопоточных приложениях или если вызываемая область
уже обрабатывает изоляцию потоков.
Требования
Подпрограмма Обязательный заголовок
_putchar_nolock <stdio.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_putchar_nolock.c
*/
#include <stdio.h>
FILE *stream;
int ch;
ch = 0;
ch = _putchar_nolock( *p );
}
Выходные данные
Output
См. также
Потоковый ввод-вывод
fputc, fputwc
fgetc, fgetwc
putenv
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
int _putenv(
);
int _wputenv(
);
Параметры
envstring
Возвращаемое значение
Функции возвращают 0 в случае успешного выполнения или -1 при наличии
ошибки.
Комментарии
Функция _putenv добавляет новые переменные среды или изменяет значения
существующих переменных среды. Переменные среды определяют среду, в
которой выполняется процесс (например, путь поиска по умолчанию для
библиотек, связываемых с программой). _wputenv — это версия _putenv с
расширенными символами; аргумент envstring для _wputenv — строка
расширенных символов.
7 Примечание
Требования
Подпрограмма Обязательный заголовок
_putenv <stdlib.h>
Пример
Пример использования _putenv см. в разделе getenv, _wgetenv.
getenv, _wgetenv
_searchenv, _wsearchenv
_putenv_s , _wputenv_s
Статья • 03.04.2023
Создает, изменяет или удаляет переменные среды. Эти функции являются версиями
_putenv, _wputenv которые имеют улучшения безопасности, как описано в разделе
Функции безопасности в CRT.
) Важно!
Синтаксис
C
errno_t _putenv_s(
);
errno_t _wputenv_s(
);
Параметры
varname
value_string
Возвращаемое значение
Возвращает 0 в случае успешного выполнения операции или код ошибки.
Условия ошибок
varname value_string Возвращаемое значение
Комментарии
Функция _putenv_s добавляет новые переменные среды или изменяет значения
существующих переменных среды. Переменные среды определяют среду, в
которой выполняется процесс (например, путь поиска по умолчанию для
библиотек, связываемых с программой). _wputenv_s — это версия _putenv_s с
расширенными символами; аргумент envstring для _wputenv_s — строка
расширенных символов.
7 Примечание
Требования
Подпрограмма Обязательный заголовок
_putenv_s <stdlib.h>
Пример
Пример использования см. в разделе , _wgetenv_s.getenv_s _putenv_s
getenv, _wgetenv
_searchenv, _wsearchenv
puts , _putws
Статья • 03.04.2023
Синтаксис
C
int puts(
);
int _putws(
);
Параметры
str
Выходная строка.
Возвращаемое значение
Возвращает неотрицательное значение в случае успешного выполнения. В случае
puts сбоя возвращается EOF ; в случае _putws сбоя возвращается WEOF . Если str
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
Комментарии
Функция puts записывает str данные в стандартный выходной поток stdout ,
заменяя завершающий пустой символ строки ('\0') символом новой строки ('\n') в
выходном потоке.
Функция _putws является версией функции puts с расширенными символами; обе
функции ведут себя одинаково, если поток открыт в режиме ANSI. Функция puts на
данный момент не поддерживает вывод данных в поток в кодировке Юникод.
Требования
Подпрограмма Обязательный заголовок
puts <stdio.h>
_putws <stdio.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_puts.c
#include <stdio.h>
Выходные данные
Output
См. также
Потоковый ввод-вывод
fputs, fputws
fgets, fgetws
putw
Статья • 03.04.2023
Синтаксис
C
int _putw(
int binint,
FILE *stream
);
Параметры
binint
stream
Возвращаемое значение
Возвращает записанное значение. Возвращаемое значение EOF может указывать на
ошибку. Так как EOF также является допустимым целочисленным значением,
используйте ferror для подтверждения ошибки. Если stream это пустой указатель,
вызывается обработчик недопустимых параметров, как описано в разделе
"Проверка параметров". Если выполнение может быть продолжено, эта функция
задает для errno значение EINVAL и возвращает EOF .
Комментарии
Функция _putw записывает двоичное значение типа int в текущее положение
потока. _putw Не влияет на выравнивание элементов в потоке и не предполагает
специального выравнивания. Функция _putw предназначена в основном для
обеспечения совместимости с предыдущими библиотеками. При использовании
функции _putw могут возникнуть проблемы переносимости, связанные с размером
int и порядком байтов в int в разных системах.
Требования
Подпрограмма Обязательный заголовок
_putw <stdio.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_putw.c
*/
#include <stdio.h>
#include <stdlib.h>
FILE *stream;
unsigned u;
exit( 1 );
clearerr_s( stream );
exit( 1 );
fclose( stream );
Выходные данные
Output
См. также
Потоковый ввод-вывод
_getw
_query_new_handler
Статья • 03.04.2023
Синтаксис
C
_PNH _query_new_handler(
void
);
Возвращаемое значение
Возвращает адрес текущей new подпрограммы обработчика, заданный
параметром _set_new_handler .
Комментарии
Функция C++ _query_new_handler возвращает адрес текущей функции обработки
исключений, заданной функцией C++ _set_new_handler . _set_new_handler
используется для указания функции обработки исключений, которая позволяет
получить контроль, если new оператору не удается выделить память.
Дополнительные сведения см. в описании new и delete операторах в справочнике
по языку C++.
Требования
Подпрограмма Обязательный заголовок
_query_new_handler <new.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
См. также раздел
Выделение памяти
free
_query_new_mode
Статья • 03.04.2023
Синтаксис
C
int _query_new_mode(
void
);
Возвращаемое значение
Возвращает текущий new режим обработчика, а именно 0 или 1 для malloc .
Возвращаемое значение 1 указывает, что при сбое выделения памяти вызывает
подпрограмму new обработчика; возвращаемое значение 0 указывает на то, malloc
что это не так.
Комментарии
Функция C++ _query_new_mode возвращает целое число, указывающее new режим
обработчика, заданный функцией C++ _set_new_mode для malloc. Режим new
обработчика указывает, вызывает ли подпрограмму new обработчика при сбое
выделения памяти, malloc как задано параметром _set_new_handler. По умолчанию
malloc не вызывает подпрограмму обработчика new при сбое. Вы можете
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
_query_new_mode <new.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
calloc
free
realloc
_query_new_handler
quick_exit
Статья • 03.04.2023
Синтаксис
C
int status
);
Параметры
status
Возвращаемое значение
Функция quick_exit не может вернуться к вызывающей объекту.
Комментарии
Функция quick_exit приводит к завершению работы программы в обычном
режиме. Она не вызывает функции, зарегистрированные atexit , _onexit или
обработчики сигналов, зарегистрированные функцией signal . Поведение не
определено, если quick_exit вызывается несколько раз или если также вызывается
функция exit .
abort
atexit
_execФункции , _wexec
_onexit, _onexit_m
_spawnФункции , _wspawn
system, _wsystem
qsort
Статья • 03.04.2023
Синтаксис
C
void qsort(
void *base,
size_t number,
size_t width,
);
Параметры
base
number
width
compare
Комментарии
Функция qsort реализует алгоритм быстрой сортировки для сортировки массива
из number элементов, каждый из которых имеет размер width байт. Аргумент base
является указателем на начало сортируемого массива. Функция qsort
перезаписывает этот массив с использованием отсортированных элементов.
Эта функция проверяет свои параметры. Если compare или number нет NULL , или
base если ненулевое NULL number значение или width меньше нуля, вызывается
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_qsort.c
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int i;
argv++;
argc--;
printf( "\n" );
Output
bsearch
_lsearch
qsort_s
Статья • 03.04.2023
Синтаксис
C
void qsort_s(
void *base,
size_t num,
size_t width,
void * context
);
Параметры
base
number
width
compare
context
Комментарии
Функция qsort_s реализует алгоритм быстрой сортировки для сортировки массива
из number элементов, каждый из которых имеет размер width байт. Аргумент base
является указателем на начало сортируемого массива. Функция qsort_s
перезаписывает этот массив отсортированными элементами. Аргумент compare
является указателем на пользовательскую подпрограмму, которая сравнивает два
элемента массива и возвращает значение, показывающее, как соотносятся их
значения. Во время сортировки функция qsort_s вызывает подпрограмму compare
один или несколько раз, передавая указатели на два элемента массива при каждом
вызове:
Условия ошибок
Функция qsort_s действует так же, как и функция qsort , но имеет параметр
context и задает значение параметра errno . Параметр context позволяет
функциям сравнения использовать указатель объекта для доступа к
функциональным возможностям объекта или другим сведениям, недоступным
через указатель элемента. Добавление параметра делает qsort_s более
безопасным, так как context его можно использовать, чтобы избежать ошибок
повторного context входа, введенных с помощью статических переменных, чтобы
сделать общую информацию доступной compare для функции.
Требования
Подпрограмма Обязательный заголовок
Пример
В следующем примере показано, как использовать context параметр в qsort_s
функции. Параметр context упрощает выполнение потокобезопасных сортировок.
Вместо статических переменных, которые необходимо синхронизировать для
обеспечения потокобезопасности, можно передавать разные параметры context
для каждой сортировки. В этом примере в качестве параметра context
используется объект языкового стандарта.
C++
// crt_qsort_s.cpp
#include <stdlib.h>
#include <stdio.h>
#include <search.h>
#include <process.h>
#include <locale.h>
#include <locale>
#include <windows.h>
// The sort order is dependent on the code page. Use 'chcp' at the
// the command prompt codepage must match the codepage used here:
#define CODEPAGE_850
#ifdef CODEPAGE_850
// is the n tilde.
"weit" };
#endif
#ifdef CODEPAGE_1252
"weit" };
#endif
// conflicts.
int compare( void *pvlocale, const void *str1, const void *str2)
char s1[256];
char s2[256];
printf("\n");
sort_array(array1, 6, locale(GERMAN_LOCALE));
sort_array(array2, 3, locale(SPANISH_LOCALE));
sort_array(array3, 3, locale(ENGLISH_LOCALE));
int main( )
int i;
HANDLE threads[3];
printf("Unsorted input:\n");
print_array(array1, 6);
print_array(array2, 3);
print_array(array3, 3);
threads[0] = reinterpret_cast<HANDLE>(
threads[1] = reinterpret_cast<HANDLE>(
threads[2] = reinterpret_cast<HANDLE>(
if (threads[i] == reinterpret_cast<HANDLE>(-1))
exit(1);
print_array(array1, 6);
print_array(array2, 3);
print_array(array3, 3);
Unsorted input:
Sorted output:
bsearch_s
_lsearch_s
qsort
raise
Статья • 03.04.2023
7 Примечание
Синтаксис
C
int raise(
int sig
);
Параметры
sig
Возвращаемое значение
В случае успеха raise возвращает 0. В противном случае возвращается ненулевое
значение.
Комментарии
Функция raise отправляет sig выполняющейся программе. Если в предыдущем
вызове была signal установлена функция обработки сигналов для sig , raise эта
функция выполняется. Если функция обработчика не установлена, выполняется
действие по умолчанию, связанное со значением sig сигнала, как показано ниже.
Сигнал Описание Поведение по умолчанию
Требования
Подпрограмма Обязательный заголовок
raise <signal.h>
abort
signal
rand
Статья • 03.04.2023
Синтаксис
C
int rand(void);
Возвращаемое значение
Функция rand возвращает псевдослучайное число, как описано выше. Ошибка не
возвращается.
Комментарии
Функция rand возвращает псевдослучайное целое число в диапазоне от 0 до
RAND_MAX (32767). srand Используйте функцию для заполнения генератора
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
rand <stdlib.h>
Пример
C
// crt_rand.c
void SimpleRandDemo(int n)
// See https://learn.microsoft.com/cpp/standard-library/random
int main(void)
srand(1792);
SimpleRandDemo(10);
}```
```Output
5890
1279
19497
1207
11420
3377
15317
29489
9716
23323
-82
-46
50
77
-47
32
76
-13
-58
90
rand_s
Синтаксис
C
Параметры
randomValue
Возвращаемое значение
Ноль в случае успешного выполнения; в противном случае — код ошибки. Если
входной указатель _randomValue_ является указателем NULL , функция вызывает
обработчик недопустимых параметров, как описано в разделе Проверка
параметров. Если выполнение может быть продолжено, функция возвращает
EINVAL и устанавливает для параметра errno значение EINVAL . Если функция
Комментарии
Функция rand_s записывает псевдослучайное целое число в диапазоне от 0 до
UINT_MAX в указатель ввода. Функция rand_s использует операционную систему для
#define _CRT_RAND_S
#include <stdlib.h>
Требования
Подпрограмма Обязательный заголовок
rand_s <stdlib.h>
Пример
C
// crt_rand_s.c
// stdlib.h.
#define _CRT_RAND_S
#include <stdlib.h>
#include <stdio.h>
#include <limits.h>
int i;
errno_t err;
if (err != 0)
printf_s("\n");
if (err != 0)
10
32.6617
29.4471
11.5413
6.41924
20.711
60.2878
61.0094
20.1222
80.9192
65.0712
srand
read
Статья • 03.04.2023
Синтаксис
C
int _read(
);
Параметры
fd
buffer
buffer_size
Возвращаемое значение
_read возвращает число прочитанных байтов, которое может быть меньше, чем
buffer_size buffer_size если в файле осталось меньше байтов или файл был
открыт в текстовом режиме. В текстовом режиме каждая пара \r\n веб-канала
возврата каретки заменяется одним символом \n веб-канала строки. В
возвращаемом значении учитывается только символ однострочного веб-канала.
Замена не влияет на указатель файла.
Если функция пытается прочитать конечную часть файла, она возвращает 0. Если
fd недопустимый, файл не открыт для чтения или заблокирован, вызывается
Комментарии
Функция _read считывает максимум байтов buffer_size из buffer файла,
связанного с fd . Операция чтения начинается с текущего положения указателя
файла, связанного с данным файлом. После операции чтения указатель файла
указывает на следующий непрочитанный символ.
Если файл был открыт в текстовом режиме, чтение завершается, когда _read
встречает символ CTRL + Z, который интерпретируется как индикатор конца файла.
Используется для _lseek очистки индикатора конца файла.
Требования
Подпрограмма Обязательный заголовок
_read <io.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_read.c
*/
#include <io.h>
#include <stdlib.h>
#include <stdio.h>
#include <share.h>
char buffer[60000];
exit( 1 );
/* Read in input: */
else
_close( fh );
Line one.
Line two.
Вывод
Output
См. также
Низкоуровневый ввод-вывод
_creat, _wcreat
fread
_open, _wopen
_write\
realloc
Статья • 03.04.2023
Синтаксис
C
void *realloc(
void *memblock,
size_t size
);
Параметры
memblock
size
Возвращаемое значение
realloc возвращает указатель void в перераспределенном (и, возможно,
перемещенном) блоке памяти.
Комментарии
7 Примечание
realloc Не был обновлен для реализации поведения C17, так как новое
поведение несовместимо с операционной системой Windows.
аргумент . realloc не обнуляет только что выделенную память при росте буфера.
Функция realloc задает для параметра errno значение ENOMEM , если выделение
памяти завершается сбоем или количество запрошенной памяти превышает
_HEAP_MAXREQ . Сведения об этом и других кодах ошибок см. в разделе errno,
_set_new_mode(1);
в начале программы, или связать с NEWMODE. OBJ (см. раздел Параметры ссылки).
Если приложение связано с отладочной версией библиотек времени выполнения
C, realloc разрешается в _realloc_dbg. Дополнительные сведения об управлении
кучей в процессе отладки см. в разделе Куча отладки CRT.
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_realloc.c
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
size_t size;
exit( 1 );
== NULL )
exit( 1 );
size );
free( buffer );
exit( 0 );
Output
calloc
free
malloc
_realloc_dbg
Статья • 03.04.2023
Синтаксис
C
void *_realloc_dbg(
void *userData,
size_t newSize,
int blockType,
int linenumber
);
Параметры
userData
newSize
blockType
filename
linenumber
Возвращаемое значение
При успешном завершении эта функция возвращает указатель на пользовательную
часть перераспределенного блока памяти, вызывает новую функцию обработчика
или возвращает . NULL Полное описание поведения возвращения см. в следующем
разделе "Примечания". Дополнительные сведения об использовании новой
функции обработчика см. в realloc этой функции.
Комментарии
_realloc_dbg — отладочная версия realloc функции. Если _DEBUG параметр не
_realloc_dbg задает для errno значение ENOMEM в случае сбоя выделения памяти
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
_realloc_dbg <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Пример
См. пример в _msize_dbg статье.
_malloc_dbg
_recalloc
Статья • 03.04.2023
Синтаксис
C
void *_recalloc(
void *memblock
size_t num,
size_t size
);
Параметры
memblock
number
Число элементов.
size
Возвращаемое значение
_recalloc возвращает указатель void в перераспределенном (и, возможно,
перемещенном) блоке памяти.
Комментарии
Функция _recalloc изменяет размер выделенного блока памяти. Аргумент memblock
указывает на начало блока памяти. Если memblock имеет значение NULL , _recalloc
то ведет себя так же, как calloc и и выделяет новый блок байтов number * size .
Каждый элемент инициализируется значением 0. Если memblock параметр не
NULL имеет значение , это должен быть указатель, возвращенный предыдущим
Так как новый блок может находиться в новом расположении памяти, указатель,
возвращаемый параметром _recalloc , не гарантируется, что он будет указателем,
передаваемым memblock через аргумент .
Функция _recalloc задает для параметра errno значение ENOMEM , если выделение
памяти завершается сбоем или количество запрошенной памяти превышает
_HEAP_MAXREQ . Сведения об этом и других кодах ошибок см. в разделе errno,
_doserrno, _sys_errlistи _sys_nerr.
_set_new_mode(1);
Требования
Подпрограмма Обязательный заголовок
_recalloc_dbg
_aligned_recalloc
_aligned_offset_recalloc
free
Параметры ссылок
_recalloc_dbg
Статья • 03.04.2023
Синтаксис
C
void *_recalloc_dbg(
void *userData,
size_t num,
size_t size,
int blockType,
int linenumber
);
Параметры
userData
number
size
blockType
filename
linenumber
Возвращаемое значение
При успешном завершении эта функция возвращает указатель на пользовательную
часть перераспределенного блока памяти, вызывает новую функцию обработчика
или возвращает . NULL Полное описание поведения возвращения см. в следующем
разделе "Примечания". Дополнительные сведения об использовании новой
функции обработчика см. в _recalloc этой функции.
Комментарии
_recalloc_dbg — отладочная версия _recalloc функции. Если _DEBUG параметр не
определен, каждый вызов _recalloc_dbg сводится к вызову _recalloc . И _recalloc ,
и _recalloc_dbg выполняют перераспределение блока памяти в основной куче,
однако _recalloc_dbg включает различные возможности отладки: буферы на обеих
сторонах пользовательской части блока для тестирования утечек, параметр типа
блока для отслеживания конкретных типов выделения, а также сведения о
filename / linenumber для определения источника запросов на выделение.
_recalloc_dbg задает для errno значение ENOMEM в случае сбоя выделения памяти;
Требования
Подпрограмма Обязательный заголовок
_recalloc_dbg <crtdbg.h>
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Синтаксис
C
Параметры
x
Числитель.
Знаменатель.
Возвращаемое значение
Остаток от деления x / y в виде числа с плавающей запятой. Если значение y
равно 0,0, функция remainder возвращает NaN (не число) без вызова прерывания.
Сведения о представлении спокойного NaN printf семьей см. в разделе printf, ,
_printf_l, wprintf_wprintf_l.
Комментарии
Функции remainder вычисляют оставшуюся часть r x / y с плавающей запятой
таким образом, что x = n * y + r , где n находится целое число, ближайшее к
значению x / y и n даже когда |n - x / y| = 1/2 . Если r = 0 имеет тот же знак, r
что и x .
Поскольку C++ допускает перегрузку, можно вызывать перегрузки remainder ,
которые принимают и возвращают значения float или long double . В программе
C, если для вызова этой функции не используется <макрос tgmath.h> , remainder
всегда принимает два double аргумента и возвращает значение double .
Требования
Компонент Обязательный заголовок Обязательный заголовок
(C) (C++)
Пример
C
// crt_remainder.c
#include <math.h>
#include <stdio.h>
z = remainder(w, x);
Output
The remainder of -10.00 / 3.00 is -1.000000
imaxdiv
fmod, fmodf
Удалите файл.
Синтаксис
C
int remove(
);
int _wremove(
);
Параметры
path
Возвращаемое значение
Каждая из этих функций возвращает 0, если файл был успешно удален. В
противном случае возвращается значение -1 и задает errno значение ,
указывающее EACCES , что путь указывает файл, доступный только для чтения,
указывает каталог или файл открыт, или указывает ENOENT , что имя файла или путь
не найдены.
Комментарии
Функция remove удаляет файл, указанный параметром path . _wremove является
версией _remove расширенных символов; path аргументом _wremove является
строка расширенных символов. Поведение _wremove и _remove идентично в
противном случае. Чтобы можно было удалить файл, все дескрипторы файлов
должны быть закрыты.
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, ознакомьтесь с глобальным состоянием в CRT.
Требования
Подпрограмма Обязательный заголовок
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_remove.c
#include <stdio.h>
else
Вход: crt_remove.txt
Input
Deleted 'CRT_REMOVE.TXT'
_unlink, _wunlink
remquo , remquof , remquol
Статья • 03.04.2023
Синтаксис
C
long double remquol( long double numer, long double denom, int* quo );
float remquo( float numer, float denom, int* quo ); /* C++ only */
long double remquo( long double numer, long double denom, int* quo ); /* C++
only */
Параметры
numer
Числитель.
denom
Знаменатель.
quo
Возвращаемое значение
Функция remquo возвращает остаток от деления x / y в виде числа с плавающей
запятой. Если значение y равно 0,0, функция remquo возвращает NaN (не число)
без вызова прерывания. Сведения о представлении спокойного NaN printf
семьей см. в разделе printf, , _printf_l, wprintf_wprintf_l.
Комментарии
Функция remquo вычисляет остаток x / y f с плавающей запятой таким образом,
что *, где n является целым числом, имеет тот же знак x , f что y * = + n f x и
абсолютное значение f меньше абсолютного y значения .
Требования
Компонент Обязательный заголовок (C) Обязательный заголовок (C++)
Пример
C
// crt_remquo.c
#include <math.h>
#include <stdio.h>
int quo = 0;
z = remquo(w, x, &quo);
Output
imaxdiv
fmod, fmodf
Синтаксис
C
int rename(
);
int _wrename(
);
Параметры
oldname
newname
Возвращаемое значение
Каждая из этих функций возвращает значение 0 в случае успешного выполнения.
При возникновении ошибки функция возвращает ненулевое значение и задает для
errno одно из следующих значений:
Значение Условие
errno
EACCES Файл или каталог, указанный параметром newname , уже существует или не
может быть создан (недопустимый путь); или oldname является каталогом и
newname указывает другой путь.
Комментарии
Функция rename переименовывает файл или каталог, указанный параметром
oldname , на имя, заданное параметром newname . Старое имя должно быть путем к
Требования
Подпрограмма Обязательный заголовок
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_renamer.c
*/
#include <stdio.h>
int result;
if( result != 0 )
else
Выходные данные
Output
См. также
Обработка файлов
_resetstkoflw
Статья • 03.04.2023
) Важно!
Синтаксис
C
Возвращаемое значение
Ненулевое значение, если функция завершается успешно; в противном случае —
ноль.
Комментарии
Функция _resetstkoflw выполняет восстановление после переполнения стека, что
позволяет программе продолжить работу вместо того, чтобы завершить работу с
неустранимой ошибкой. _resetstkoflw Если функция не вызывается, страницы
защиты после предыдущего исключения отсутствуют. При следующем
переполнении стека исключения отсутствуют, и процесс завершается без
предупреждения.
Если код приводит к тому, что указатель стека указывает на адрес на этой странице,
возникает исключение и система выполняет три указанных ниже действия.
На этом этапе у стека больше нет страницы защиты. В следующий раз, когда
программа увеличивает стек до того места, где она записывает за пределы стека,
это приводит к нарушению доступа.
выражения фильтра;
функции фильтра;
блока __finally .
Требования
Подпрограмма Обязательный заголовок
_resetstkoflw <malloc.h>
Пример
В следующем примере показано рекомендуемое использование функции
_resetstkoflw .
// crt_resetstkoflw.c
#include <malloc.h>
#include <stdio.h>
#include <windows.h>
_alloca(2000);
if (recurse)
recursive(recurse);
if (exception_code == EXCEPTION_STACK_OVERFLOW)
// is to be executed.
return EXCEPTION_EXECUTE_HANDLER;
else
return EXCEPTION_CONTINUE_SEARCH;
int i = 0;
__try
recursive(recurse);
__except(stack_overflow_exception_filter(GetExceptionCode()))
if (ac >= 2)
result = _resetstkoflw();
if (!result)
return 3;
return 0;
Output
loop #1
С аргументами программы:
Output
loop #1
loop #2
loop #3
loop #4
loop #5
loop #6
loop #7
loop #8
loop #9
loop #10
Описание
В следующем примере показано рекомендуемое использование функции
_resetstkoflw в программе, в которой структурированные исключения
Код
C++
// crt_resetstkoflw2.cpp
#include <malloc.h>
#include <stdio.h>
#include <windows.h>
#include <eh.h>
class Exception { };
// in a recursive function.
int a[10000];
CauseStackOverflow (i + 1);
// exception object.
if (code == EXCEPTION_STACK_OVERFLOW)
throw StackOverflowException ( );
else
throw Exception( );
int main ( )
_set_se_translator (SEHTranslator);
try
CauseStackOverflow (0);
printf("\nStack overflow!\n");
stack_reset = true;
printf("\nUnknown Exception!\n");
if (stack_reset)
result = _resetstkoflw();
// If stack reset failed, terminate the application.
if (result == 0)
exit(1);
void* pv = _alloca(100000);
return 0;
Output
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Stack overflow!
Recovered from stack overflow and allocated 100,000 bytes using _alloca.
Синтаксис
C
void rewind(
FILE *stream
);
Параметры
stream
Комментарии
Функция rewind перемещает указатель файла, связанный с stream , в начало файла.
Вызов похож rewind на
Однако, в отличие от fseek, rewind очищает как индикаторы ошибок для потока,
так и индикатор конца файла. Кроме того, в отличие от fseek, rewind не возвращает
значение, указывающее, был ли указатель успешно перемещен.
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, см. статью Глобальное состояние в CRT.
Требования
Подпрограмма Обязательный заголовок
rewind <stdio.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_rewind.c
*/
#include <stdio.h>
FILE *stream;
data1 = 1;
data2 = -37;
rewind( stream );
fclose( stream );
Выходные данные
Output
См. также
Потоковый ввод-вывод
rint , rintf , rintl
Статья • 03.04.2023
Синтаксис
C
Параметры
x
Возвращаемое значение
Функции rint возвращают значение с плавающей запятой, которое представляет
целое число, ближайшее к x . Промежуточные значения округляются согласно
текущей настройке режима округления чисел с плавающей запятой (аналогично
функциям nearbyint ). В отличие от функций nearbyint функции rint могут
вызывать исключение числа с плавающей запятой FE_INEXACT , если значение
результата отличается от аргумента. Ошибка не возвращается.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки rint , которые
принимают и возвращают значения float и long double . В программе на языке C,
если вы не используете <макрос tgmath.h> для вызова этой функции, rint всегда
принимает и возвращает double .
Требования
Компонент Заголовок C Заголовок C++
Пример
C
// crt_rint.c
#include <math.h>
#include <stdio.h>
double x = 2.499999;
float y = 2.8f;
Output
rint(2.499999) is 2
rint(-2.499999) is -2
rintf(2.800000) is 3
rintf(-2.800000) is -3
rintl(2.500000) is 3
rintl(-2.500000) is -3
fmod, fmodf
rint
rmdir
Статья • 03.04.2023
Удаляет каталог.
Синтаксис
C
int _rmdir(
);
int _wrmdir(
);
Параметры
dirname
Возвращаемое значение
Каждая из этих функций возвращает 0, если каталог был успешно удален.
Возвращаемое значение -1 указывает на ошибку и errno имеет одно из следующих
значений:
Значение Условие
errno
ENOTEMPTY Указанный путь не является каталогом, каталог не пуст, или каталогом является
текущий рабочий или корневой каталог.
Комментарии
Функция _rmdir удаляет каталог, указанный в параметре dirname . Каталог должен
быть пустым и не должен являться текущим рабочим или корневым каталогом.
Требования
Подпрограмма Обязательный заголовок
_rmdir <direct.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
См. пример для _mkdir.
_chdir, _wchdir
_mkdir, _wmkdir
rmtmp
Статья • 03.04.2023
Синтаксис
C
Возвращаемое значение
Функция _rmtmp возвращает количество закрытых и удаленных временных файлов.
Комментарии
Функция _rmtmp удаляет все временные файлы в текущем каталоге. Функция
удаляет только те файлы, которые созданы с помощью функции tmpfile ;
используйте ее только в том же самом каталоге, в котором были созданы
временные файлы.
Требования
Подпрограмма Обязательный заголовок
_rmtmp <stdio.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
См. пример для tmpfile.
_flushall
tmpfile
Синтаксис
C
int shift
);
int shift
);
int shift
);
int shift
);
Параметры
value
shift
Возвращаемое значение
Итоговое значение. Ошибка не возвращается.
Комментарии
Функции _rotl и _rotr поворот без знака value shift битами. _rotl выполняет
циклический сдвиг влево. _rotr выполняет циклический сдвиг вправо. Обе
функции переносили биты, повернутые от одного конца до другого value конца.
Требования
Подпрограмма Обязательный заголовок
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_rot.c
*/
#include <stdlib.h>
#include <stdio.h>
Выходные данные
Output
См. также
Поддержка математических функций для чисел с плавающей запятой
_lrotl, _lrotr
round , roundf , roundl
Статья • 03.04.2023
Синтаксис
C
double round(
double x
);
float round(
float x
); // C++ only
long double x
); // C++ only
float roundf(
float x
);
long double x
);
Параметры
x
Возвращаемое значение
Функции round возвращают значение с плавающей запятой, которое представляет
целое число, ближайшее к x . Промежуточные значения округляются в сторону от
нуля, независимо от настройки режима округления чисел с плавающей запятой.
Ошибка не возвращается.
Требования
Подпрограмма Обязательный заголовок
Пример
C
#include <math.h>
#include <stdio.h>
int main()
float floatValue = 2.4999999f; // float stores a value close to, but not
exactly equal to, the initializer below. floatValue will contain 2.5 because
it is the closest single precision value
// double stores a value close to, but not exactly equal to, the
initializer below. The closest double value is just slightly larger.
// long double stores a value close to, but not exactly equal to, the
initializer below. The closest long double value is just slightly larger.
return 0;
Output
roundf(2.5) is 3
roundf(-2.5) is -3
round(2.499999900000000163657887242152355611324310302734375) is 2
round(-2.499999900000000163657887242152355611324310302734375) is -2
roundl(2.499999900000000163657887242152355611324310302734375) is 2
roundl(-2.499999900000000163657887242152355611324310302734375) is -2
fmod, fmodf
Синтаксис
C
_RPTn(
reportType,
format,
...[args]
);
_RPTFn(
reportType,
format,
[args]
);
_RPTWn(
reportType,
format
[args]
);
_RPTFWn(
reportType,
format
[args]
);
Параметры
reportType
format
args
_RPT Макросы и _RPTF похожи на функцию printf , так как их можно использовать
Существуют два других макроса, которые создают отчеты отладки. Макрос _ASSERT
создает отчет, но только в том случае, если аргумент выражения имеет
FALSE значение . _ASSERTE точно так же, как _ASSERT , но включает выражение,
Requirements (Требования)
Макрос Обязательный заголовок
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Хотя эти макросы доступны при включении crtdbg.h , для выполнения приложение
должно связаться с одной из библиотек отладки, так как эти макросы вызывают
другие функции времени выполнения.
Пример
См. пример в _ASSERT статье.
Синтаксис
C
_RTC_ErrorNumber errnum
);
Параметры
errnum
Возвращаемое значение
Строка символов, которая содержит краткое описание одного из типов ошибок,
обнаруженного системой проверки на ошибки во время выполнения. Если ошибка
меньше нуля или больше или равна значению, возвращаемого параметром
_RTC_NumErrors, _RTC_GetErrDesc возвращается NULL .
Требования
Подпрограмма Обязательный заголовок
_RTC_GetErrDesc <rtcapi.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
См. также раздел
_RTC_NumErrors
Синтаксис
C
Возвращаемое значение
Целое число, представляющее общее количество ошибок, которое может быть
обнаружено проверками на ошибки во время выполнения Visual C++.
Требования
Подпрограмма Обязательный заголовок
_RTC_NumErrors <rtcapi.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Синтаксис
C
_RTC_error_fn _RTC_SetErrorFunc(
_RTC_error_fn function
);
Параметры
function
Возвращаемое значение
Ранее определенная функция обработки ошибок. Если ранее не определена
функция, возвращается NULL .
Комментарии
Не используйте эту функцию; вместо этого используйте _RTC_SetErrorFuncW . Он
сохраняется только для обратной совместимости.
Требования
Подпрограмма Обязательный заголовок
_RTC_SetErrorFunc <rtcapi.h>
Синтаксис
C
_RTC_error_fnW _RTC_SetErrorFuncW(
_RTC_error_fnW function
);
Параметры
function
Возвращаемое значение
Ранее определенная функция ошибки; или NULL , если ранее не определена
функция.
Комментарии
В новом коде используйте только _RTC_SetErrorFuncW . _RTC_SetErrorFunc включена
в библиотеку только для обеспечения обратной совместимости.
C++
int errorType,
int linenumber,
... );
где:
errorType
filename
Исходный файл, где произошел сбой, или значение NULL, если информация об
отладке недоступна.
linenumber
moduleName
format
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
_RTC_SetErrorFuncW <rtcapi.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Синтаксис
C
int _RTC_SetErrorType(
_RTC_ErrorNumber errnum,
int ErrType
);
Параметры
errnum
ErrType
игнорируется.
Возвращаемое значение
Предыдущее значение для типа ошибки, замененного . ErrType
Комментарии
По умолчанию для всех ошибок задано значение ErrType = 1, соответствующее
_CRT_ERROR . Дополнительные сведения о типах ошибок по умолчанию, таких как
_CRT_ERROR , см. в разделе _CrtDbgReport.
Требования
Подпрограмма Обязательный заголовок
_RTC_SetErrorType <rtcapi.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Синтаксис
C
double _scalb(
double x,
long exp
);
float _scalbf(
float x,
long exp
); /* x64 only */
Параметры
x
exp
Возвращаемое значение
Возвращает значение экспоненты в случае успешного выполнения. При
переполнении x (в зависимости от знака), _scalb возвращается +/- HUGE_VAL ; errno
переменная имеет значение ERANGE .
Комментарии
Функция _scalb вычисляет значение x * 2 exp .
Синтаксис
C
double scalbn(
double x,
int exp
);
float scalbn(
float x,
int exp
); // C++ only
long double x,
int exp
); // C++ only
float scalbnf(
float x,
int exp
);
long double x,
int exp
);
double scalbln(
double x,
long exp
);
float scalblnf(
float x,
long exp
);
long double x,
long exp
);
float scalbln(
float x,
long exp
); // C++ only
long double x,
long exp
); // C++ only
Параметры
x
exp
Возвращаемое значение
Функции scalbn возвращают значение x * FLT_RADIX exp в случае успешного
выполнения. При переполнении (в зависимости от знака x ) scalbn возвращает
значение +/- HUGE_VAL ; errno значение имеет значение ERANGE .
Комментарии
FLT_RADIX определяется в <float.h> как собственный радикс с плавающей запятой;
Так как C++ допускает перегрузку, можно вызывать scalbn перегрузки и scalbln ,
которые принимают и возвращают float типы или long double . В программе на
языке C, если вы не используете <макрос tgmath.h> для вызова этой функции,
scalbn всегда принимает double и и int возвращает double , а scalbln также
Требования
Компонент Заголовок C Заголовок C++
Пример
C
// crt_scalbn.c
#include <math.h>
#include <stdio.h>
double x = 6.4, y;
int p = 3;
y = scalbn( x, p );
Выходные данные
Output
См. также
Поддержка математических функций для чисел с плавающей запятой
frexp
ldexp
7 Примечание
В Visual Studio 2015 printf семейство функций и scanf было объявлено как
inline и перемещено в <stdio.h> заголовки и <conio.h> . При переносе
Синтаксис
C
int scanf(
argument]...
);
int _scanf_l(
_locale_t locale [,
argument]...
);
int wscanf(
argument]...
);
int _wscanf_l(
_locale_t locale [,
argument]...
);
Параметры
format
Необязательные аргументы.
locale
Возвращаемое значение
Возвращает число успешно преобразованных и назначенных полей;
Возвращаемое значение не включает поля, которые были прочитаны, но не
назначены. Возвращаемое значение 0 указывает, что поля не были назначены.
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
Комментарии
Функция scanf считывает данные из стандартного входного потока stdin и
записывает данные в расположение, указанное параметром argument . Каждый
параметр argument должен быть указателем на переменную, которая имеет тип,
соответствующий спецификатору типа в параметре format . Если копирование
производится между перекрывающимися строками, поведение не определено.
) Важно!
При использовании scanf для чтения строки всегда следует указывать ширину
для формата %s (например, %32s вместо %s ); в противном случае ввод в
неправильном формате может легко привести к переполнению буфера. Кроме
того, рекомендуется использовать scanf_s, _scanf_s_l, _wscanf_s_lwscanf_s или
fgets.
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_scanf.c
#include <stdio.h>
int i, result;
float fp;
char c, s[81];
// Note: scanf and wscanf are deprecated; consider using scanf_s and
wscanf_s
result = wscanf( L"%d %f %hc %lc %80S %80ls", &i, &fp, &c, &wc, s, ws );
// C4996
Input
Output
Локаль
Синтаксис
C
int scanf_s(
argument]...
);
int _scanf_s_l(
_locale_t locale [,
argument]...
);
int wscanf_s(
argument]...
);
int _wscanf_s_l(
_locale_t locale [,
argument]...
);
Параметры
format
argument
Необязательные аргументы.
locale
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
Комментарии
Функция scanf_s считывает данные из стандартного входного потока stdin и
записывает их в argument . Каждый из них argument должен быть указателем на тип
переменной, соответствующий спецификатору типа в format . Если копирование
производится между перекрывающимися строками, поведение не определено.
char s[10];
7 Примечание
wchar_t ws[10];
char c;
char c[4];
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_scanf_s.c
#include <stdio.h>
#include <stdlib.h>
int i,
result;
float fp;
char c,
s[80];
wchar_t wc,
ws[80];
wc, s, ws);
c, wc, s, ws);
Эта программа создает следующие выходные данные для этих входных данных:
Input
Output
Локаль
Синтаксис
C
int _scprintf(
argument] ...
);
int _scprintf_l(
_locale_t locale [,
argument] ...
);
int _scwprintf(
argument] ...
);
int _scwprintf_l(
_locale_t locale [,
argument] ...
);
Параметры
format
argument
Необязательные аргументы.
locale
Комментарии
Каждый argument (при наличии) преобразуется согласно соответствующей
спецификации формата в параметре format . Формат состоит из обычных символов
и имеет те же форму и функциональные возможности, что и аргумент format для
printf.
) Важно!
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt__scprintf.c
#define _USE_MATH_DEFINES
#include <stdio.h>
#include <math.h>
#include <malloc.h>
int count;
int size;
char *s = NULL;
M_PI);
size = count + 1; // the string will need one more char for the null
terminator
s = malloc(sizeof(char) * size);
M_PI);
printf("%s", s);
free( s );
Output
Функции vprintf
_scprintf_p , _scprintf_p_l ,
_scwprintf_p , _scwprintf_p_l
Статья • 03.04.2023
Синтаксис
C
int _scprintf_p(
argument] ...
);
int _scprintf_p_l(
_locale_t locale [,
argument] ...
);
int _scwprintf_p (
argument] ...
);
_locale_t locale [,
argument] ...
);
Параметры
format
argument
Необязательные аргументы.
locale
Возвращаемое значение
Возвращает число символов, которые были бы созданы, если строка была бы
напечатана либо отправлена в файл или буфер с помощью указанных кодов
форматирования. Возвращаемое значение не включает завершающий символ
NULL. Функция _scwprintf_p выполняет эту же операцию для расширенных
символов.
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
Комментарии
Каждый argument (при наличии) преобразуется согласно соответствующей
спецификации формата в параметре format . Формат состоит из обычных символов
и имеет те же форму и функциональные возможности, что и аргумент format для
printf.
) Важно!
Требования
Подпрограмма Обязательный заголовок
Использует пути в среде для поиска файла. Доступны более безопасные версии
этих функций; См. раздел_searchenv_s , _wsearchenv_s.
) Важно!
Синтаксис
C
void _searchenv(
);
void _wsearchenv(
wchar_t *pathname
);
void _searchenv(
); // C++ only
void _wsearchenv(
wchar_t (&pathname)[size]
); // C++ only
Параметры
filename
Искомая среда.
pathname
Комментарии
Процедура _searchenv ищет целевой файл в указанном домене. Переменной
varname может быть любая переменная среды или переменная, определяемая
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые
и безопасные аналоги этих функций. Дополнительные сведения см. в разделе
Безопасные перегрузки шаблонов.
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, см. статью Глобальное состояние в CRT.
Требования
Подпрограмма Обязательный заголовок
_searchenv <stdlib.h>
Пример
C
// crt_searchenv.c
#include <stdlib.h>
#include <stdio.h>
char pathbuffer[_MAX_PATH];
else
Output
getenv, _wgetenv
_putenv, _wputenv
_searchenv_s, _wsearchenv_s
_searchenv_s , _wsearchenv_s
Статья • 03.04.2023
Ищет файл, используя пути в среде. Эти версии имеют улучшения безопасности,
как описано в функциях _searchenv_wsearchenvбезопасности в CRT.
) Важно!
Синтаксис
C
errno_t _searchenv_s(
size_t numberOfElements
);
errno_t _wsearchenv_s(
wchar_t *pathname,
size_t numberOfElements
);
errno_t _searchenv_s(
); // C++ only
errno_t _wsearchenv_s(
wchar_t (&pathname)[size]
); // C++ only
Параметры
filename
varname
Искомая среда.
pathname
numberOfElements
Возвращаемое значение
Возвращает нуль в случае успеха или код ошибки в случае неудачи.
Условия ошибок
Комментарии
Процедура _searchenv_s ищет целевой файл в указанном домене. Переменной
varname может быть любая переменная среды или переменная, определяемая
пользователем и определяющая список путей к каталогам, например PATH , LIB и
INCLUDE . Поскольку процедура _searchenv_s чувствительна к регистру, значение
Требования
Подпрограмма Обязательный заголовок
_searchenv_s <stdlib.h>
Пример
C
// crt_searchenv_s.c
*/
#include <stdlib.h>
#include <stdio.h>
char pathbuffer[_MAX_PATH];
errno_t err;
if (err != 0)
else
Output
_searchenv, _wsearchenv
getenv, _wgetenv
_putenv, _wputenv
__security_init_cookie
Статья • 03.04.2023
Синтаксис
C
void __security_init_cookie(void);
Remarks
Глобальный cookie-файл безопасности используется для защиты от переполнения
буфера в коде, скомпилированном с параметром /GS (проверка безопасности
буфера), и в коде, в котором используется структурная обработка исключений. При
входе в функцию с защитой от переполнения cookie-файл помещается в стек, а при
выходе значение в стеке сравнивается с глобальным cookie-файлом. Любое
различие между ними указывает, что произошло переполнение буфера, что
приводит к немедленному завершению работы программы.
Пример
Примеры см. в разделе Ошибка R6035 времени выполнения C.
Требования
Подпрограмма Обязательный заголовок
__security_init_cookie <process.h>
Синтаксис
C
);
);
Параметры
exceptionNum
Идентификатор исключения.
exceptionPtr
Возвращаемое значение
Целое число, обозначающее необходимое действие на основе результатов
обработки исключения.
Комментарии
Эти методы вызываются выражением фильтра исключений try-except Statement.
Метод просматривает постоянную внутреннюю таблицу для идентификации
исключения и определяет соответствующее действие, как показано ниже. Номера
исключений определяются в файле winnt.h, а номера сигналов — в файле signal.h.
STATUS_ACCESS_VIOLATION SIGSEGV
STATUS_ILLEGAL_INSTRUCTION SIGILL
STATUS_PRIVILEGED_INSTRUCTION SIGILL
STATUS_FLOAT_DENORMAL_OPERAND SIGFPE
STATUS_FLOAT_DIVIDE_BY_ZERO SIGFPE
STATUS_FLOAT_INEXACT_RESULT SIGFPE
STATUS_FLOAT_INVALID_OPERATION SIGFPE
STATUS_FLOAT_OVERFLOW SIGFPE
STATUS_FLOAT_STACK_CHECK SIGFPE
STATUS_FLOAT_UNDERFLOW SIGFPE
Требования
Заголовок: corecrt_startup.h
7 Примечание
Синтаксис
C
);
Параметры
flags
mask
Возвращаемое значение
Старое значение флагов.
Комментарии
Существует два флага abort: _WRITE_ABORT_MSG и _CALL_REPORTFAULT . _WRITE_ABORT_MSG
определяет, будет ли выводиться полезное текстовое сообщение при аварийном
завершении программы. Сообщение указывает на то, что приложение вызвало
функцию abort . По умолчанию сообщение выводится. _CALL_REPORTFAULT , если
задано, вызывает механизм службы отчеты об ошибках Windows (ранее известный
как доктор Уотсон), чтобы сообщить о сбоях корпорации Майкрософт при abort
вызове. По умолчанию функция создания отчетов о аварийных дампах включена в
неотладочных сборках. Если обработчик отчетов об ошибках Windows не
вызывается, abort вызывается _exit для завершения процесса с кодом выхода 3 и
возвращает управление родительскому процессу или операционной системе.
_exit не очищает буферы потоков или не выполняет atexit / _onexit обработку.
Требования
Подпрограмма Обязательный заголовок
_set_abort_behavior <stdlib.h>
Пример
C
// crt_set_abort_behavior.c
#include <stdlib.h>
int main()
_set_abort_behavior( 0, _WRITE_ABORT_MSG);
abort();
Output
Suppressing the abort message. If successful, this message will be the only
output.
Синтаксис
C
void setbuf(
FILE *stream,
char *buffer
);
Параметры
stream
buffer
Комментарии
Функция setbuf управляет буферизацией для stream . Аргумент stream должен
ссылаться на открытый файл, который не был прочитан или записан. buffer Если
аргумент имеет значение NULL , поток не замешанный. В противном случае буфер
должен указывать на массив символов длиной BUFSIZ , где BUFSIZ — размер
буфера, как определено в файле STDIO.H. Вместо буфера, по умолчанию
выделенного системой для данного потока, для буферизации ввода-вывода
используется указанный пользователем буфер. Поток stderr по умолчанию не
поддерживается, но можно использовать для setbuf назначения буферов stderr .
подпрограммой для нового кода. В отличие от setvbuf этого, setbuf нет способа
создания отчетов об ошибках. setvbuf также позволяет управлять режимом
буферизации и размером буфера. setbuf существует для совместимости с
существующим кодом.
По умолчанию глобальное состояние этой функции ограничивается приложением.
Сведения об изменении этого поведения см. в разделе "Глобальное состояние" в
CRT.
Требования
Подпрограмма Обязательный заголовок
setbuf <stdio.h>
Пример
C
// crt_setbuf.c
#include <stdio.h>
char buf[BUFSIZ];
// "stream2" is unbuffered
_fcloseall();
Output
stream1 set to user-defined buffer at: 0012FCDC
fclose, _fcloseall
fflush
fopen, _wfopen
setvbuf
_set_controlfp
Статья • 03.04.2023
Синтаксис
C
);
Параметры
newControl
mask
Возвращаемое значение
Нет.
Remarks
Функция _set_controlfp похожа на _control87 функцию, но она задает только для
элемента управления с плавающей запятой значение newControl . Биты в значениях
показывают состояние элемента управления блоком операций с плавающей
запятой. Состояние элемента управления блока операций с плавающей запятой
разрешает программе изменять режимы точности, округления и бесконечности в
пакете математических операций с числами с плавающей запятой. Можно также
использовать функцию _set_controlfp для маскирования и демаскирования
исключений, связанных с операциями с плавающей запятой. Дополнительные
сведения см. в разделе _control87, _controlfp. __control87_2
Эта функция не рекомендуется использовать при компиляции с параметром /clr
(компиляция clr), так как среда CLR поддерживает только точность с плавающей
запятой по умолчанию.
Требования
Подпрограмма Обязательный заголовок Совместимость
Синтаксис
C
Параметры
error_value
Возвращаемое значение
Возвращает нуль при успешном завершении.
Комментарии
Возможные значения макроса определяются в Errno.h.
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
Синтаксис
C
Параметры
error_value
Возвращаемое значение
Возвращает нуль при успешном завершении.
Комментарии
Возможные значения макроса определяются в Errno.h. Кроме того, см errno .
константы.
Пример
C
// crt_set_errno.c
#include <stdio.h>
#include <errno.h>
int main()
_set_errno( EILSEQ );
perror( "Oops" );
Output
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
errno, , _doserrno_sys_errlistи_sys_nerr
_set_error_mode
Статья • 03.04.2023
) Важно!
Синтаксис
C
int _set_error_mode(
int mode_val
);
Параметры
mode_val
Возвращаемое значение
Возвращает старое значение или -1, если возникла ошибка.
Комментарии
Управляет приемником потока ошибок, устанавливая значение __error_mode .
Например, можно направить вывод в стандартную ошибку или использовать API
MessageBox .
Требования
Подпрограмма Обязательный заголовок
_set_error_mode <stdlib.h>
Пример
C
// crt_set_error_mode.c
// compile with: /c
#include <stdlib.h>
#include <assert.h>
int main()
_set_error_mode(_OUT_TO_STDERR);
assert(2+2==5);
Output
Синтаксис
C
errno_t _set_fmode(
int mode
);
Параметры
mode
Возвращаемое значение
Возвращает нуль в случае успеха или код ошибки в случае ошибки. Если mode
параметр не _O_TEXT имеет значения или _O_WTEXT _O_BINARY , вызывается
обработчик недопустимых параметров, как описано в разделе Проверка
параметров. Если выполнение может быть продолжено, эта функция задает для
errno значение EINVAL и возвращает EINVAL .
Комментарии
Функция задает глобальную _fmode переменную. Эта переменная определяет
значение по умолчанию режима трансляции файла для операций файлового
ввода-вывода _open и _pipe .
Пример
C
// crt_set_fmode.c
#include <stdlib.h>
#include <stdio.h>
int main()
errno_t err;
int buf[12] = { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76 };
err = _get_fmode(&mode);
if (err == EINVAL)
return 1;
else
"binary");
err = _set_fmode(_O_BINARY);
if (err == EINVAL)
return 1;
return 1;
if (_close(fd) != 0)
{
filename, errno);
system("type fmode.out");
Output
A B C D E F G H I J K L
_get_fmode
_setmode
Синтаксис
C
_invalid_parameter_handler _set_invalid_parameter_handler(
_invalid_parameter_handler pNew
);
_invalid_parameter_handler _set_thread_local_invalid_parameter_handler(
_invalid_parameter_handler pNew
);
Параметры
pNew
Возвращаемое значение
Указатель на обработчик недопустимого параметра до вызова.
Комментарии
Многие функции времени выполнения C проверяют допустимость аргументов,
передаваемых в них. Если передается недопустимый аргумент, функция может
установить номер ошибки errno или вернуть код ошибки. В таких случаях также
вызывается обработчик недопустимого параметра. Среда выполнения C
предоставляет глобальный обработчик недопустимых параметров по умолчанию,
который завершает программу и отображает сообщение об ошибке среды
выполнения. Можно использовать _set_invalid_parameter_handler , чтобы задать
собственную функцию в качестве глобального обработчика недопустимых
параметров. Среда выполнения C также поддерживает локальный обработчик
недопустимых параметров потока. Если локальный обработчик недопустимых
параметров потока задан для потока с помощью
_set_thread_local_invalid_parameter_handler , функции среды выполнения C,
вызванные из потока, используют этот обработчик вместо глобального
обработчика. Только одну функцию можно указать в качестве глобального
обработчика недопустимых аргументов единовременно. Только одну функцию
можно указать в качестве локального обработчика недопустимых аргументов для
одного потока, но различные потоки могут иметь разные локальные обработчики
потоков. Локальные обработчики потоков позволяют изменять обработчик,
используемый в одной части кода, не влияя на поведение других потоков.
void _invalid_parameter(
uintptr_t pReserved
);
Требования
Подпрограмма Обязательный
заголовок
_set_invalid_parameter_handler , C: <stdlib.h>
_set_thread_local_invalid_parameter_handler
C++: <cstdlib> или
<stdlib.h>
Функции _set_invalid_parameter_handler и
_set_thread_local_invalid_parameter_handler относятся к корпорации Майкрософт.
Пример
В следующем примере обработчик ошибок недопустимого параметра
используется для печати функции, которая получила недопустимый параметр, и
файла и строки в источниках CRT. При использовании отладочной библиотеки CRT
ошибки недопустимых параметров также вызывают утверждение, которое в этом
примере отключено с помощью _CrtSetReportMode.
// crt_set_invalid_parameter_handler.c
#include <stdio.h>
#include <stdlib.h>
uintptr_t pReserved)
{
abort();
int main( )
char* formatString;
newHandler = myInvalidParameterHandler;
oldHandler = _set_invalid_parameter_handler(newHandler);
_CrtSetReportMode(_CRT_ASSERT, 0);
formatString = NULL;
printf(formatString);
Output
Синтаксис
C
int setjmp(
jmp_buf env
);
Параметры
env
Возвращаемое значение
Возвращает 0 после сохранения среды стека. Если setjmp возвращается из-за
longjmp вызова, он возвращает value аргумент или если value аргумент
Комментарии
Функция setjmp сохраняет среду стека, которую можно впоследствии восстановить
с помощью функции longjmp . При совместном использовании функции setjmp и
longjmp предоставляют способ выполнения нелокального goto . Они обычно
используются для передачи управления выполнением в код обработки ошибок
или восстановления в ранее называемой подпрограмме без использования
обычных соглашений о вызовах или возвратах.
7 Примечание
Требования
Подпрограмма Обязательный заголовок
setjmp <setjmp.h>
Пример
См. пример для _fpreset.
longjmp
setlocale , _wsetlocale
Статья • 20.04.2023
Синтаксис
C
char *setlocale(
int category,
);
wchar_t *_wsetlocale(
int category,
);
Параметры
category
locale
Возвращаемое значение
Если задано допустимое locale значение и category , функции возвращают
указатель на строку, связанную с указанными locale и category .
locale Если
аргумент имеет значение NULL , функции возвращают текущий языковой стандарт.
образом:
setlocale category да да
Функция недопустимый Вызов недопустимого обработчика, как Задает
параметр. описано в разделе Проверка параметров errno
_wsetlocale category да да
Вызов
Output
en-US
Комментарии
Используйте функцию setlocale для задания, изменения или получения некоторой
или всей информации о языковом стандарте текущей программы, определяемой
locale и category . locale ссылается на расположение (страну или регион и язык),
traditional" "chinese-simplified" .
_wsetlocale — это версия с расширенными символами для setlocale ; аргумент
setlocale(LC_ALL, "en-US");
setlocale(LC_MONETARY, "fr-FR");
возвращает
Output
LC_COLLATE=en-US;LC_CTYPE=en-US;LC_MONETARY=fr-FR;LC_NUMERIC=en-
US;LC_TIME=en-US
Следующие примеры относятся к категории LC_ALL . Любая из строк . OCP" и ". ACP"
можно использовать вместо номера кодовой страницы, чтобы указать
использование пользовательской кодовой страницы OEM и пользовательской
кодовой страницы ANSI по умолчанию для этого имени языкового стандарта
соответственно.
Эта категория должна быть LC_ALL или LC_CTYPE для реализации изменения
кодовой страницы. Например, если страной или регионом по умолчанию и языком
операционной системы узла являются " United States " и " English ", следующие два
вызова setlocale функционально эквивалентны:
Поддержка UTF-8.
Начиная с Windows 10 версии 1803 (10.0.17134.0), универсальная среда выполнения
C поддерживает использование кодовой страницы UTF-8. Это изменение означает,
что строки, char передаваемые в функции среды выполнения C, могут ожидать
строк в кодировке UTF-8. Чтобы включить режим UTF-8, используйте ".UTF8" в
качестве кодовой страницы при использовании setlocale . Например,
setlocale(LC_ALL, ".UTF8") использует текущую кодовую страницу WINDOWS ANSI
(ACP) по умолчанию для языкового стандарта и UTF-8 для кодовой страницы.
Не учитывает регистр.
дефис ( - ) является необязательным
Он должен находиться в кодовой странице имени языкового стандарта,
поэтому должен иметь начальную точку ( . ), как показано в следующих
примерах: "en_US.UTF8" или ".utf8"
В следующих примерах показано, как указать строку UTF-8:
".UTF8"
".UTF-8"
".utf8"
".utf-8"
"en_us.utf8"
"ja_JP.Utf-8"
Следующие аспекты среды выполнения C не могут использовать UTF-8, так как они
задаются во время запуска программы и должны использовать кодовую страницу
WINDOWS ANSI (ACP) по умолчанию: __argv, _acmdlnи _pgmptr.
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
setlocale <locale.h>
Пример
C
// crt_setlocale.c
//
#include <locale.h>
#include <process.h>
#include <windows.h>
#include <stdio.h>
#include <time.h>
// locale's format.
__time64_t ltime;
struct tm thetime;
_time64(<ime);
_gmtime64_s(&thetime, <ime);
// current locale
printf("strftime failed!\n");
return -1;
return 0;
setlocale(LC_ALL, locale));
if (get_date(str) == 0)
_endthreadex( 0 );
return 0;
// and then spawns a second thread (above) and prints the date.
int main()
HANDLE hThread;
unsigned threadID;
_configthreadlocale(_ENABLE_PER_THREAD_LOCALE);
setlocale(LC_ALL, "en-US"));
"de-DE", 0, &threadID );
if (get_date(str) == 0)
Output
_configthreadlocale
_create_locale, _wcreate_locale
Локаль
localeconv
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
_setmbcp
Функции strcoll
wcstombs, _wcstombs_l
wctomb, _wctomb_l
_setmaxstdio
Статья • 03.04.2023
Синтаксис
C
int _setmaxstdio(
int new_max
);
Параметры
new_max
Возвращаемое значение
Возвращает значение new_max в случае успешного выполнения; значение -1 в
противном случае.
Комментарии
Функция _setmaxstdio изменяет максимальное значение количества файлов,
которые могут быть открыты одновременно на уровне потокового ввода-вывода.
Ввод-вывод среды выполнения C теперь поддерживает до 8192 одновременно
открытых файлов на низком уровне ввода-вывода. Этот уровень включает файлы,
открытые и доступные с помощью _open функций ввода-вывода _read , а также
_write семейства функций ввода-вывода. По умолчанию на уровне потокового
ввода-вывода может быть открыто одновременно 512 файлов. Этот уровень
включает файлы, открытые и доступные с помощью fopen и fputc fgetc семейства
функций. Ограничение в 512 открытых файлов на уровне потокового ввода-вывода
можно увеличить до максимум 8192, используя функцию _setmaxstdio .
Так как функции уровня потокового ввода-вывода, такие как fopen , основаны на
низком уровне операций ввода-вывода, максимальное значение 8192 является
жестким верхним пределом для количества одновременно открытых файлов,
доступ к которых осуществляется через библиотеку времени выполнения C.
7 Примечание
Требования
Подпрограмма Обязательный заголовок
_setmaxstdio <stdio.h>
Пример
См. _getmaxstdio с примером использования _setmaxstdio .
Синтаксис
C
int _setmbcp(
int codepage
);
Параметры
codepage
Возвращаемое значение
Возвращает 0, если кодовая страница задана успешно. Если для задано
codepage недопустимое значение кодовой страницы , возвращается значение -1, а
параметр кодовой страницы не изменяется. Устанавливает параметр errno в
EINVAL , если происходит сбой выделения памяти.
Комментарии
Функция _setmbcp задает новую многобайтовую кодовую страницу. По умолчанию
система времени выполнения автоматически устанавливает в качестве
многобайтовой кодовой страницы кодовую страницу ANSI, используемую в
системе по умолчанию. Параметр многобайтовой кодовой страницы влияет на все
многобайтовые подпрограммы, которые не зависят от языкового стандарта.
Однако можно указать _setmbcp использовать кодовую страницу, определенную
для текущего языкового стандарта (см. следующий список констант манифеста и
связанных результатов поведения). Список многобайтовых подпрограмм,
зависящих от кодовой страницы языкового стандарта, а не от многобайтовой
кодовой страницы, см. в разделе Интерпретация многобайтовых
последовательностей символов.
Требования
Подпрограмма Обязательный заголовок
_setmbcp <mbctype.h>
setlocale, _wsetlocale
setmode
Статья • 03.04.2023
Синтаксис
C
int _setmode (
int fd,
int mode
);
Параметры
fd
Дескриптор файла.
mode
Возвращаемое значение
При успешном выполнении возвращает предыдущий режим преобразования.
Комментарии
Функция _setmode задает в качестве параметра mode режим преобразования файла,
заданный fd . При передаче _O_TEXT как параметра mode задается текстовый
(преобразованный) режим. Комбинации перевода строки возврата каретки (CR-LF)
превратятся в один символ канала строки для входных данных. Символы перевода
строки преобразуются в комбинацию CR-LF в выводе. Передача _O_BINARY задает
двоичный режим (без преобразования), в котором такие преобразования
подавляются.
U Внимание!
U Внимание!
Требования
Подпрограмма Обязательный заголовок Необязательные заголовки
// crt_setmode.c
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
int result;
if( result == -1 )
else
Output
// crt_setmodeunicode.c
#include <fcntl.h>
#include <io.h>
#include <stdio.h>
int main(void) {
_setmode(_fileno(stdout), _O_U16TEXT);
wprintf(L"\x043a\x043e\x0448\x043a\x0430 \x65e5\x672c\x56fd\n");
return 0;
_creat, _wcreat
fopen, _wfopen
_open, _wopen
_set_fmode
_set_new_handler
Статья • 03.04.2023
Синтаксис
C++
Параметры
pNewHandler
Возвращаемое значение
Возвращает указатель на предыдущую функцию обработки исключений,
зарегистрированную функцией _set_new_handler , чтобы предыдущую функцию
можно было впоследствии восстановить. Если предыдущая функция не задана,
возвращаемое значение можно использовать для восстановления поведения по
умолчанию. Это значение может быть nullptr или 0.
Комментарии
Функция C++ _set_new_handler определяет функцию обработки исключений,
которая получает управление, если оператор new не смог выделить память. Если
оператор new завершается ошибкой, система времени выполнения автоматически
вызывает функцию обработки исключений, которая была передана в качестве
аргумента в функцию _set_new_handler . _PNH , определенный в <new.h> , является
указателем на функцию, которая возвращает тип int и принимает аргумент типа
size_t . Используйте size_t для определения объема выделяемого пространства.
C++
// _set_new_handler1.cpp
#include <new.h>
// Your code
_set_new_handler( handle_program_memory_depletion );
C++
// . . .
_set_new_handler( old_handler )
// . . .
Функция C++ _set_new_mode задает новый режим обработчика для malloc. Новый
режим обработки указывает, должна ли функция malloc при сбое вызывать новую
подпрограмму обработчика, заданную функцией _set_new_handler . По умолчанию
malloc не вызывает новую подпрограмму обработчика при сбое выделения
Требования
Компонент Обязательный заголовок
_set_new_handler <new.h>
Пример
В этом примере при сбое выделения элемент управления передается MyNewHandler в
. Переданный аргумент MyNewHandler — это число запрошенных байтов.
Возвращаемое MyNewHandler значение является флагом, указывающим, следует ли
повторить выделение: ненулевое значение указывает, что необходимо повторить
выделение, а нулевое значение указывает, что выделение завершилось сбоем.
C++
// crt_set_new_handler.cpp
#include <iostream>
#include <new>
#include <new.h>
struct MemoryHog {
int pork[Big_number];
};
class MemoryReserve {
public:
MemoryReserve() {
~MemoryReserve() noexcept {
if (reserved != nullptr)
delete reserved;
if (reserved != nullptr) {
delete reserved;
reserved = nullptr;
};
if (reserve.free_reserve()) {
return 1;
return 0;
void RecurseAlloc() {
RecurseAlloc();
depth--;
delete piggy;
return;
int main()
try {
RecurseAlloc();
/* Output:
*/
calloc
free
realloc
_set_new_mode
Статья • 03.04.2023
Синтаксис
C++
Параметры
newhandlermode
Возвращаемое значение
Возвращает предыдущий режим обработчика, заданный для malloc .
Возвращаемое значение 1 указывает, что при сбое выделения памяти, malloc
ранее называемой new подпрограммой обработчика; возвращаемое значение 0
указывает на то, что этого не произошло. newhandlermode Если аргумент не равен 0
или 1, возвращает значение -1.
Комментарии
Функция C++ _set_new_mode задает режим обработчика new для malloc. Режим new
обработчика указывает, следует ли при сбое вызывать подпрограмму new
обработчика, malloc заданную параметром _set_new_handler. По умолчанию
malloc не вызывает подпрограмму обработчика new при сбое выделения памяти.
C++
_set_new_mode(1);
Требования
Подпрограмма Обязательный заголовок
_set_new_mode <new.h>
calloc
free
realloc
_query_new_handler
_query_new_mode
_set_printf_count_output
Статья • 03.04.2023
Синтаксис
C
int _set_printf_count_output(
int enable
);
Параметры
enable
Комментарии
Из-за соображений безопасности поддержка описателя формата %n по
умолчанию отключена во printf всех его вариантах. Если %n встречается в
спецификации формата, поведение по умолчанию заключается в printf вызове
обработчика недопустимых параметров, как описано в разделе "Проверка
параметров". Вызов _set_printf_count_output с ненулевым аргументом приведет
printf к тому, что функции семейства интерпретируют %n , как описано в
Требования
Подпрограмма Обязательный заголовок
_set_printf_count_output <stdio.h>
Пример
C
// crt_set_printf_count_output.c
#include <stdio.h>
int main()
int e;
int i;
e = _set_printf_count_output( 1 );
e ? "en" : "dis" );
Output
123456789
i = 5
Синтаксис
C++
_se_translator_function _set_se_translator(
_se_translator_function seTransFunction
);
Параметры
seTransFunction
Возвращаемое значение
Возвращает указатель на предыдущую функцию-преобразователь,
зарегистрированную с помощью _set_se_translator , чтобы предыдущую функцию
можно было впоследствии восстановить. Если предыдущая функция не задана,
возвращаемое значение может использоваться для восстановления поведения по
умолчанию; это значение может быть равно nullptr .
Комментарии
Функция _set_se_translator предоставляет способ обработки исключений Win32
(структурированных исключений языка C) как типизированных исключений C++.
Чтобы разрешить обработчику catch языка С++ обрабатывать каждое исключение
языка С, сначала следует определить класс-оболочку исключения языка С, который
(или производный от него класс) может использоваться в качестве атрибута
специального типа класса для исключения языка С. Чтобы использовать этот класс,
требуется установить пользовательскую функцию преобразования исключений
языка C, которая вызывается внутренним механизмом обработки исключением
при каждом возникновении исключения языка C. Внутри функции-
преобразователя можно вызывать любое типизированное исключение, которое
может перехватываться соответствующим блоком catch языка С++.
C++
Требования
Подпрограмма Обязательный заголовок
_set_se_translator <eh.h>
C++
// crt_settrans.cpp
#include <stdio.h>
#include <windows.h>
#include <eh.h>
#include <exception>
private:
public:
};
class Scoped_SE_Translator
private:
public:
};
void SEFunc()
__try
int x = 5;
int y = 0;
int *p = &y;
*p = x / *p;
__finally
throw SE_Exception( u );
int main()
try
SEFunc();
Output
In __finally
C++
// crt_set_se_translator_clr.cpp
#include <windows.h>
#include <eh.h>
#include <stdio.h>
#include <exception>
int y = 0;
int *p = &y;
*p = i / *p;
return 0;
private:
public:
};
class Scoped_SE_Translator
private:
public:
};
#pragma unmanaged
throw SE_Exception( u );
void DoTest()
try
thrower_func( 10 );
catch(...)
#pragma managed
int main() {
DoTest();
Output
set_terminate
set_unexpected
terminate
unexpected\
_set_SSE2_enable
Статья • 03.04.2023
Синтаксис
C
int _set_SSE2_enable(
int flag
);
Параметры
flag
Возвращаемое значение
Ненулевое значение, если реализация SSE2 включена; ноль, если реализация SSE2
отключена.
Комментарии
Следующие функции имеют реализации SSE2, которые могут быть включены с
помощью функции _set_SSE2_enable :
atan
ceil
exp
floor
log
log10
modf
pow
7 Примечание
Требования
Подпрограмма Обязательный заголовок
_set_SSE2_enable <math.h>
Пример
C
// crt_set_SSE2_enable.c
// processor: x86
#include <math.h>
#include <stdio.h>
int main()
int i = _set_SSE2_enable(1);
if (i)
printf("SSE2 enabled.\n");
else
Output
SSE2 enabled.
Синтаксис
C++
Параметры
termFunction
Возвращаемое значение
Возвращает указатель на предыдущую функцию, зарегистрированную с помощью
функции set_terminate , чтобы предыдущую функцию можно было впоследствии
восстановить. Если предыдущая функция не была задана, возвращаемое значение
можно использовать для восстановления поведения по умолчанию; Это значение
может иметь значение NULL .
Комментарии
Функция set_terminate устанавливает termFunction как функцию, вызываемую
функцией terminate . Функция set_terminate используется с обработкой
исключений C++ и может быть вызвана в программе в любой момент до
возникновения исключения. По умолчанию terminate вызывает функцию abort.
Это поведение по умолчанию можно изменить, создав собственную функцию
завершения и вызвав функцию set_terminate с именем этой функции в качестве
аргумента. terminate вызывает последнюю функцию, заданную в качестве
аргумента для функции set_terminate . После выполнения любых необходимых
задач termFunction очистки следует выйти из программы. Если он не завершает
работу (если он возвращается к вызывающему объекту), abort вызывается .
В многопоточной среде функции завершения поддерживаются отдельно для
каждого потока. Каждый новый поток требует установки собственной функции
завершения. Таким образом, каждый поток отвечает за собственную обработку
завершения.
C++
7 Примечание
Требования
Подпрограмма Обязательный заголовок
set_terminate <eh.h>
Пример
См. пример для terminate.
См. также раздел
Процедуры обработки исключений
abort
_get_terminate
set_unexpected
terminate
unexpected
set_unexpected (CRT)
Статья • 03.04.2023
Синтаксис
C++
Параметры
unexpFunction
Возвращаемое значение
Возвращает указатель на предыдущую функцию завершения, зарегистрированную
с помощью _set_unexpected , чтобы предыдущую функцию можно было
впоследствии восстановить. Если предыдущая функция не задана, возвращаемое
значение может использоваться для восстановления поведения по умолчанию; это
значение может быть NULL .
Комментарии
Функция set_unexpected устанавливает unexpFunction как функцию, вызываемую
функцией unexpected . unexpected не используется в текущей реализации обработки
исключений C++. Тип unexpected_function определен в файле EH.H как указатель
на определенную пользователем непредвиденную функцию, unexpFunction ,
возвращающую значение void . Пользовательская unexpFunction функция не
должна возвращаться вызывающей функции.
C++
Требования
Подпрограмма Обязательный заголовок
set_unexpected <eh.h>
abort
_get_unexpected
set_terminate
terminate
unexpected\
setvbuf
Статья • 03.04.2023
Синтаксис
C
int setvbuf(
FILE *stream,
char *buffer,
int mode,
size_t size
);
Параметры
stream
buffer
mode
Режим буферизации.
size
Возвращаемое значение
Возвращает 0 в случае успеха.
Если stream это NULL или mode size нет в допустимом изменении, вызывается
обработчик недопустимых параметров, как описано в разделе "Проверка
параметров". Если продолжение выполнения разрешено, эта функция возвращает
-1 и задает для errno значение EINVAL .
Сведения об этих и других кодах ошибок см. в разделе errno, и
_doserrno_sys_errlist_sys_nerr.
Комментарии
Функция setvbuf позволяет программе управлять и буферизацией, и размером
буфера для stream . stream должен ссылаться на открытый файл, который не
прошел операцию ввода-вывода с момента его открытия. Массив, на который
указывает buffer указатель, используется в качестве буфера, если
buffer NULL только в этом случае setvbuf используется автоматически выделенный
Должен быть установлен режим _IOFBF , _IOLBF , или _IONBF . Если mode имеет
значение _IOFBF или _IOLBF , то size используется в качестве размера буфера. Если
mode это _IONBF так, поток не поддерживается, и оба size buffer и игнорируются.
Значение Значение
mode
_IOLBF Для некоторых систем этот режим обеспечивает буферизацию строк. Однако
для Win32 такое поведение аналогично _IOFBF , то есть полной буферизации.
Требования
Подпрограмма Обязательный заголовок
setvbuf <stdio.h>
Пример
C
// crt_setvbuf.c
//
#include <stdio.h>
char buf[1024];
else
else
_fcloseall();
Output
fclose, _fcloseall
fflush
fopen, _wfopen
setbuf
signal
Статья • 03.04.2023
) Важно!
Синтаксис
C
Параметры
sig
Значение сигнала.
func
Возвращаемое значение
signal возвращает предыдущее значение func, связанное с заданным сигналом.
Например, если предыдущее значение функции func было SIG_IGN , то
возвращаемое значение также равно SIG_IGN . Возвращаемое значение SIG_ERR
отображает ошибку; в этом случае для errno устанавливается значение EINVAL .
7 Примечание
Требования
Подпрограмма Обязательный заголовок
signal <signal.h>
Пример
В следующем примере показано, как использовать функцию signal для
добавления пользовательского поведения в сигнал SIGABRT . Дополнительные
сведения о поведении прерывания см. в разделе _set_abort_behavior.
// crt_signal.c
#include <stdlib.h>
#include <signal.h>
if (signal == SIGABRT) {
} else {
// ...
int main()
SignalHandlerPointer previousHandler;
abort();
Output
Debug Error!
Program: c:\Projects\crt_signal\Debug\crt_signal.exe
R6010
abort
_fpreset
Синтаксис
C
int signbit(
/* floating-point */ x
); /* C-only macro */
float x
double x
long double x
Параметры
x
Возвращаемое значение
signbit возвращает ненулевое значение ( true в C++), если аргумент x является
Комментарии
signbit — это макрос при компиляции как C и перегруженная встроенная функция
isinf
isnormal
_fpclass, _fpclassf
sin , sinf , sinl
Статья • 03.04.2023
Синтаксис
C
C++
Параметры
x
Угол в радианах.
Возвращаемое значение
Функции sin возвращают синус x . Если x значение больше или равно 263 или
меньше или равно -263, происходит потеря значимости в результате.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки sin , которые
принимают и возвращают значения float или long double . В программе C, если вы
не используете <tgmath.h> макрос для вызова этой функции, sin всегда принимает
и возвращает . double
Требования
Подпрограмма Обязательный заголовок (C) Обязательный заголовок (C++)
Пример
C
// crt_sincos.c
#include <math.h>
#include <stdio.h>
double pi = 3.1415926535;
double x, y;
x = pi / 2;
y = sin( x );
y = cos( x );
Output
_CIsin\
sinh , sinhf , sinhl
Статья • 03.04.2023
Синтаксис
C
Параметры
x
Угол в радианах.
Возвращаемое значение
Функции sinh возвращают гиперболический синус x . По умолчанию, если
результат слишком большой, sinh задает значение errno для ERANGE и возвращает
± HUGE_VAL .
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки sinh , которые
принимают и возвращают значения float или long double . В программе C, если вы
не используете <tgmath.h> макрос для вызова этой функции, sinh всегда
принимает и возвращает . double
Требования
Подпрограмма Обязательный заголовок (C) Обязательный заголовок (C++)
Пример
C
// crt_sinhcosh.c
#include <math.h>
#include <stdio.h>
double pi = 3.1415926535;
double x, y;
x = pi / 2;
y = sinh( x );
y = cosh( x );
Output
Синтаксис
C
int snprintf(
char *buffer,
size_t count,
argument] ...
);
int _snprintf(
char *buffer,
size_t count,
argument] ...
);
int _snprintf_l(
char *buffer,
size_t count,
_locale_t locale [,
argument] ...
);
int _snwprintf(
wchar_t *buffer,
size_t count,
argument] ...
);
int _snwprintf_l(
wchar_t *buffer,
size_t count,
_locale_t locale [,
argument] ...
);
int _snprintf(
char (&buffer)[size],
size_t count,
argument] ...
); // C++ only
int _snprintf_l(
char (&buffer)[size],
size_t count,
_locale_t locale [,
argument] ...
); // C++ only
int _snwprintf(
wchar_t (&buffer)[size],
size_t count,
argument] ...
); // C++ only
int _snwprintf_l(
wchar_t (&buffer)[size],
size_t count,
_locale_t locale [,
argument] ...
); // C++ only
Параметры
buffer
count
format
argument
Необязательные аргументы.
locale
Возвращаемое значение
Пусть len будет длиной строки форматированных данных, не включая конечное
значение NULL. И то len и и count другое число символов snprintf _snprintf и
число расширенных символов. _snwprintf
Для всех функций, если len < count , символы len сохраняются в buffer ,
добавляется знак завершения NULL и возвращается len .
Функция snprintf усекает выходные данные, если значение len не меньше count ,
помещая знак завершения NULL в buffer[count-1] . Возвращаемое значение — len ,
то есть количество символов, которые стали бы выходными данными при
достаточном размере count . Функция snprintf возвращает отрицательное
значение при возникновении ошибки кодировки.
Для всех функций, кроме snprintf , если len = count , символы len сохраняются в
buffer , знак завершения NULL не добавляется и возвращается len . Если символы
len > count , символы count сохраняются в buffer , конечное значение null не
Если buffer является указателем null и count равен нулю, len возвращается как
число символов, необходимых для форматирования выходных данных, не включая
конечное значение null. Для выполнения успешного вызова с теми же
параметрами argument и locale выделите буфер, содержащий хотя бы len + 1
символов.
Если buffer является пустым указателем и count ненулевым или если format
является пустым указателем, вызывается обработчик недопустимых параметров,
как описано в разделе "Проверка параметров". Если разрешается продолжать
выполнение, эти функции возвращают -1 и задают errno значение EINVAL .
Комментарии
Функция snprintf и семейство функций _snprintf форматируют и сохраняют count
или меньше символов в buffer . Функция snprintf всегда добавляет знак
завершения NULL с усечением выходных данных при необходимости. Семейство
функций _snprintf добавляет знак завершения NULL, только если длина
отформатированной строки в символах строго меньше count . Каждый argument
(при наличии) преобразуется и выводится согласно соответствующей
спецификации формата в format . Формат состоит из обычных символов и имеет те
же форму и функциональные возможности, что и аргумент format для printf. Если
копирование производится между перекрывающимися строками, поведение не
определено.
) Важно!
Начиная с UCRT в Visual Studio 2015 и Windows 10, snprintf больше не идентичен
_snprintf . Поведение snprintf функции теперь соответствует стандарту C99.
В C++ эти функции имеют перегрузки шаблонов, которые вызывают более новые,
более безопасные аналоги. Дополнительные сведения см. в разделе "Безопасные
перегрузки шаблонов".
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_snprintf.c
#include <stdio.h>
#include <stdlib.h>
#if !defined(__cplusplus)
#endif
int main(void)
char buffer[200];
#if FAIL
"computercomputercomputercomputercomputercomputercomputercomputer"
"computercomputercomputercomputercomputercomputercomputercomputer"
"computercomputercomputercomputercomputercomputercomputercomputer"
"computercomputercomputercomputercomputercomputercomputercomputer"
#endif
#if FAIL
#else
#endif
int bufferUsed = 0;
buffer[0] = 0;
if (bufferLeft > 0)
bufferUsed += perElementBufferUsed;
bufferLeft -= perElementBufferUsed;
if (bufferLeft > 0)
bufferUsed += perElementBufferUsed;
bufferLeft -= perElementBufferUsed;
if (bufferLeft > 0)
bufferUsed += perElementBufferUsed;
bufferLeft -= perElementBufferUsed;
if (bufferLeft > 0)
bufferUsed += perElementBufferUsed;
if (!bSuccess)
printf("%s\n", "failure");
else
*/
buffer[bufferUsed] = 0;
return EXIT_SUCCESS;
}
Output
Output:
String: computer
Character: l
Integer: 35
Real: 1.732053
character count = 69
Функции vprintf
_snprintf_s , _snprintf_s_l ,
_snwprintf_s , _snwprintf_s_l
Статья • 03.04.2023
Синтаксис
C
int _snprintf_s(
char *buffer,
size_t sizeOfBuffer,
size_t count,
argument] ...
);
int _snprintf_s_l(
char *buffer,
size_t sizeOfBuffer,
size_t count,
_locale_t locale [,
argument] ...
);
int _snwprintf_s(
wchar_t *buffer,
size_t sizeOfBuffer,
size_t count,
argument] ...
);
int _snwprintf_s_l(
wchar_t *buffer,
size_t sizeOfBuffer,
size_t count,
_locale_t locale [,
argument] ...
);
int _snprintf_s(
char (&buffer)[size],
size_t count,
argument] ...
); // C++ only
int _snwprintf_s(
wchar_t (&buffer)[size],
size_t count,
argument] ...
); // C++ only
Параметры
buffer
sizeOfBuffer
Размер места хранения выходных данных. Размер в bytes для _snprintf_s или
размер в words для _snwprintf_s .
count
format
argument
Необязательные аргументы.
locale
Возвращаемое значение
_snprintf_s возвращает число сохраненных в buffer символов без учета знака
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
Комментарии
Функция _snprintf_s форматирует и сохраняет count или меньшее число символов
в buffer и добавляет завершающий символ NULL. Каждый аргумент (если он есть)
преобразуется и выводится согласно соответствующей спецификации формата в
format . Форматирование согласуется с семейством printf функций. См . раздел
Синтаксис спецификации форматирования: printf и wprintf функции. Если
копирование производится между перекрывающимися строками, поведение не
определено.
) Важно!
Требования
Подпрограмма Обязательный заголовок
Пример
C++
// crt_snprintf_s.cpp
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
char dest[10];
printf( "\n" );
if ( count == _TRUNCATE )
else
count, _countof(dest) );
return ret;
void Examples()
: "did not" );
: "did not" );
char dest[10];
void myInvalidParameterHandler(
uintptr_t pReserved)
{
newHandler = myInvalidParameterHandler;
oldHandler = _set_invalid_parameter_handler(newHandler);
_CrtSetReportMode(_CRT_ASSERT, 0);
Examples();
Output
Truncation examples:
Функции vprintf
_snscanf , _snscanf_l , _snwscanf ,
_snwscanf_l
Статья • 03.04.2023
Синтаксис
C
size_t length,
);
size_t length,
...
);
size_t length,
...
);
size_t length,
_locale_t locale,
...
);
Параметры
input
format
...
locale
Возвращаемое значение
Обе эти функции возвращают количество успешно преобразованных и
назначенных полей; Возвращаемое значение не включает поля, которые были
прочитаны, но не назначены. Возвращаемое значение 0 указывает, что поля не
были назначены. Если до первого преобразования возникает ошибка или
достигается конец строки, возвращается значение EOF . Для получения
дополнительной информации см. sscanf.
Если input или format является указателем NULL или меньше length или равен
нулю, вызывается обработчик недопустимых параметров, как описано в разделе
Проверка параметров. Если продолжение выполнения разрешено, эти функции
возвращают EOF и устанавливают для errno значение EINVAL .
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
Комментарии
Эта функция похожа sscanf на , за исключением того, что она позволяет указать
фиксированное количество символов для проверки из входной строки. Для
получения дополнительной информации см. sscanf.
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_snscanf.c
#include <stdio.h>
int main( )
char s1[3];
wchar_t s2[3];
int i;
float fp;
Output
Синтаксис
C
size_t length,
);
size_t length,
);
size_t length,
);
size_t length,
);
Параметры
input
length
locale
argument_list
Возвращаемое значение
Обе эти функции возвращают количество полей, успешно преобразованных и
назначенных; возвращаемое значение не содержит поля, которые были
прочитаны, но не назначены. Возвращаемое значение 0 указывает, что поля не
были назначены. Если до первого преобразования возникает ошибка или
достигается конец строки, возвращается значение EOF . Дополнительные сведения
см. в разделе sscanf_s, , _sscanf_s_lswscanf_s. _swscanf_s_l
Комментарии
Эта функция похожа sscanf_s , за исключением того, что она позволяет указать
фиксированное количество символов для проверки из входной строки.
Дополнительные сведения см. в разделе sscanf_s, , _sscanf_s_lswscanf_s. _swscanf_s_l
7 Примечание
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_snscanf_s.c
#include <stdio.h>
int main( )
char s1[3];
wchar_t s2[3];
int i;
float fp;
Output
Открывает файл для общего доступа. Доступны более безопасные версии этих
функций: see _sopen_s, _wsopen_s.
Синтаксис
C
int _sopen(
int oflag,
int shflag [,
int pmode ]
);
int _wsopen(
int oflag,
int shflag [,
int pmode ]
);
Параметры
filename
Имя файла.
oflag
shflag
pmode
Настройка разрешений.
Возвращаемое значение
Каждая из этих функций возвращает дескриптор файла для открытого файла.
Если filename или oflag является указателем NULL или находится в допустимом
диапазоне значений, oflag shflag вызывается обработчик недопустимых
параметров, как описано в разделе "Проверка параметров". Если разрешается
продолжать выполнение, эти функции возвращают -1 и задают для errno одно из
следующих значений.
Значение Условие
errno
EACCES Заданный путь является каталогом, или файл доступен только для чтения,
однако была выполнена попытка операции открытия для записи.
Комментарии
Функция _sopen открывает файл, указанный параметром filename , и готовит его к
общему доступу для чтения или записи, как задано параметрами oflag и shflag .
_wsopen — это версия _sopen с расширенными символами; аргумент filename для
_wsopen — строка расширенных символов. Поведение _wsopen и _sopen идентично
в противном случае.
константа Поведение
oflag ;
_O_CREAT Создает файл и открывает его для записи. Не действует, если существует
файл, указанный параметром filename . Аргумент pmode обязателен, если
указан флаг _O_CREAT .
_O_CREAT | Создает файл как временный и, если это возможно, не сбрасывает на диск.
_O_SHORT_LIVED Аргумент pmode обязателен, если указан флаг _O_CREAT .
_O_CREAT | Создает файл в качестве временного файла; файл удаляется при закрытии
_O_TEMPORARY последнего дескриптора файла. Аргумент pmode обязателен, если указан
флаг _O_CREAT . Чтобы сохранить устаревшее поведение для совместимости
приложений, другие процессы не препятствуют удалению этого файла.
_O_RDONLY Открывает файл только для чтения. Не удается указать с _O_RDWR помощью
или _O_WRONLY .
Чтобы указать режим доступа к файлу, необходимо задать _O_RDONLY , _O_RDWR или
_O_WRONLY . Значение по умолчанию для режима доступа отсутствует.
Аргумент pmode обязателен, только если указан флаг _O_CREAT . Если файл не
существует, pmode указывает параметры разрешений файла, которые задаются при
первом закрытии нового файла. В противном случае pmode игнорируется. pmode
представляет собой целочисленное выражение, содержащее одну или обе
константы манифеста _S_IWRITE и _S_IREAD определяемые в <sys\stat.h> . При
указании обеих констант они объединяются с оператором bitwise-OR. Значение
параметра pmode следующее.
pmode Значение
Требования
Компонент Обязательный заголовок Необязательный заголовок
Пример
См. пример для _locking.
См. также раздел
Низкоуровневый ввод-вывод
_close
_creat, _wcreat
fopen, _wfopen
_fsopen, _wfsopen
_open, _wopen
_sopen_s , _wsopen_s
Статья • 03.04.2023
Открывает файл для общего доступа. Эти версии _sopen и _wsopen имеют
улучшения безопасности, как описано в разделе Функции безопасности в CRT.
Синтаксис
C
errno_t _sopen_s(
int* pfh,
int oflag,
int shflag,
int pmode
);
errno_t _wsopen_s(
int* pfh,
int oflag,
int shflag,
int pmode,
);
Параметры
pfh
filename
Имя файла.
oflag
shflag
pmode
Настройка разрешений.
Возвращаемое значение
Ненулевое возвращаемое значение указывает на ошибку; в этом случае для errno
задается одно из следующих значений.
Значение Условие
errno
EACCES Заданный путь является каталогом, или файл доступен только для чтения,
однако была выполнена попытка операции открытия для записи.
EINVAL Недопустимый аргумент oflag , shflag или pmode , либо pfh или filename
является пустым указателем.
Комментарии
Функция _sopen_s открывает файл, указанный параметром filename , и готовит его
к общему доступу для чтения или записи, как задано параметрами oflag и shflag .
_wsopen_s — это версия _sopen_s с расширенными символами; аргумент filename
константа Поведение
oflag ;
_O_CREAT Создает файл и открывает его для записи. Не действует, если существует
файл, указанный параметром filename . Аргумент pmode обязателен, если
указан флаг _O_CREAT .
_O_CREAT | Создает файл в качестве временного файла; файл удаляется при закрытии
_O_TEMPORARY последнего дескриптора файла. Аргумент pmode обязателен, если указан
флаг _O_CREAT . Чтобы сохранить устаревшее поведение для совместимости
приложений, другим процессам не запрещено удалять этот файл.
_O_RDONLY Открывает файл только для чтения. Не удается указать с помощью _O_RDWR
или _O_WRONLY .
Чтобы указать режим доступа к файлу, необходимо задать _O_RDONLY , _O_RDWR или
_O_WRONLY . Нет значения по умолчанию для режима доступа.
для чтения и записи, считывается метка порядка байтов, а затем файл снова
открывается только для записи. Если происходит сбой открытия файла для чтения и
записи, файл открывается только для записи и для параметра режима Юникода
используется значение по умолчанию.
pmode Значение
Требования
Компонент Обязательный заголовок Необязательный заголовок
Компонент Обязательный заголовок Необязательный заголовок
Пример
См. пример для _locking.
_close
_creat, _wcreat
fopen, _wfopen
_fsopen, _wfsopen
_open, _wopen
spawnl
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
intptr_t _spawnl(
int mode,
NULL
);
intptr_t _wspawnl(
int mode,
NULL
);
Параметры
mode
cmdname
Возвращаемое значение
Возвращаемое значение синхронных функций _spawnl или _wspawnl (для
параметра _P_WAIT указано значение _ mode ) — это состояние завершения нового
процесса. Возвращаемое значение асинхронной функции _spawnl или _wspawnl
(для параметра _P_NOWAIT указано значение _P_NOWAITO или mode ) — это дескриптор
процесса. Состояние выхода имеет значение 0, если процесс завершился обычным
образом. Для состояния выхода можно задать ненулевое значение, если
порожденный процесс специально вызывает процедуру exit с ненулевым
аргументом. Если новый процесс явно не задал положительное состояние выхода,
положительное состояние выхода указывает на аномальный выход с прерыванием
или прерыванием. Возвращаемое значение -1 указывает на ошибку (новый
процесс не запущен). В этом случае errno имеет одно из следующих значений.
Значение Описание
Эти функции проверяют свои параметры. cmdname Если или arg0 является пустой
строкой или пустым указателем, вызывается обработчик недопустимых
параметров, как описано в разделе Проверка параметров. Если продолжение
выполнения разрешено, эти функции устанавливают для errno значение EINVAL и
возвращают -1. Нет порожденных новых процессов.
Комментарии
Каждая из этих функций создает и выполняет новый процесс, передавая все
аргументы командной строки как отдельные параметры.
Требования
Подпрограмма Обязательный заголовок
_spawnl <process.h>
Пример
См. пример в _spawn, _wspawn functions.
_spawnФункции , _wspawn
abort
atexit
_execФункции , _wexec
_flushall
_getmbcp
_onexit, _onexit_m
_setmbcp
system, _wsystem
spawnle
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
intptr_t _spawnle(
int mode,
NULL,
);
intptr_t _wspawnle(
int mode,
NULL,
);
Параметры
mode
cmdname
envp
Возвращаемое значение
Возвращаемое значение синхронных функций _spawnle или _wspawnle (для
параметра _P_WAIT указано значение _ mode ) — это состояние завершения нового
процесса. Возвращаемое значение асинхронной функции _spawnle или _wspawnle
(для параметра _P_NOWAIT указано значение _P_NOWAITO или mode ) — это дескриптор
процесса. Состояние выхода имеет значение 0, если процесс завершился обычным
образом. Для состояния выхода можно задать ненулевое значение, если
порожденный процесс специально вызывает процедуру exit с ненулевым
аргументом. Если новый процесс явно не установил положительное состояние
выхода, положительное состояние выхода указывает на ненормальный выход с
прерыванием или прерыванием. Возвращаемое значение -1 указывает на ошибку
(новый процесс не запущен). В этом случае errno имеет одно из следующих
значений.
Значение Описание
Комментарии
Каждая из этих функций создает и выполняет новый процесс и передает каждый
аргумент командной строки как отдельный параметр, а также передает массив
указателей на параметры среды.
Эти функции проверяют свои параметры. Если либо является пустой строкой или
пустым указателем, вызывается обработчик недопустимых параметров, как
описано в разделе "Проверка параметров". cmdname arg0 Если продолжение
выполнения разрешено, эти функции устанавливают для errno значение EINVAL и
возвращают -1. Нет порожденных новых процессов.
Требования
Подпрограмма Обязательный заголовок
_spawnle <process.h>
Пример
См. пример в _spawnразделе " _wspawn Функции".
abort
atexit
_flushall
_getmbcp
_onexit, _onexit_m
_setmbcp
system, _wsystem
spawnlp
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
intptr_t _spawnlp(
int mode,
NULL
);
intptr_t _wspawnlp(
int mode,
NULL
);
Параметры
mode
cmdname
Возвращаемое значение
Возвращаемое значение синхронных функций _spawnlp или _wspawnlp (для
параметра _P_WAIT указано значение _ mode ) — это состояние завершения нового
процесса. Возвращаемое значение асинхронной функции _spawnlp или _wspawnlp
(для параметра _P_NOWAIT указано значение _P_NOWAITO или mode ) — это дескриптор
процесса. Состояние выхода имеет значение 0, если процесс завершился обычным
образом. Для состояния выхода можно задать ненулевое значение, если
порожденный процесс специально вызывает процедуру exit с ненулевым
аргументом. Если новый процесс явно не задал положительное состояние выхода,
положительное состояние выхода указывает на аномальный выход с прерыванием
или прерыванием. Возвращаемое значение -1 указывает на ошибку (новый
процесс не запущен). В этом случае errno имеет одно из следующих значений.
Значение Описание
Комментарии
Каждая из этих функций создает и выполняет новый процесс и передает каждый
аргумент командной строки как отдельный параметр, а также использует
переменную среды PATH для поиска выполняемого файла.
Эти функции проверяют свои параметры. Если или cmdname arg0 является пустой
строкой или пустым указателем, эти функции создают исключение недопустимого
параметра, как описано в разделе Проверка параметров. Если продолжение
выполнения разрешено, эти функции устанавливают для errno значение EINVAL и
возвращают -1. Нет порожденных новых процессов.
Требования
Подпрограмма Обязательный заголовок
_spawnlp <process.h>
Пример
См. пример в _spawn, _wspawn functions.
_spawnФункции , _wspawn
abort
atexit
_execФункции , _wexec
_flushall
_getmbcp
_onexit, _onexit_m
_setmbcp
system, _wsystem
spawnlpe
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
intptr_t _spawnlpe(
int mode,
NULL,
);
intptr_t _wspawnlpe(
int mode,
NULL,
);
Параметры
mode
cmdname
envp
Возвращаемое значение
Возвращаемое значение синхронных функций _spawnlpe или _wspawnlpe (для
параметра _P_WAIT указано значение _ mode ) — это состояние завершения нового
процесса. Возвращаемое значение асинхронной функции _spawnlpe или _wspawnlpe
(для параметра _P_NOWAIT указано значение _P_NOWAITO или mode ) — это дескриптор
процесса. Состояние выхода имеет значение 0, если процесс завершился обычным
образом. Для состояния выхода можно задать ненулевое значение, если
порожденный процесс использует ненулевой аргумент для вызова процедуры
exit . Если новый процесс явно не установил положительное состояние выхода,
положительное состояние выхода указывает на ненормальный выход, вызванный
прерыванием или прерыванием. Возвращаемое значение -1 указывает на ошибку
(новый процесс не запущен). В этом случае errno имеет одно из следующих
значений.
Значение Описание
Комментарии
Каждая из этих функций создает и выполняет новый процесс и передает каждый
аргумент командной строки как отдельный параметр, а также передает массив
указателей на параметры среды. Для поиска выполняемого файла в таких функциях
используется переменная среды PATH .
Эти функции проверяют свои параметры. Если либо является пустой строкой или
пустым указателем, вызывается обработчик недопустимых параметров, как
описано в разделе "Проверка параметров". cmdname arg0 Если продолжение
выполнения разрешено, эти функции устанавливают для errno значение EINVAL и
возвращают -1. Нет порожденных новых процессов.
Требования
Подпрограмма Обязательный заголовок
_spawnlpe <process.h>
Пример
См. пример в _spawnразделе " _wspawn Функции".
abort
atexit
_flushall
_getmbcp
_onexit, _onexit_m
_setmbcp
system, _wsystem
spawnv
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
intptr_t _spawnv(
int mode,
);
intptr_t _wspawnv(
int mode,
);
Параметры
mode
cmdname
argv
Значение Описание
Комментарии
Каждая из этих функций создает и выполняет новый процесс, передавая ему
массив указателей на аргументы командной строки.
Эти функции проверяют свои параметры. Если значение cmdname или argv является
пустым указателем или указывает argv на пустой указатель или argv[0] является
пустой строкой, вызывается обработчик недопустимых параметров, как описано в
разделе Проверка параметров. Если продолжение выполнения разрешено, эти
функции устанавливают для errno значение EINVAL и возвращают -1. Нет
порожденных новых процессов.
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, см. статью Глобальное состояние в CRT.
Требования
Подпрограмма Обязательный заголовок
Пример
См. пример в _spawn, _wspawn functions.
_spawnФункции , _wspawn
abort
atexit
_execФункции , _wexec
_flushall
_getmbcp
_onexit, _onexit_m
_setmbcp
system, _wsystem
spawnve
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
intptr_t _spawnve(
int mode,
);
intptr_t _wspawnve(
int mode,
);
Параметры
mode
cmdname
argv
envp
Возвращаемое значение
Возвращаемое значение синхронных функций _spawnve или _wspawnve (для
параметра _P_WAIT указано значение _ mode ) — это состояние завершения нового
процесса. Возвращаемое значение асинхронной функции _spawnve или _wspawnve
(для параметра _P_NOWAIT указано значение _P_NOWAITO или mode ) — это дескриптор
процесса. Состояние выхода имеет значение 0, если процесс завершился обычным
образом. Для состояния выхода можно задать ненулевое значение, если
порожденный процесс специально вызывает процедуру exit с ненулевым
аргументом. Если новый процесс явно не установил положительное состояние
выхода, положительное состояние выхода указывает на ненормальный выход с
прерыванием или прерыванием. Возвращаемое значение -1 указывает на ошибку
(новый процесс не запущен). В этом случае errno имеет одно из следующих
значений.
Значение Описание
Комментарии
Каждая из этих функций создает и выполняет новый процесс, передавая ему
массив указателей на аргументы командной строки и массив указателей на
параметры среды.
Эти функции проверяют свои параметры. Если какой-либо cmdname или argv
является пустым указателем или указывает argv на пустой указатель или argv[0]
является пустой строкой, вызывается обработчик недопустимых параметров, как
описано в разделе "Проверка параметров". Если продолжение выполнения
разрешено, эти функции устанавливают для errno значение EINVAL и возвращают
-1. Нет порожденных новых процессов.
Требования
Подпрограмма Обязательный заголовок
Пример
См. пример в _spawnразделе " _wspawn Функции".
abort
atexit
_flushall
_getmbcp
_onexit, _onexit_m
_setmbcp
system, _wsystem
spawnvp
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
intptr_t _spawnvp(
int mode,
);
intptr_t _wspawnvp(
int mode,
);
Параметры
mode
cmdname
argv
Значение Описание
Комментарии
Каждая из этих функций создает и выполняет новый процесс, передавая ему
массив указателей на аргументы командной строки и используя для поиска файла,
который необходимо выполнить, переменную среды PATH .
Эти функции проверяют свои параметры. Если значение cmdname или argv является
пустым указателем или указывает argv на пустой указатель или argv[0] является
пустой строкой, вызывается обработчик недопустимых параметров, как описано в
разделе Проверка параметров. Если продолжение выполнения разрешено, эти
функции устанавливают для errno значение EINVAL и возвращают -1. Нет
порожденных новых процессов.
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, см. статью Глобальное состояние в CRT.
Требования
Подпрограмма Обязательный заголовок
Пример
См. пример в _spawn, _wspawn functions.
_spawnФункции , _wspawn
abort
atexit
_execФункции , _wexec
_flushall
_getmbcp
_onexit, _onexit_m
_setmbcp
system, _wsystem
spawnvpe
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
intptr_t _spawnvpe(
int mode,
);
intptr_t _wspawnvpe(
int mode,
);
Параметры
mode
cmdname
argv
envp
Возвращаемое значение
Возвращаемое значение синхронных функций _spawnvpe или _wspawnvpe (для
параметра _P_WAIT указано значение _ mode ) — это состояние завершения нового
процесса. Возвращаемое значение асинхронной функции _spawnvpe или _wspawnvpe
(для параметра _P_NOWAIT указано значение _P_NOWAITO или mode ) — это дескриптор
процесса. Состояние выхода имеет значение 0, если процесс завершился обычным
образом. Для состояния выхода можно задать ненулевое значение, если
порожденный процесс специально вызывает процедуру exit с ненулевым
аргументом. Если новый процесс явно не установил положительное состояние
выхода, положительное состояние выхода указывает на ненормальный выход с
прерыванием или прерыванием. Возвращаемое значение -1 указывает на ошибку
(новый процесс не запущен). В этом случае errno имеет одно из следующих
значений:
Значение Описание
Комментарии
Каждая из этих функций создает и выполняет новый процесс, передавая ему
массив указателей на аргументы командной строки и массив указателей на
параметры среды. Для поиска выполняемого файла в таких функциях используется
переменная среды PATH .
Эти функции проверяют свои параметры. Если какой-либо cmdname или argv
является пустым указателем или указывает argv на пустой указатель или argv[0]
является пустой строкой, вызывается обработчик недопустимых параметров, как
описано в разделе "Проверка параметров ". Если продолжение выполнения
разрешено, эти функции устанавливают для errno значение EINVAL и возвращают
-1. Нет порожденных новых процессов.
Требования
Подпрограмма Обязательный заголовок
Пример
См. пример в _spawnразделе " _wspawn Функции".
atexit
_flushall
_getmbcp
_onexit, _onexit_m
_setmbcp
system, _wsystem
_splitpath , _wsplitpath
Статья • 03.04.2023
Синтаксис
C
void _splitpath(
char *drive,
char *dir,
char *fname,
char *ext
);
void _wsplitpath(
wchar_t *dir,
wchar_t *fname,
wchar_t *ext
);
Параметры
path
Полный путь.
drive
Буква диска, за которой следует двоеточие (:). Этот параметр можно передать NULL
, если буква диска не нужна.
dir
fname
Базовое имя файла (без расширения). Этот параметр можно передать NULL , если
имя файла не требуется.
ext
Расширение имени файла, включая начальную точку (.). Этот параметр можно
передать NULL , если расширение имени файла не требуется.
Комментарии
Функция _splitpath разделяет путь на четыре компонента. Функция _splitpath
автоматически требуемым образом обрабатывает аргументы в виде
многобайтовых строк, распознавая многобайтовые последовательности символов
в соответствии с текущей многобайтовой кодовой страницей. _wsplitpath — это
двухбайтовая версия _splitpath ; аргументы для _wsplitpath представляют собой
двухбайтовые строки. В остальном эти функции ведут себя одинаково.
_MAX_DRIVE 3
_MAX_DIR 256
_MAX_FNAME 256
_MAX_EXT 256
Вы можете передать NULL в _splitpath для любого параметра, кроме path того,
который вам не нужен.
Требования
Подпрограмма Обязательный заголовок
_splitpath <stdlib.h>
Пример
См. пример для _makepath.
_fullpath, _wfullpath
_getmbcp
_makepath, _wmakepath
_setmbcp
_splitpath_s, _wsplitpath_s
_splitpath_s , _wsplitpath_s
Статья • 03.04.2023
Синтаксис
C
errno_t _splitpath_s(
char * drive,
size_t driveNumberOfElements,
char * dir,
size_t dirNumberOfElements,
char * fname,
size_t nameNumberOfElements,
char * ext,
size_t extNumberOfElements
);
errno_t _wsplitpath_s(
wchar_t * drive,
size_t driveNumberOfElements,
wchar_t *dir,
size_t dirNumberOfElements,
wchar_t * fname,
size_t nameNumberOfElements,
wchar_t * ext,
size_t extNumberOfElements
);
errno_t _splitpath_s(
char (&drive)[drivesize],
char (&dir)[dirsize],
char (&fname)[fnamesize],
char (&ext)[extsize]
); // C++ only
errno_t _wsplitpath_s(
wchar_t (&dir)[dirsize],
wchar_t (&fname)[fnamesize],
wchar_t (&ext)[extsize]
); // C++ only
Параметры
path
Полный путь.
drive
Буква диска с двоеточием в конце ( : ). Этот параметр можно передать NULL , если
буква диска не нужна.
driveNumberOfElements
dir
dirNumberOfElements
fname
Базовое имя файла (без расширения). Этот параметр можно передать NULL , если
имя файла не требуется.
nameNumberOfElements
ext
extNumberOfElements
Условия ошибок
Условие Возвращаемое
значение
Если какой-либо из этих буферов слишком мал для хранения результата, эти
функции очищают все буферы, присваивают им пустые строки, устанавливают для
параметра errno значение ERANGE и возвращают ERANGE .
Комментарии
Функция _splitpath_s разделяет путь на четыре компонента. Функция _splitpath_s
автоматически требуемым образом обрабатывает аргументы в виде
многобайтовых строк, распознавая многобайтовые последовательности символов
в соответствии с текущей многобайтовой кодовой страницей. _wsplitpath_s — это
двухбайтовая версия _splitpath_s ; аргументы для _wsplitpath_s представляют
собой двухбайтовые строки. В остальном эти функции ведут себя одинаково.
Имя Значение
_MAX_DRIVE 3
_MAX_DIR 256
_MAX_FNAME 256
_MAX_EXT 256
Версии библиотек отладки этих функций сначала заполняют буфер 0xFE. Чтобы
отключить это поведение, используйте ._CrtSetDebugFillThreshold
Требования
Подпрограмма Обязательный заголовок
_splitpath_s <stdlib.h>
Пример
См. пример для _makepath_s, _wmakepath_s.
_splitpath, _wsplitpath
_fullpath, _wfullpath
_getmbcp
_makepath, _wmakepath
_setmbcp
sprintf , _sprintf_l , swprintf ,
_swprintf , _swprintf_l , __swprintf_l
Статья • 10.03.2023
Синтаксис
C
int sprintf(
char *buffer,
argument] ...
);
int _sprintf_l(
char *buffer,
_locale_t locale [,
argument] ...
);
int swprintf(
wchar_t *buffer,
size_t count,
argument]...
);
int _swprintf(
wchar_t *buffer,
argument]...
);
int _swprintf_l(
wchar_t *buffer,
size_t count,
_locale_t locale [,
argument] ...
);
int __swprintf_l(
wchar_t *buffer,
_locale_t locale [,
argument] ...
);
int sprintf(
char (&buffer)[size],
argument] ...
); // C++ only
int _sprintf_l(
char (&buffer)[size],
_locale_t locale [,
argument] ...
); // C++ only
Параметры
buffer
count
format
argument
Необязательные аргументы
locale
Возвращаемое значение
Число записанных символов или -1, если произошла ошибка. Если buffer или
format является пустым указателем, вызывается обработчик недопустимых
параметров, как описано в разделе Проверка параметров. Если разрешается
продолжать выполнение, эти функции возвращают -1 и задают errno значение
EINVAL .
Комментарии
Функция sprintf форматирует и сохраняет набор символов и значений в buffer .
Каждый argument (если он есть) преобразуется и выводится согласно
соответствующей спецификацией формата в format . Формат состоит из обычных
символов и имеет те же форму и функциональные возможности, что и аргумент
format для printf. После последнего написанного символа добавляется символ null.
Если копирование производится между перекрывающимися строками, поведение
не определено.
) Важно!
В будущей версии старое поведение может быть удалено, поэтому код необходимо
изменить в соответствии с новым стандартным поведением.
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые
и безопасные аналоги этих функций. Дополнительные сведения см. в разделе
Безопасные перегрузки шаблонов.
Требования
Подпрограмма Обязательный заголовок
// crt_sprintf.c
#include <stdio.h>
int i = 35, j;
float fp = 1.7320534f;
Output
Output:
String: computer
Character: l
Integer: 35
Real: 1.732053
character count = 79
// crt_swprintf.c
#include <stdio.h>
wchar_t buf[100];
Output
wrote 11 characters
wrote -1 characters
Функции vprintf
_sprintf_p , _sprintf_p_l , _swprintf_p ,
_swprintf_p_l
Статья • 03.04.2023
Синтаксис
C
int _sprintf_p(
char *buffer,
size_t sizeOfBuffer,
const char *format [,
argument_list]
);
int _sprintf_p_l(
char *buffer,
size_t sizeOfBuffer,
const char *format,
_locale_t locale [,
argument_list]
);
int _swprintf_p(
wchar_t *buffer,
size_t sizeOfBuffer,
const wchar_t *format [,
argument_list]
);
int _swprintf_p_l(
wchar_t *buffer,
size_t sizeOfBuffer,
const wchar_t *format,
_locale_t locale [,
argument_list]
);
Параметры
buffer
sizeOfBuffer
argument_list
locale
Возвращаемое значение
Число записанных символов или -1, если произошла ошибка.
Комментарии
Функция _sprintf_p форматирует и сохраняет набор символов и значений в
buffer . Каждый аргумент в (если таковой argument_list имеется) преобразуется и
) Важно!
Требования
Подпрограмма Обязательный заголовок
// crt_sprintf_p.c
//
#include <stdio.h>
char buffer[200],
int i = 35,
j;
float fp = 1.7320534f;
buffer, j );
Output
Output:
String: computer
Character: l
Integer: 35
Real: 1.732053
character count = 79
// crt_swprintf_p.c
// error code.
#include <stdio.h>
wchar_t buffer[BUFFER_SIZE];
int len;
L"Hello\xffff world" );
Output
Wrote 24 characters
Wrote -1 characters
Функции vprintf
Синтаксис
C
int sprintf_s(
char *buffer,
size_t sizeOfBuffer,
const char *format,
...
);
int _sprintf_s_l(
char *buffer,
size_t sizeOfBuffer,
const char *format,
_locale_t locale,
...
);
int swprintf_s(
wchar_t *buffer,
size_t sizeOfBuffer,
const wchar_t *format,
...
);
int _swprintf_s_l(
wchar_t *buffer,
size_t sizeOfBuffer,
const wchar_t *format,
_locale_t locale,
...
);
int sprintf_s(
char (&buffer)[size],
...
); // C++ only
int swprintf_s(
wchar_t (&buffer)[size],
...
); // C++ only
Параметры
buffer
sizeOfBuffer
format
...
locale
Возвращаемое значение
Число записанных символов или -1, если произошла ошибка. Если buffer или
format является пустым указателем, sprintf_s и swprintf_s возвращают значение
Комментарии
Функция sprintf_s форматирует и сохраняет набор символов и значений в buffer .
Каждый argument (если он есть) преобразуется и выводится согласно
соответствующей спецификацией формата в format . Формат состоит из обычных
символов и имеет те же форму и функциональные возможности, что и аргумент
format для printf. После последнего написанного символа добавляется символ null.
) Важно!
Требования
Подпрограмма Обязательный заголовок
//
#include <stdio.h>
int i = 35, j;
float fp = 1.7320534f;
Output
Output:
String: computer
Character: l
Integer: 35
Real: 1.732053
character count = 79
// crt_swprintf_s.c
#include <stdio.h>
wchar_t buf[100];
Output
wrote 11 characters
wrote -1 characters
Функции vprintf
sqrt , sqrtf , sqrtl
Статья • 03.04.2023
Синтаксис
C
double sqrt(
double x
);
float sqrt(
float x
); // C++ only
long double x
); // C++ only
float sqrtf(
float x
);
long double x
);
Параметры
x
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки sqrt , которые
принимают типы float или long double . В программе на языке C, если вы не
используете <tgmath.h> макрос для вызова этой функции, sqrt всегда принимает и
возвращает . double
Возвращаемое значение
Функции sqrt возвращают квадратный корень x . По умолчанию, если x имеет
отрицательное значение, sqrt возвращает неопределенное значение NaN .
Требования
Компонент Заголовок C Заголовок C++
Пример
C
// crt_sqrt.c
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
else
Output
_CIsqrt\
srand
Статья • 03.04.2023
Синтаксис
C
void srand(
);
Параметры
seed
Комментарии
Функция srand задает начальную точку для создания ряда псевдослучайных целых
чисел в текущем потоке. Для повторной инициализации генератора для создания
результатов той же последовательности результатов вызовите функцию srand и
использовать тот же аргумент seed . Любое другое значение для seed задает для
генератора другую начальную точку создания последовательности
псевдослучайных чисел. rand возвращает созданные псевдослучайные числа.
Вызов rand , предшествующий вызову srand , создает ту же последовательность, что
и вызов srand с seed , переданный в качестве 1.
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
srand <stdlib.h>
Пример
См. пример для rand.
Синтаксис
C
int sscanf(
argument ] ...
);
int _sscanf_l(
_locale_t locale [,
argument ] ...
);
int swscanf(
argument ] ...
);
int _swscanf_l(
_locale_t locale [,
argument ] ...
);
Параметры
buffer
Сохраненные данные
format
argument
Необязательные аргументы
locale
Возвращаемое значение
Каждая из этих функций возвращает количество успешно преобразованных и
назначенных полей; Возвращаемое значение не включает поля, которые были
прочитаны, но не назначены. Возвращаемое значение 0 указывает, что поля не
были назначены. Если до первого преобразования возникает ошибка или
достигается конец строки, возвращается значение EOF .
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
Комментарии
Функция sscanf считывает данные из buffer в расположение, заданное
параметрами argument . Каждый параметр argument должен быть указателем на
переменную, которая имеет тип, соответствующий спецификатору типа в
параметре format . Аргумент format определяет интерпретацию полей входных
данных и имеет такую же форму и функцию, как аргумент format для функции
scanf . Если копирование производится между перекрывающимися строками,
поведение не определено.
Сведения о символах полей типа scanf см. в разделе scanf Символы полей типа.
Сведения о полях спецификации формата scanf см. в разделе Поля спецификации
формата.
) Важно!
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_sscanf.c
#include <stdio.h>
char s[81];
char c;
int i;
float fp;
Output
String = 15
Character = 1
Integer: = 15
Real: = 15.000000
Синтаксис
C
int sscanf_s(
argument ] ...
);
int _sscanf_s_l(
_locale_t locale [,
argument ] ...
);
int swscanf_s(
argument ] ...
);
int _swscanf_s_l(
_locale_t locale [,
argument ] ...
);
Параметры
buffer
Сохраненные данные
format
Необязательные аргументы
locale
Возвращаемое значение
Каждая из этих функций возвращает количество полей, которые успешно
преобразованы и назначены. Возвращаемое значение не включает поля, которые
были прочитаны, но не назначены. Возвращаемое значение 0 указывает, что поля
не были назначены. Если до первого преобразования возникает ошибка или
достигается конец строки, возвращается значение EOF .
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
Комментарии
Функция sscanf_s считывает данные из buffer в расположение, заданное
параметрами argument . Аргументы, следующие за строкой формата, задают
указатели на переменные, имеющие тип, соответствующий спецификатору типа в
format . В отличие от менее безопасной версии sscanf требуется параметр размера
буфера при использовании символов полей типа c , C , s , S или наборов
элементов управления строк, заключенных в [] . Размер буфера в символах
должен быть указан в качестве дополнительного параметра сразу после каждого
параметра буфера, которому он требуется. Например, при чтении в строку размер
буфера для этой строки передается следующим образом:
wchar_t ws[10];
wchar_t wc;
char c[4];
7 Примечание
Параметр размера имеет тип unsigned , а не size_t . При компиляции для 64-
разрядных целевых объектов следует использовать static_cast для
преобразования результатов _countof или sizeof до требуемых размеров.
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_sscanf_s.c
#include <stdio.h>
#include <stdlib.h>
char s[81];
char c;
int i;
float fp;
Output
String = 15
Character = 1
Integer: = 15
Real: = 15.000000
Синтаксис
C
int _stat(
);
int _stat32(
);
int _stat64(
);
int _stati64(
);
int _stat32i64(
);
int _stat64i32(
);
int _wstat(
);
int _wstat32(
);
int _wstat64(
);
int _wstati64(
);
int _wstat32i64(
);
int _wstat64i32(
);
Параметры
path
buffer
Возвращаемое значение
Каждая из этих функций возвращает 0, если получена информация о состоянии
файла. Возвращаемое значение -1 указывает на ошибку. В этом случае errno
устанавливается значение ENOENT , указывающее, что не удалось найти имя файла
или путь. Возвращаемое значение EINVAL указывает на недопустимый параметр; в
этом случае параметр errno также принимает значение EINVAL .
Метка даты в файле может быть представлена, если она позже полуночи, 1 января
1970 года, и до 23:59:59 31 декабря 3000 года в формате UTC, если вы не
используете _stat32 или _wstat32 не определили _USE_32BIT_TIME_T . В этом случае
дата может быть представлена только до 23:59:59 18 января 2038 г. (UTC).
Комментарии
Функция _stat получает сведения о файле или каталоге, указанном параметром
path , и сохраняет их в структуре, указанной в параметре buffer . Функция _stat
автоматически требуемым образом обрабатывает аргументы в виде
многобайтовых строк, распознавая многобайтовые последовательности символов
в соответствии с текущей многобайтовой кодовой страницей.
_wstat — это версия _stat с расширенными символами; аргумент path для _wstat
— строка расширенных символов. _wstat и _stat ведут себя одинаково, за
исключением того, что _wstat не обрабатывает многобайтовые строки символов.
7 Примечание
Эта функция проверяет свои параметры. Если параметр path или buffer имеет
значение NULL , вызывается обработчик недопустимых параметров, как описано в
разделе Проверка параметров.
Поле Описание
Поле Описание
st_gid Числовой идентификатор группы, которой принадлежит файл (только для UNIX).
В системах Windows это поле всегда равно нулю. Перенаправленный файл
классифицируется как файл Windows.
st_ino Номер узла информации ( inode ) для файла (только для UNIX). В файловых
системах UNIX параметр inode описывает отметки даты и времени файла,
разрешения и содержимое. Если файлы связаны жесткими ссылками друг с
другом, они имеют один и тот же параметр inode . Параметр inode и,
следовательно, параметр st_ino не имеют смысла в файловых системах FAT, HPFS
и NTFS.
st_size Размер файла в байтах; 64-разрядное целое число для вариантов с суффиксом
i64 .
Требования
Подпрограмма Обязательный заголовок Необязательные
заголовки
Пример
C
// crt_stat.c
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <errno.h>
int result;
char timebuf[26];
errno_t err;
if( result != 0 )
switch (errno)
case ENOENT:
break;
case EINVAL:
break;
default:
else
if (err)
exit(1);
Output
Drive : C:
_access, _waccess
_getmbcp
_setmbcp
_STATIC_ASSERT Макрос
Статья • 03.04.2023
Синтаксис
C
_STATIC_ASSERT(
booleanExpression
);
Параметры
booleanExpression
Комментарии
Этот макрос похож на _ASSERT макросы и _ASSERTE, за исключением того, что
booleanExpression вычисляется во время компиляции, а не во время выполнения.
Пример
В этом примере проверяется, является ли sizeof int больше или равно двум байтам
и равно ли значение sizeof long одному байту. Программа не будет
компилироваться и создаст ошибку компилятора C2466 , так как long больше 1
байта.
// crt__static_assert.c
#include <crtdbg.h>
#include <stdio.h>
int main()
sizeof(int));
sizeof(long));
Requirements (Требования)
Макрос Обязательный заголовок
_STATIC_ASSERT <crtdbg.h>
Синтаксис
C
Параметры
px86
pSSE2
Возвращаемое значение
Для функций _status87 и _statusfp биты в возвращаемом значении указывают
состояние модуля операций с плавающей запятой. Определения битов,
возвращаемых функцией _statusfp , см. в файле FLOAT.H. Многие математические
библиотечные функции изменяют слово состояния операций с плавающей запятой
с непредсказуемыми результатами. Оптимизация может изменять, объединять и
исключать операции с плавающей запятой вокруг вызовов _status87 , _statusfp и
связанных функций. Используйте параметр компилятора /Od (Disable (Debug)) или
директиву fenv_access pragma, чтобы предотвратить оптимизацию, которая
переупоряет порядок операций с плавающей запятой. Чем меньше операций с
плавающей запятой выполняется между известными значениями слова состояния
модуля операций с плавающей запятой, тем надежнее возвращаемые из функций
_clearfp и _statusfp значения, а также возвращаемые параметры функции
_statusfp2 .
Комментарии
Функция _statusfp получает слово состояния модуля операций с плавающей
запятой. Слово состояния содержит состояние модуля операций с плавающей
запятой и другие условия, обнаруженные обработчиком исключений операций с
плавающей запятой, — например, переполнение стека или потеря точности. Перед
возвращением содержимого слова состояния проверяются немаскированные
исключения. Иными словами, вызывающий объект уведомляется об ожидающих
исключениях. На платформах x86 функция _statusfp возвращает комбинацию
состояний x87 и SSE2 модуля операций с плавающей запятой. На 64-разрядных
платформах возвращаемое состояние зависит от состояния MXCSR SSE. На
платформах _statusfp ARM64 возвращает состояние из регистра FPSCR.
Для процессоров, поддерживающих как набор команд x87, так и SSE2 (например,
Pentium IV), рекомендуется использовать функцию _statusfp2 . В случае функции
_statusfp2 адреса заполняются с использованием слова состояния процессора
операций с плавающей запятой как для x87, так и для SSE2. Для микросхемы,
поддерживающей процессоры x87 и SSE2 с плавающей запятой, устанавливается
значение 1, EM_AMBIGUOUS если _statusfp используется или _controlfp и действие
было неоднозначным, так как оно может ссылаться на x87 или слово состояния
SSE2 с плавающей запятой. Функция _statusfp2 поддерживается только на
платформах x86.
Эти функции не полезны для /clr (компиляция СРЕДЫ CLR), так как среда CLR
поддерживает только точность с плавающей запятой по умолчанию.
Требования
Подпрограмма Обязательный заголовок
// crt_statusfp.c
#include <stdio.h>
#include <float.h>
#pragma fenv_access(on)
double a = 1e-40;
float b;
double c;
b = (float)(a + 1e-40);
// c is denormal:
c = b / 2.0;
_statusfp());
_clearfp();
return c;
int main(void)
return (int)test();
Output
) Важно!
Синтаксис
C
char *strcat(
char *strDestination,
);
wchar_t *wcscat(
wchar_t *strDestination,
);
);
char *strcat(
char (&strDestination)[size],
); // C++ only
wchar_t *wcscat(
wchar_t (&strDestination)[size],
); // C++ only
); // C++ only
Параметры
strDestination
strSource
Возвращаемое значение
Каждая из этих функций возвращает строку назначения ( strDestination ). Нет
зарезервированных возвращаемых значений для указания ошибки.
Комментарии
Функция strcat добавляет strSource в strDestination и завершает
результирующую строку символом NULL. Начальный символ строки strSource
переопределяет завершающий нуль-символ строки strDestination . При
перекрытии исходного и конечного буферов поведение strcat не определено.
) Важно!
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые
и безопасные аналоги этих функций. Дополнительные сведения см. в разделе
Безопасные перегрузки шаблонов.
Требования
Подпрограмма Обязательный заголовок
strcat <string.h>
_mbscat <mbstring.h>
Пример
См. пример для strcpy.
) Важно!
Синтаксис
C
errno_t strcat_s(
char *strDestination,
size_t numberOfElements,
);
errno_t wcscat_s(
wchar_t *strDestination,
size_t numberOfElements,
);
errno_t _mbscat_s(
size_t numberOfElements,
);
errno_t _mbscat_s_l(
size_t numberOfElements,
_locale_t locale
);
errno_t strcat_s(
char (&strDestination)[size],
); // C++ only
errno_t wcscat_s(
wchar_t (&strDestination)[size],
); // C++ only
errno_t _mbscat_s(
); // C++ only
errno_t _mbscat_s_l(
_locale_t locale
); // C++ only
Параметры
strDestination
numberOfElements
strSource
locale
Возвращаемое значение
Возвращает нуль в случае успеха или код ошибки в случае неудачи.
Условия ошибок
Комментарии
Функция strcat_s добавляет strSource в strDestination и завершает
результирующую строку символом NULL. Начальный символ строки strSource
переопределяет завершающий нуль-символ строки strDestination . При
перекрытии исходного и конечного буферов поведение strcat_s не определено.
char buf[16];
Требования
Подпрограмма Обязательный заголовок
strcat_s <string.h>
_mbscat_s <mbstring.h>
Пример
См. пример кода в strcpy_s, wcscpy_s, _mbscpy_s.
) Важно!
Синтаксис
C
char *strchr(
int c
); // C only
char *strchr(
char * str,
int c
); // C++ only
int c
); // C++ only
wchar_t *wcschr(
wchar_t c
); // C only
wchar_t *wcschr(
wchar_t *str,
wchar_t c
); // C++ only
wchar_t c
); // C++ only
unsigned int c
); // C only
unsigned int c
); // C++ only
unsigned int c
); // C++ only
unsigned int c,
_locale_t locale
); // C only
unsigned int c,
_locale_t locale
); // C++ only
unsigned int c,
_locale_t locale
); // C++ only
Параметры
str
locale
Возвращаемое значение
Каждая из этих функций возвращает указатель на первое вхождение c в str или ,
NULL если c не найден.
Комментарии
Функция strchr находит первое вхождение c в str или возвращает NULL , если c
не найден. Область поиска включает завершающий символ NULL.
Функции wcschr , _mbschr и _mbschr_l являются версиями функции strchr для
расширенных и многобайтовых символов. Аргументы и возвращаемое значение
являются wcschr строками расширенных символов. Аргументы и возвращаемое
значение являются _mbschr многобайтовыми строками символов. _mbschr
распознает последовательности многобайтовых символов. Кроме того, если строка
является пустым указателем, _mbschr вызывает обработчик недопустимых
параметров, как описано в разделе Проверка параметров. Если выполнение может
быть продолжено, функция _mbschr возвращает значение NULL и устанавливает
параметр errno в значение EINVAL . strchr и wcschr не проверяют свои параметры.
В остальном эти три функции ведут себя идентично.
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
strchr <string.h>
Пример
C
// crt_strchr.c
//
//
#include <string.h>
#include <stdio.h>
int ch = 'r';
char string[] = "The quick brown dog jumps over the lazy fox";
char *pdest;
int result;
// Search forward.
if ( pdest != NULL )
printf_s( "Result: first %c found at position %d\n",
ch, result );
else
// Search backward.
if ( pdest != NULL )
printf_s( "Result: last %c found at position %d\n", ch, result );
else
Output
String to be searched:
1 2 3 4 5
12345678901234567890123456789012345678901234567890
Search char: r
Локаль
Сравнивают строки.
) Важно!
Синтаксис
C
int strcmp(
);
int wcscmp(
);
int _mbscmp(
);
int _mbscmp_l(
_locale_t locale
);
Параметры
string1 , string2
locale
Комментарии
Функция strcmp выполняет порядковое сравнение строк string1 и string2 и
возвращает значение, которое указывает их отношение. Функции wcscmp и _mbscmp
являются версиями функции strcmp для расширенных и многобайтовых символов
соответственно. _mbscmp распознает последовательности многобайтовых символов
в соответствии с текущей многобайтовой кодовой страницей и возвращает
_NLSCMPERROR при ошибке. _mbscmp_l имеет то же поведение, но использует
Требования
Подпрограмма Обязательный заголовок
strcmp <string.h>
_mbscmp <mbstring.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_strcmp.c
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown dog jumps over the lazy fox";
char tmp[20];
int result;
// Case sensitive
else
else
Output
Compare strings:
memcmp, wmemcmp
_memicmp, _memicmp_l
Функции strcoll
) Важно!
Синтаксис
C
int strcoll(
);
int wcscoll(
);
int _mbscoll(
);
int _strcoll_l(
);
int wcscoll_l(
_locale_t locale
);
int _mbscoll_l(
_locale_t locale
);
Параметры
string1 , string2
locale
Возвращаемое значение
Каждая из этих функций возвращает значение, которое соответствует отношению
между string1 и string2 , как показано ниже.
Комментарии
Каждая из этих функций сравнивает с учетом регистра строки string1 и string2 в
соответствии с используемой в настоящее время кодовой страницей. Эти функции
следует использовать только в том случае, если на текущей кодовой странице есть
разница между порядком набора символов и лексикографическим порядком
символов, и это различие представляет интерес для сравнения строк.
Все эти функции проверяют свои параметры. Если значение string1 или string2
является пустым указателем или count больше INT_MAX , вызывается обработчик
недопустимых параметров, как описано в разделе Проверка параметров . Если
продолжение выполнения разрешено, эти функции возвращают _NLSCMPERROR и
устанавливают для errno значение EINVAL .
Сравнение двух строк — это операция, зависящая от языкового стандарта, так как
каждый языковой стандарт теперь имеет разные правила для сортировки
символов. Версии этих функций без суффикса _l используют текущий языковой
стандарт потока для данного поведения, зависимого от языкового стандарта.
Версии с суффиксом _l идентичны соответствующей функции без суффикса,
однако они используют переданный языковой стандарт в качестве параметра
вместо текущего языкового стандарта. Для получения дополнительной
информации см. Locale.
Требования
Подпрограмма Обязательный заголовок
strcoll <string.h>
_strcoll_l <string.h>
Манипуляция со строками
Функции strcoll
localeconv
setlocale, _wsetlocale
) Важно!
Синтаксис
C
char *strcpy(
char *strDestination,
);
wchar_t *wcscpy(
wchar_t *strDestination,
);
);
char *strcpy(
char (&strDestination)[size],
); // C++ only
wchar_t *wcscpy(
wchar_t (&strDestination)[size],
); // C++ only
); // C++ only
Параметры
strDestination
Конечная строка.
strSource
Возвращаемое значение
Каждая из этих функций возвращает строку назначения. Нет зарезервированных
возвращаемых значений для указания ошибки.
Комментарии
Функция strcpy копирует strSource , включая завершающий символ нуля, в
указанное расположение, заданное strDestination . При перекрытии исходного и
конечного буферов поведение strcpy не определено.
) Важно!
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые
и безопасные аналоги этих функций. Дополнительные сведения см. в разделе
Безопасные перегрузки шаблонов.
Требования
Подпрограмма Обязательный заголовок
strcpy <string.h>
_mbscpy <mbstring.h>
Пример
C
// crt_strcpy.c
#include <string.h>
#include <stdio.h>
char string[80];
// char string[20];
Output
) Важно!
Синтаксис
C
errno_t strcpy_s(
char *dest,
rsize_t dest_size,
);
errno_t wcscpy_s(
wchar_t *dest,
rsize_t dest_size,
);
errno_t _mbscpy_s(
);
errno_t _mbscpy_s_l(
_locale_t locale
);
C++
// Template functions are C++ only:
errno_t strcpy_s(
char (&dest)[size],
); // C++ only
errno_t wcscpy_s(
wchar_t (&dest)[size],
); // C++ only
errno_t _mbscpy_s(
); // C++ only
errno_t _mbscpy_s_l(
_locale_t locale
); // C++ only
Параметры
dest
dest_size
src
locale
Возвращаемое значение
Ноль в случае успешного выполнения; в противном случае — код ошибки.
Условия ошибок
Комментарии
Функция strcpy_s копирует содержимое по адресу src , включая завершающий
символ нуля, в указанное расположение, заданное dest . Строка назначения
должна быть достаточно велика для сохранения исходной строки и завершающего
нуля. При перекрытии исходного и конечного буферов поведение strcpy_s не
определено.
Если dest или src является пустым указателем или если размер dest_size строки
назначения слишком мал, вызывается обработчик недопустимых параметров, как
описано в разделе Проверка параметров. Если выполнение может быть
продолжено, эти функции возвращают EINVAL и задают для параметра errno
значение EINVAL , если dest или src являются пустыми указателями. Они
возвращают ERANGE и errno для ERANGE , если строка назначения слишком мала.
Требования
Подпрограмма Обязательный заголовок
strcpy_s <string.h>
_mbscpy_s <mbstring.h>
Пример
В отличие от кода качества в рабочей среде, этот пример вызывает безопасные
строковые функции без проверки на наличие ошибок:
// crt_strcpy_s.c
// to build a phrase.
int main(void)
char stringBuffer[80];
Output
При создании кода C++ версии шаблонов могут быть проще в использовании.
C++
// crt_wcscpy_s.cpp
// to build a phrase.
int main(void)
wchar_t stringBuffer[80];
Output
) Важно!
Синтаксис
C
size_t strcspn(
);
size_t wcscspn(
);
size_t _mbscspn(
);
size_t _mbscspn_l(
_locale_t locale
);
Параметры
str
strCharSet
Возвращаемое значение
Эти функции возвращают индекс первого символа в str , который находится в
strCharSet . Если ни один из символов в str не находится в strCharSet , то
Комментарии
Функции wcscspn и _mbscspn are wide-character и multibyte-character versions of
strcspn для расширенных и многобайтовых символов. Аргументы представляют
_mbscspn проверяет свои параметры. Если или str strCharSet является пустым
Требования
Подпрограмма Обязательный заголовок
strcspn <string.h>
Пример
C
// crt_strcspn.c
#include <string.h>
#include <stdio.h>
Output
Локаль
Синтаксис
C
char *_strdate(
char *datestr
);
wchar_t *_wstrdate(
wchar_t *datestr
);
char *_strdate(
char (&datestr)[size]
); // C++ only
wchar_t *_wstrdate(
wchar_t (&datestr)[size]
); // C++ only
Параметры
datestr
Возвращаемое значение
Каждая из этих функций возвращает указатель на результирующую строку
символов datestr .
Комментарии
Доступны более безопасные версии этих функций; см. ,_strdate_s_wstrdate_s .
Рекомендуется использовать более безопасные функции везде, где это возможно.
Функция _strdate копирует текущую системную дату в буфер, на который
datestr указывает , отформатированный мм/дд/гггг, где мм — две цифры,
представляющие месяц, дд — две цифры, представляющие день, и гг — последние
две цифры года. Например, строка 12/05/99 представляет 5 декабря 1999 г. Размер
буфера должен быть не менее 9 байтов.
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые
и безопасные аналоги этих функций. Дополнительные сведения см. в разделе
"Безопасные перегрузки шаблонов".
Требования
Подпрограмма Обязательный заголовок
_strdate <time.h>
Пример
C
// strdate.c
#include <time.h>
#include <stdio.h>
int main()
char tmpbuf[9];
//
_tzset();
Output
OS date: 04/25/03
asctime, _wasctime
_tzset
_strdate_s , _wstrdate_s
Статья • 03.04.2023
Синтаксис
C
errno_t _strdate_s(
char *buffer,
size_t size
);
errno_t _wstrdate_s(
wchar_t *buffer,
size_t size
);
errno_t _strdate_s(
char (&buffer)[size]
); // C++ only
errno_t _wstrdate_s(
wchar_t (&buffer)[size]
); // C++ only
Параметры
buffer
size
Возвращаемое значение
Нуль при успешном завершении. Возвращаемое значение — это код ошибки, если
произошел сбой. Коды ошибок определены в ERRNO. H; см. в таблице ниже точные
ошибки, создаваемые этой функцией. Дополнительные сведения о кодах ошибок
см. в разделе errno.
Условия ошибок
buffer size Возвращает Содержимое buffer
Проблемы с безопасностью
Если передать недопустимое значение buffer , отличное от NULL, это приведет к
нарушению доступа, если size параметр больше девяти.
Комментарии
Эти функции обеспечивают более безопасные версии _strdate и _wstrdate .
Функция _strdate_s копирует текущую системную дату в буфер, на который
указывает . buffer Форматируется mm/dd/yy , где mm является двухзначный месяц, dd
является двухзначным днем и yy является последними двумя цифрами года.
Например, строка 12/05/99 представляет 5 декабря 1999 г. Буфер должен
содержать не менее девяти символов.
Если buffer указатель NULL меньше size девяти символов, вызывается обработчик
недопустимых параметров. Он описан в разделе "Проверка параметров". Если
выполнение разрешено продолжать, эти функции возвращают значение -1. Они
задают значение EINVAL errno , если буфер или NULL size меньше или равен 0. Или,
errno ERANGE если size значение меньше 9.
В C++ использование этих функций упрощается перегрузками шаблонов.
Перегрузки могут автоматически определять длину буфера, что устраняет
необходимость указания аргумента size . Кроме того, они могут автоматически
заменять небезопасные функции более новыми, более безопасными аналогами.
Дополнительные сведения см. в разделе "Безопасные перегрузки шаблонов".
Версии библиотек отладки этих функций сначала заполняют буфер 0xFE. Чтобы
отключить это поведение, используйте _CrtSetDebugFillThreshold.
Требования
Подпрограмма Обязательный заголовок
_strdate <time.h>
_strdate_s <time.h>
Пример
См. пример для time.
asctime_s, _wasctime_s
_tzset
_strdec , _wcsdec , _mbsdec , _mbsdec_l
Статья • 29.03.2023
) Важно!
Синтаксис
C
);
);
);
_locale_t locale
);
Параметры
start
Указатель на любой символ (или для _mbsdec и _mbsdec_l , первый байт любого
многобайтового символа) в исходной строке; start должен предшествовать
current в исходной строке.
current
Указатель на любой символ (или для _mbsdec и _mbsdec_l , первый байт любого
многобайтового символа) в исходной строке; current должен следовать в start
исходной строке.
locale
Возвращаемое значение
_mbsdec , _mbsdec_l , _strdec и _wcsdec возвращают указатель на символ, который
Комментарии
Функции _mbsdec и _mbsdec_l возвращают указатель на первый байт
многобайтового символа, который непосредственно предшествует current в
строке, содержащей start .
) Важно!
Требования
Подпрограмма Обязательный заголовок Необязательный заголовок
_strdec <tchar.h>
_wcsdec <tchar.h>
Пример
В следующем примере показано использование функции _tcsdec .
C++
// crt_tcsdec.cpp
#include <iostream>
#include <tchar.h>
int main()
str2 = str + 2;
TCHAR *answer;
return (0);
C++
// crt_mbsdec.cpp
#include <iostream>
#include <mbstring.h>
int main()
char *str2;
str2 = str + 2;
return (0);
Повторяющиеся строки.
) Важно!
Синтаксис
C
char *_strdup(
);
wchar_t *_wcsdup(
);
);
Параметры
strSource
Возвращаемое значение
Каждая из этих функций возвращает указатель на расположение хранилища для
скопированной строки или NULL значение , если хранилище не может быть
выделено.
Комментарии
Функция _strdup вызывает malloc для выделения дискового пространства для
копии , strSource а затем копирует strSource в выделенное пространство.
Так как _strdup вызовы malloc для выделения дискового strSource пространства
для копии рекомендуется всегда освобождать эту память, вызывая free
подпрограмму для указателя, возвращаемого вызовом _strdup .
Требования
Подпрограмма Обязательный заголовок
_strdup <string.h>
_mbsdup <mbstring.h>
Пример
C
// crt_strdup.c
#include <string.h>
#include <stdio.h>
char *newstring;
free( newstring );
Output
memset, wmemset
Синтаксис
C
char *_strdup_dbg(
int blockType,
int linenumber
);
wchar_t *_wcsdup_dbg(
int blockType,
int linenumber
);
Параметры
strSource
blockType
filename
linenumber
Возвращаемое значение
Каждая из этих функций возвращает указатель на расположение хранилища для
скопированной строки или NULL значение , если хранилище не может быть
выделено.
Комментарии
Функции _strdup_dbg и _wcsdup_dbg идентичны _strdup и _wcsdup за исключением
того, что если определен флаг _DEBUG , эти функции используют отладочную версию
функций malloc и _malloc_dbg для выделения памяти для повторяющейся строки.
Сведения о функциях отладки _malloc_dbg см. в разделе _malloc_dbg.
Требования
Подпрограмма Обязательный заголовок
Библиотеки
Все отладочные версии библиотек времени выполнения C.
Синтаксис
C
char * strerror(
int errnum );
char * _strerror(
wchar_t * _wcserror(
int errnum );
wchar_t * __wcserror(
Параметры
errnum
Номер ошибки.
strErrMsg
Пользовательское сообщение.
Возвращаемое значение
Все эти функции возвращают указатель на строку сообщения об ошибке в буфере
локального хранилища потока, принадлежащей среде выполнения. Последующие
вызовы в том же потоке могут перезаписать эту строку.
Комментарии
Функция strerror сопоставляет errnum со строкой сообщения об ошибке и
возвращает указатель на строку. Функции strerror и _strerror на самом деле не
печатают сообщение. Для печати вызовите функцию вывода, например fprintf:
if (( _access( "datafile", 2 )) == -1 )
символами.
Требования
Подпрограмма Обязательный заголовок
strerror <string.h>
_strerror <string.h>
Пример
См. пример для perror.
clearerr
ferror
perror, _wperror
strerror_s , _strerror_s , _wcserror_s ,
__wcserror_s
Статья • 03.06.2023
Синтаксис
C
errno_t strerror_s(
char *buffer,
size_t sizeInBytes,
int errnum
);
errno_t _strerror_s(
char *buffer,
size_t sizeInBytes,
);
errno_t _wcserror_s(
wchar_t *buffer,
size_t sizeInWords,
int errnum
);
errno_t __wcserror_s(
wchar_t *buffer,
size_t sizeInWords,
);
C++
errno_t strerror_s(
char (&buffer)[size],
int errnum
); // C++ only
errno_t _strerror_s(
char (&buffer)[size],
); // C++ only
errno_t _wcserror_s(
wchar_t (&buffer)[size],
int errnum
); // C++ only
errno_t __wcserror_s(
wchar_t (&buffer)[size],
); // C++ only
Параметры
buffer
sizeInBytes
sizeInWords
errnum
Номер ошибки.
strErrMsg
Пользовательское сообщение.
Возвращаемое значение
Нуль в случае успеха или код ошибки в случае неудачи.
Условия ошибок
Комментарии
Функция strerror_s является потокобезопасной.
Функция strerror_s сопоставляет параметр errnum со строкой сообщения об
ошибке, возвращая строку в buffer . _strerror_s не принимает номер ошибки; она
использует текущее значение errno для определения соответствующего
сообщения. Сообщение не печатается и не отображается с помощью strerror_s
или _strerror_s . Чтобы вывести сообщение, необходимо вызвать выходную
функцию, fprintfнапример :
if (( _access( "datafile",2 )) == -1 )
Эти функции усекает сообщение об ошибке, если его длина превышает размер
буфера — 1. Результирующая строка в buffer всегда завершается символом NULL.
Эти функции проверяют свои параметры. Если параметр buffer равен NULL или
параметр size равен 0, вызывается обработчик недопустимых параметров, как
описано в разделе Проверка параметров . Если выполнение может быть
продолжено, эти функции возвращают EINVAL и устанавливают параметр errno в
значение EINVAL .
Требования
Подпрограмма Обязательный заголовок
Пример
См. пример для perror.
См. также раздел
Манипуляция со строками
clearerr
ferror
perror, _wperror
strftime , wcsftime , _strftime_l ,
_wcsftime_l
Статья • 03.04.2023
Синтаксис
C
size_t strftime(
char *strDest,
size_t maxsize,
);
size_t _strftime_l(
char *strDest,
size_t maxsize,
_locale_t locale
);
size_t wcsftime(
wchar_t *strDest,
size_t maxsize,
);
size_t _wcsftime_l(
wchar_t *strDest,
size_t maxsize,
_locale_t locale
);
Параметры
strDest
Выходная строка.
maxsize
timeptr
Структура данных tm .
locale
Возвращаемое значение
Функция strftime возвращает количество символов в strDest , а функция wcsftime
возвращает соответствующее количество расширенных символов.
Если общее количество символов, включая NULL в конце строки, больше maxsize ,
функции strftime и wcsftime возвращают значение "0" и содержимое strDest не
определено.
Комментарии
Функции strftime и wcsftime форматируют значение времени tm в параметре
timeptr в соответствии с предоставленным аргументом format и сохраняют
Эта функция проверяет свои параметры. Если strDest , format или timeptr является
пустым указателем или если tm структура данных, к которым timeptr обращается,
является недопустимой (например, если она содержит значения вне диапазона для
времени или даты) или если format строка содержит недопустимый код
форматирования, вызывается обработчик недопустимых параметров, как описано
в разделе Проверка параметров. Если выполнение может быть продолжено,
функция возвращает 0 и устанавливает errno в значение EINVAL .
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, см. статью Глобальное состояние в CRT.
Аргумент format состоит из одного или нескольких кодов; как и для функции
printf , коды форматирования начинаются знаком процента ( % ). Символы,
которые не начинаются с % , копируются без изменений в strDest . Категория
LC_TIME текущего языкового стандарта влияет на форматирование выходных
данных функции strftime . (Дополнительные сведения о см. в LC_TIME разделе
setlocale.) Функции strftime и wcsftime используют заданный в данный момент
языковой стандарт. Версии _strftime_l и _wcsftime_l этих функций идентичны, за
исключением того, что они принимают языковой стандарт в качестве параметра и
используют его вместо заданного в данный момент языкового стандарта. Для
получения дополнительной информации см. Locale.
%C Год, разделенный на 100 и усеченный до целого числа в виде десятичного числа (00–
99)
%D Эквивалентно %m/%d/%y .
%e День месяца в виде десятичного числа (от 1 до 31), где отдельные цифры
предшествуют пробелом
Код Строка замены
%F Эквивалентно %Y-%m-%d .
%g Последние 2 цифры года на основе недели ISO 8601 в виде десятичного числа (00–99)
%R Эквивалентно %H:%M .
%U Номер недели года в виде десятичного числа (00–53), где первое воскресенье —
первый день недели 1
%W Номер недели года в виде десятичного числа (от 00 до 53), где первый понедельник
является первым днем недели 1
%z Смещение от UTC в формате ISO 8601; нет символов, если часовой пояс неизвестен
%% Знак процента
%#d , %#D , %#e , %#F , %#H , %#I , %#j , Удалите начальные нули или пробелы (если таковые
%#m , %#M , %#r , %#R , %#S , %#T , %#U , есть).
%#V , %#W , %#y , %#Y
7 Примечание
Требования
Подпрограмма Обязательный заголовок
strftime <time.h>
_strftime_l <time.h>
Пример
См. пример для time.
Управление временем
Манипуляция со строками
localeconv
setlocale, _wsetlocale
Функции strcoll
) Важно!
Синтаксис
C
int _stricmp(
);
int _wcsicmp(
);
int _mbsicmp(
);
int _stricmp_l(
);
int _wcsicmp_l(
_locale_t locale
);
int _mbsicmp_l(
_locale_t locale
);
Параметры
string1 , string2
locale
Возвращаемое значение
Возвращаемое значение отражает взаимосвязь string1 со string2 , как показано
ниже.
Комментарии
Функция _stricmp сравнивает string1 и string2 после преобразования каждого
символа в нижний регистр и возвращает значение, указывающее их связь.
_stricmp отличается от _stricoll тем, что на сравнение _stricmp влияет только тип
LC_CTYPE , определяющий регистр символов. Функция _stricoll сравнивает строки
7 Примечание
_stricmp равно _strcmpi . Они взаимозаменяемы, но предпочтительнее
стандарт _stricmp .
Так как _stricmp производит сравнение в нижнем регистре, это может стать
причиной непредвиденного поведения.
C
// crt_stricmp_locale.c
#include <string.h>
#include <stdio.h>
#include <locale.h>
int main() {
setlocale(LC_ALL,"");
Все эти функции проверяют свои параметры. Если или string1 string2 являются
пустыми указателями, вызывается обработчик недопустимых параметров, как
описано в разделе Проверка параметров . Если продолжение выполнения
разрешено, эти функции возвращают _NLSCMPERROR и устанавливают для errno
значение EINVAL .
Требования
Подпрограмма Обязательный заголовок
// crt_stricmp.c
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown dog jumps over the lazy fox";
char tmp[20];
int result;
// Case sensitive
else
else
Output
Compare strings:
memcmp, wmemcmp
_memicmp, _memicmp_l
Функции strcoll
) Важно!
Синтаксис
C
int _stricoll(
);
int _wcsicoll(
);
int _mbsicoll(
);
int _stricoll_l(
);
int _wcsicoll_l(
_locale_t locale
);
int _mbsicoll_l(
_locale_t locale
);
Параметры
string1 , string2
locale
Возвращаемое значение
Каждая из этих функций возвращает значение, которое соответствует отношению
между string1 и string2 , как показано ниже.
Комментарии
Каждая из этих функций сравнивает без учета регистра строки string1 и string2 в
соответствии с используемой в настоящее время кодовой страницей. Эти функции
следует использовать только в том случае, если на текущей кодовой странице есть
разница между порядком набора символов и лексикографическим порядком
символов, и это различие представляет интерес для сравнения строк.
Все эти функции проверяют свои параметры. Если или string1 string2 являются
NULL указателями, вызывается обработчик недопустимых параметров, как описано
в разделе Проверка параметров. Если продолжение выполнения разрешено, эти
функции возвращают _NLSCMPERROR и устанавливают для errno значение EINVAL .
Требования
Подпрограмма Обязательный заголовок
Манипуляция со строками
Функции strcoll
localeconv
setlocale, _wsetlocale
) Важно!
Синтаксис
C
char *_strinc(
);
wchar_t *_wcsinc(
_locale_t locale
);
);
_locale_t locale
);
Параметры
current
Указатель символа.
locale
Возвращаемое значение
Каждая из этих подпрограмм возвращает указатель на символ, который следует
сразу за current .
Комментарии
Функция _mbsinc возвращает указатель на первый байт многобайтового символа,
который следует сразу за current . _mbsinc распознает последовательности
многобайтовых символов согласно используемой в данный момент многобайтовой
кодовой странице; функция _mbsinc_l идентична, за исключением того, что она
использует переданный параметр языкового стандарта. Для получения
дополнительной информации см. Locale.
) Важно!
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
_mbsinc <mbstring.h>
_mbsinc_l <mbstring.h>
_strinc <tchar.h>
_wcsinc <tchar.h>
) Важно!
Синтаксис
C
size_t strlen(
);
size_t wcslen(
);
size_t _mbslen(
);
size_t _mbslen_l(
_locale_t locale
);
size_t _mbstrlen(
);
size_t _mbstrlen_l(
_locale_t locale
);
Параметры
str
locale
Возвращаемое значение
Каждая из этих функций возвращает количество символов в str , за исключением
конечного null. Зарезервированное возвращаемое значение для обозначения
ошибки отсутствует, за исключением _mbstrlen и _mbstrlen_l , которые возвращают
((size_t)(-1)) , если строка содержит недопустимый многобайтовый символ.
Комментарии
strlen интерпретирует строку как строку однобайтовых символов, поэтому
возвращаемое значение всегда равно числу байт, даже если строка содержит
многобайтовые символы. wcslen — это версия strlen с расширенными
символами; аргумент wcslen — строка расширенных символов, а число символов
выражается в расширенных (двухбайтовых) символах. Поведение wcslen и strlen
идентично в противном случае.
Требования
Подпрограмма Обязательный заголовок
strlen <string.h>
Пример
C
// crt_strlen.c
#include <string.h>
#include <locale.h>
int main()
char * mbstr1;
char * locale_string;
// operating system.
if (locale_string == NULL)
else
// isnot.
Output
Length of 'Count.' : 6
Length of 'Count.' : 6
Length of 'ABCァD' : 5
Length of 'ABCァD' : 5
Bytes in 'ABCァD' : 6
Локаль
setlocale, _wsetlocale
Функции strcoll
) Важно!
Синтаксис
C
char *_strlwr(
char * str
);
wchar_t *_wcslwr(
wchar_t * str
);
);
char *_strlwr_l(
char * str,
_locale_t locale
);
wchar_t *_wcslwr_l(
wchar_t * str,
_locale_t locale
);
);
char *_strlwr(
char (&str)[size]
); // C++ only
wchar_t *_wcslwr(
wchar_t (&str)[size]
); // C++ only
); // C++ only
char *_strlwr_l(
char (&str)[size],
_locale_t locale
); // C++ only
wchar_t *_wcslwr_l(
wchar_t (&str)[size],
_locale_t locale
); // C++ only
_locale_t locale
); // C++ only
Параметры
str
locale
Возвращаемое значение
Каждая из этих функций возвращает указатель на преобразованную строку. Так как
изменение осуществляется на месте, возвращенный указатель совпадает с
указателем, переданным в качестве входного аргумента. Нет зарезервированных
возвращаемых значений для указания ошибки.
Комментарии
Функция _strlwr преобразует все буквы в верхнем регистре в str в нижний
регистр, как определено категорией LC_CTYPE языкового стандарта. Другие
символы не затрагиваются. Дополнительные сведения о методе LC_CTYPE см. в
разделе setlocale. Версии этих функций без _l суффикса используют текущий
языковой стандарт для поведения, зависящее от языкового стандарта. Версии с
суффиксом _l идентичны, за исключением того, что они используют переданный
языковой стандарт. Для получения дополнительной информации см. Locale.
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые
и безопасные аналоги этих функций. Дополнительные сведения см. в разделе
"Безопасные перегрузки шаблонов".
Требования
Подпрограмма Обязательный заголовок
// crt_strlwr.c
#include <string.h>
#include <stdio.h>
free( copy1 );
free( copy2 );
Output
Локаль
) Важно!
Синтаксис
C
errno_t _strlwr_s(
char *str,
size_t numberOfElements
);
errno_t _strlwr_s_l(
char *str,
size_t numberOfElements,
_locale_t locale
);
errno_t _mbslwr_s(
size_t numberOfElements
);
errno_t _mbslwr_s_l(
size_t numberOfElements,
_locale_t locale
);
errno_t _wcslwr_s(
wchar_t *str,
size_t numberOfElements
);
errno_t _wcslwr_s_l(
wchar_t *str,
size_t numberOfElements,
_locale_t locale
);
errno_t _strlwr_s(
char (&str)[size]
); // C++ only
errno_t _strlwr_s_l(
char (&str)[size],
_locale_t locale
); // C++ only
errno_t _mbslwr_s(
); // C++ only
errno_t _mbslwr_s_l(
_locale_t locale
); // C++ only
errno_t _wcslwr_s(
wchar_t (&str)[size]
); // C++ only
errno_t _wcslwr_s_l(
wchar_t (&str)[size],
_locale_t locale
); // C++ only
Параметры
str
numberOfElements
Размер буфера.
locale
Возвращаемое значение
Нуль в случае успеха или ненулевой код ошибки в случае ошибки.
Комментарии
Функция _strlwr_s преобразует "на месте" каждую прописную букву в строке str
в строчную. _mbslwr_s — это версия функции _strlwr_s с многобайтовой
кодировкой символов. _wcslwr_s — это версия функции _strlwr_s для
расширенных символов.
Версии библиотек отладки этих функций сначала заполняют буфер 0xFE. Чтобы
отключить это поведение, используйте _CrtSetDebugFillThreshold.
Требования
Подпрограмма Обязательный заголовок
Пример
C++
// crt_strlwr_s.cpp
//
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main()
errno_t err;
free( copy1 );
free( copy2 );
return 0;
Output
Локаль
Добавляет символы строки. Доступны более безопасные версии этих функций; см.
разделstrncat_s , _strncat_s_l, wcsncat_s, _wcsncat_s_l, _mbsncat_s, _mbsncat_s_l.
) Важно!
Синтаксис
C
char *strncat(
char *strDest,
size_t count
);
wchar_t *wcsncat(
wchar_t *strDest,
size_t count
);
size_t count
);
size_t count,
_locale_t locale
);
char *strncat(
char (&strDest)[size],
size_t count
); // C++ only
wchar_t *wcsncat(
wchar_t (&strDest)[size],
size_t count
); // C++ only
size_t count
); // C++ only
size_t count,
_locale_t locale
); // C++ only
Параметры
strDest
strSource
count
locale
Возвращаемое значение
Возвращает указатель на целевую строку символов. Нет зарезервированных
возвращаемых значений для указания ошибки.
Комментарии
Функция strncat в основном добавляет первые символы count strSource в
strDest . Начальный символ строки strSource переопределяет завершающий нуль-
) Важно!
7 Примечание
Требования
Подпрограмма Обязательный заголовок
strncat <string.h>
_mbsncat <mbstring.h>
_mbsncat_l <mbstring.h>
Пример
C
// crt_strncat.c
#include <stdlib.h>
#define MAXSTRINGLEN 39
char string[MAXSTRINGLEN+1];
string[0] = '\0';
// concatenate up to 20 characters...
// concatenate up to 20 characters...
Выходные данные
Output
_mbsnbcat, _mbsnbcat_l
Локаль
) Важно!
Синтаксис
C
errno_t strncat_s(
char *strDest,
size_t numberOfElements,
size_t count
);
errno_t _strncat_s_l(
char *strDest,
size_t numberOfElements,
size_t count,
_locale_t locale
);
errno_t wcsncat_s(
wchar_t *strDest,
size_t numberOfElements,
size_t count
);
errno_t _wcsncat_s_l(
wchar_t *strDest,
size_t numberOfElements,
size_t count,
_locale_t locale
);
errno_t _mbsncat_s(
size_t numberOfElements,
size_t count
);
errno_t _mbsncat_s_l(
size_t numberOfElements,
size_t count,
_locale_t locale
);
errno_t strncat_s(
char (&strDest)[size],
size_t count
); // C++ only
errno_t _strncat_s_l(
char (&strDest)[size],
size_t count,
_locale_t locale
); // C++ only
errno_t wcsncat_s(
wchar_t (&strDest)[size],
size_t count
); // C++ only
errno_t _wcsncat_s_l(
wchar_t (&strDest)[size],
size_t count,
_locale_t locale
); // C++ only
errno_t _mbsncat_s(
size_t count
); // C++ only
errno_t _mbsncat_s_l(
size_t count,
_locale_t locale
); // C++ only
Параметры
strDest
numberOfElements
strSource
count
locale
Возвращаемое значение
Возвращает 0 в случае успеха или код ошибки в случае неудачи.
Условия ошибок
Комментарии
Эти функции пытаются добавить первые D символов строки strSource в конец
строки strDest , где D — это меньшее из величины count и длины strSource . Если
добавление этих D символов поместится в strDest (размер которого
присваивается как numberOfElements ) и по-прежнему оставляет место для конца
null, эти символы добавляются, начиная с исходного завершающего значения NULL
, и добавляется новое завершающее значение NULL; в противном случае
strDest[0] устанавливается символ NULL и вызывается обработчик недопустимого
char dst[5];
или
Если strSource или strDest имеет значение NULL , или numberOfElements равно
нулю, вызывается обработчик недопустимых параметров, как описано в разделе
Проверка параметров . Если выполнение может быть продолжено, функция
возвращает EINVAL без изменения своих параметров.
Требования
Подпрограмма Обязательный заголовок
strncat_s <string.h>
Подпрограмма Обязательный заголовок
Пример
C++
// crt_strncat_s.cpp
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
int count )
char dest[10];
printf_s( "\n" );
if ( count == _TRUNCATE )
src, _countof(dest) );
else
return err;
void Examples()
void myInvalidParameterHandler(
uintptr_t pReserved)
{
newHandler = myInvalidParameterHandler;
oldHandler = _set_invalid_parameter_handler(newHandler);
_CrtSetReportMode(_CRT_ASSERT, 0);
Examples();
Output
Truncation examples:
Локаль
_mbsnbcat, _mbsnbcat_l
) Важно!
Синтаксис
C
int strncmp(
);
int wcsncmp(
size_t count
);
int _mbsncmp(
size_t count
);
int _mbsncmp_l(
size_t count,
_locale_t locale
);int _mbsnbcmp(
size_t count
);
Параметры
string1 , string2
count
locale
Возвращаемое значение
Возвращаемое значение отражает взаимосвязь подстрок string1 и string2 , как
показано ниже.
Комментарии
Функция strncmp выполняет порядковое сравнение не более чем count первых
символов в string1 и string2 и возвращает значение, указывающее отношение
между подстроками. strncmp — чувствительная к регистру версия _strnicmp .
wcsncmp и _mbsncmp — чувствительные к регистру версии _wcsnicmp и _mbsnicmp .
Требования
Подпрограмма Обязательный заголовок
strncmp <string.h>
// crt_strncmp.c
#include <string.h>
#include <stdio.h>
char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown fox jumps over the lazy dog";
char tmp[20];
int result;
string1, string2 );
else
else
Output
Compare strings:
Локаль
_mbsnbcmp, _mbsnbcmp_l
_mbsnbicmp, _mbsnbicmp_l
Функции strcoll
) Важно!
Синтаксис
C
size_t _strncnt(
size_t count
);
size_t _wcsncnt(
size_t count
);
size_t _mbsnbcnt(
size_t count
);
size_t _mbsnbcnt_l(
size_t count,
_locale_t locale
);
size_t _mbsnccnt(
size_t count
);
size_t _mbsnccnt_l(
size_t count,
_locale_t locale
);
Параметры
str
count
locale
Возвращаемое значение
_mbsnbcnt и _mbsnbcnt_l возвращают число байтов, найденных в первой части
Комментарии
_mbsnbcnt и _mbsnbcnt_l подсчитывают число байтов, найденных в первой части
Если str указатель NULL равен count 0, эти функции вызывают обработчик
недопустимых параметров, как описано в разделе "Проверка параметров", errno
имеет значение EINVAL , а функция возвращает значение 0.
Требования
Подпрограмма Обязательный заголовок
_mbsnbcnt <mbstring.h>
_mbsnbcnt_l <mbstring.h>
_mbsnccnt <mbstring.h>
_mbsnccnt_l <mbstring.h>
_strncnt <tchar.h>
_wcsncnt <tchar.h>
// crt_mbsnbcnt.c
#include <mbstring.h>
#include <stdio.h>
if ( byte_count - char_count )
else
Выходные данные
Output
См. также
Обработка строк
Локаль
_mbsnbcat, _mbsnbcat_l
_strncoll , _wcsncoll , _mbsncoll ,
_strncoll_l , _wcsncoll_l , _mbsncoll_l
Статья • 03.04.2023
) Важно!
Синтаксис
C
int _strncoll(
);
int _wcsncoll(
size_t count
);
int _mbsncoll(
size_t count
);
int _strncoll_l(
_locale_t locale
);
int _wcsncoll_l(
size_t count,
_locale_t locale
);
int _mbsncoll_l(
size_t count,
_locale_t locale
);
Параметры
string1 , string2
count
locale
Возвращаемое значение
Каждая из этих функций возвращает значение, идентифицирующее отношение
между подстроками string1 и string2 , как показано ниже.
Комментарии
Каждая из этих функций сравнивает с учетом регистра первые несколько символов
в строках string1 и string2 на основе кодовой страницы, используемой в данный
момент (количество сравниваемых символов определяется параметром count ).
Используйте эти функции только при наличии различий между порядком набора
символов и лексикографическим порядком символов на кодовой странице, а
также в том случае, если это различие имеет значение для сравнения строк.
Порядок символов в наборе зависит от языкового стандарта. В версиях этих
функций без суффикса _l используется текущий языковой стандарт, а в версиях с
суффиксом _l — переданный параметр языкового стандарта. Для получения
дополнительной информации см. Locale.
Все эти функции проверяют свои параметры. Если или string1 string2 является
пустым указателем или count больше INT_MAX , вызывается обработчик
недопустимых параметров, как описано в разделе Проверка параметров. Если
продолжение выполнения разрешено, эти функции возвращают _NLSCMPERROR и
устанавливают для errno значение EINVAL .
Требования
Подпрограмма Обязательный заголовок
Манипуляция со строками
Функции strcoll
localeconv
setlocale, _wsetlocale
) Важно!
Синтаксис
C
char *strncpy(
char *strDest,
size_t count
);
char *_strncpy_l(
char *strDest,
size_t count,
_locale_t locale
);
wchar_t *wcsncpy(
wchar_t *strDest,
size_t count
);
wchar_t *_wcsncpy_l(
wchar_t *strDest,
size_t count,
_locale_t locale
);
size_t count
);
size_t count,
_locale_t locale
);
char *strncpy(
char (&strDest)[size],
size_t count
); // C++ only
char *_strncpy_l(
char (&strDest)[size],
size_t count,
_locale_t locale
); // C++ only
wchar_t *wcsncpy(
wchar_t (&strDest)[size],
size_t count
); // C++ only
wchar_t *_wcsncpy_l(
wchar_t (&strDest)[size],
size_t count,
_locale_t locale
); // C++ only
size_t count
); // C++ only
size_t count,
_locale_t locale
); // C++ only
Параметры
strDest
Конечная строка.
strSource
Исходная строка.
count
locale
Возвращаемое значение
Возвращает strDest . Нет зарезервированных возвращаемых значений для
указания ошибки.
Комментарии
Функция strncpy копирует первые несколько символов, количество которых
определяет параметр count , из строки strSource в строку strDest и возвращает
строку strDest . Если count значение меньше или равно длине , пустой
strSource символ не добавляется автоматически к скопированной строке. Если
значение count больше, чем длина строки strSource , строка назначения
заполняется символами null, пока ее длина не достигнет длины строки count . При
перекрытии исходного и конечного буферов поведение strncpy не определено.
) Важно!
Если strDest или strSource является указателем NULL или меньше count или равно
нулю, вызывается обработчик недопустимых параметров, как описано в разделе
Проверка параметров. Если разрешается продолжать выполнение, эти функции
возвращают -1 и задают errno значение EINVAL .
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые
и безопасные аналоги этих функций. Дополнительные сведения см. в разделе
Безопасные перегрузки шаблонов.
7 Примечание
Требования
Подпрограмма Обязательный заголовок
strncpy <string.h>
// crt_strncpy_x86.c
#include <stdio.h>
#include <string.h>
int main() {
char t[20];
char s[20];
char *p = 0, *q = 0;
printf("%s\n", s);
p = strstr(s, "BB");
q = strstr(s, "CC");
strncpy(s, "aa", p - s - 1); // "aa BB CC" C4996
printf("%s\n", s);
printf("%s\n", t);
printf("%s\n", t);
printf("%s\n", t);
Выходные данные
Output
ZZ
aa bb dd
Локаль
_mbsnbcpy, _mbsnbcpy_l
Копирует символы одной строки в другую. Эти версии strncpy, _strncpy_l, wcsncpy,
_wcsncpy_l, _mbsncpy, имеют _mbsncpy_l улучшения безопасности, как описано в
разделе Функции безопасности в CRT.
) Важно!
Синтаксис
C
errno_t strncpy_s(
char *strDest,
size_t numberOfElements,
size_t count
);
errno_t _strncpy_s_l(
char *strDest,
size_t numberOfElements,
size_t count,
_locale_t locale
);
errno_t wcsncpy_s(
wchar_t *strDest,
size_t numberOfElements,
size_t count
);
errno_t _wcsncpy_s_l(
wchar_t *strDest,
size_t numberOfElements,
size_t count,
_locale_t locale
);
errno_t _mbsncpy_s(
size_t numberOfElements,
size_t count
);
errno_t _mbsncpy_s_l(
size_t numberOfElements,
size_t count,
_locale_t locale
);
errno_t strncpy_s(
char (&strDest)[size],
size_t count
); // C++ only
errno_t _strncpy_s_l(
char (&strDest)[size],
size_t count,
_locale_t locale
); // C++ only
errno_t wcsncpy_s(
wchar_t (&strDest)[size],
size_t count
); // C++ only
errno_t _wcsncpy_s_l(
wchar_t (&strDest)[size],
size_t count,
_locale_t locale
); // C++ only
errno_t _mbsncpy_s(
size_t count
); // C++ only
errno_t _mbsncpy_s_l(
size_t count,
_locale_t locale
); // C++ only
Параметры
strDest
Конечная строка.
numberOfElements
strSource
Исходная строка.
count
locale
Возвращаемое значение
Ноль при успешном завершении, STRUNCATE , если произошло усечение, в
противном случае код ошибки.
Условия ошибок
Комментарии
Эти функции будут пытаться скопировать первые D символов strSource в strDest ,
где D — наименьшее из count и длины strSource . Если эти D символы будут
помещаться в strDest (размер которого указан как numberOfElements ) и по-
прежнему оставлять место для признака конца NULL, эти символы копируются и
добавляется завершающее значение NULL; в противном случае устанавливается
значение NULL и strDest[0] вызывается обработчик недопустимых параметров,
как описано в разделе Проверка параметров.
, при этом остается место для завершающего значения NULL, которое всегда
добавляется.
char dst[5];
означает, что strncpy_s копирует пять символов в 5-байтовый буфер. Эта копия не
оставляет места для конца null, поэтому strncpy_s обнуляет строку и вызывает
обработчик недопустимых параметров.
Если параметр strDest или strSource имеет значение NULL или параметр
numberOfElements равен 0, вызывается обработчик недопустимого параметра. Если
7 Примечание
Требования
Подпрограмма Обязательный заголовок
// crt_strncpy_s_1.cpp
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
int count )
char dest[10];
printf( "\n" );
if ( count == _TRUNCATE )
src, _countof(dest) );
else
return err;
void Examples()
strncpy_s_tester( "howdy", 4 );
strncpy_s_tester( "howdy", 5 );
strncpy_s_tester( "howdy", 6 );
: "did not" );
: "did not" );
char dest[10];
void myInvalidParameterHandler(
uintptr_t pReserved)
{
newHandler = myInvalidParameterHandler;
oldHandler = _set_invalid_parameter_handler(newHandler);
_CrtSetReportMode(_CRT_ASSERT, 0);
Examples();
Output
Truncation examples:
Copying 'How do you do?' to 10-byte buffer dest with truncation semantics
// crt_strncpy_s_2.c
#include <stdio.h>
#include <stdlib.h>
char s[20];
strncpy( s, "mice", 4 );
Output
Original string:
'mice'
Локаль
_mbsnbcpy, _mbsnbcpy_l
) Важно!
Синтаксис
C
);
);
);
_locale_t locale
);
Параметры
str
Исходная строка.
locale
Возвращаемое значение
Каждая из этих функций возвращает целочисленное значение для следующего
символа в str .
Комментарии
Функция _mbsnextc возвращает целочисленное значение следующего
многобайтового символа в str , не перемещая указатель на строку. Функция
_mbsnextc распознает последовательности многобайтовых символов в
соответствии с текущей многобайтовой кодовой страницей.
Требования
Подпрограмма Обязательный заголовок
_mbsnextc <mbstring.h>
_mbsnextc_l <mbstring.h>
_strnextc <tchar.h>
_wcsnextc <tchar.h>
Локаль
) Важно!
Синтаксис
C
int _strnicmp(
);
int _wcsnicmp(
size_t count
);
int _mbsnicmp(
size_t count
);
int _strnicmp_l(
_locale_t locale
);
int _wcsnicmp_l(
size_t count,
_locale_t locale
);
int _mbsnicmp_l(
size_t count,
_locale_t locale
);
Параметры
string1 , string2
count
locale
Возвращаемое значение
Отражает связь между подстроками указанным ниже образом.
Комментарии
Функция _strnicmp сравнивает не более первых count символов string1 и string2 .
Сравнение выполняется без учета регистра путем преобразования каждого
символа в нижний регистр. _strnicmp — не чувствительная к регистру версия
strncmp . Сравнение заканчивается, если был достигнут завершающий нуль-символ
в любой из строк до того, как были сравнены count симв. Если строки равны, когда
завершающий нуль-символ достигается в любой из строк до того, как count симв.
сравнены, более короткая строка считается меньшей.
Символы от 91 до 96 в таблице ASCII ("[", "\", "]", "^", "_" и "`") оцениваются как
меньшие по сравнению с любым алфавитным символом. Такое упорядочение
идентично используемому функцией stricmp .
Все эти функции проверяют свои параметры. Если какой-либо string1 или string2
является пустым указателем, вызывается обработчик недопустимых параметров,
как описано в разделе "Проверка параметров". Если продолжение выполнения
разрешено, эти функции возвращают _NLSCMPERROR и устанавливают для errno
значение EINVAL .
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
Пример
См. пример для strncmp.
) Важно!
Синтаксис
C
int _strnicoll(
);
int _wcsnicoll(
size_t count
);
int _mbsnicoll(
size_t count
);
int _strnicoll_l(
_locale_t locale
);
int _wcsnicoll_l(
size_t count,
_locale_t locale
);
int _mbsnicoll_l(
size_t count,
_locale_t locale
);
Параметры
string1 , string2
count
locale
Возвращаемое значение
Каждая из этих функций возвращает значение, которое соответствует отношению
между подстроками string1 и string2 , как показано ниже.
Комментарии
Каждая из этих функций сравнивает с учетом регистра первые несколько символов
в строках string1 и string2 на основе кодовой страницы (количество
сравниваемых символов определяется параметром count ). Эти функции следует
использовать только в том случае, если имеется разница между порядком набора
символов и лексографическим порядком символов на кодовой странице, и это
различие представляет интерес для сравнения строк. Версии этих функций без
суффикса _l используют текущий языковой стандарт и кодовую страницу. Версии с
суффиксом _l идентичны, за исключением того, что они используют переданный
языковой стандарт. Для получения дополнительной информации см. Locale.
Все эти функции проверяют свои параметры. Если какой-либо string1 или string2
является пустым указателем, или если число больше INT_MAX , вызывается
обработчик недопустимых параметров, как описано в разделе "Проверка
параметров ". Если продолжение выполнения разрешено, эти функции
возвращают _NLSCMPERROR и устанавливают для errno значение EINVAL .
Требования
Подпрограмма Обязательный заголовок
Обработка строк
Функции strcoll
localeconv
setlocale, _wsetlocale
) Важно!
Синтаксис
C
char *_strninc(
size_t count
);
wchar_t *_wcsninc(
size_t count
);
size_t count
);
size_t count,
_locale_t locale
);
Параметры
str
Исходная строка.
count
Возвращаемое значение
Каждая из этих подпрограмм возвращает указатель на str после того, как str был
увеличен на count символов, или NULL , если предоставленный указатель имеет
значение NULL . Если значение параметра count больше или равно количеству
символов в str , результат не определен.
Комментарии
Функция _mbsninc увеличивает str на count многобайтовых символов. Функция
_mbsninc распознает последовательности многобайтовых символов в соответствии
Требования
Подпрограмма Обязательный заголовок
_mbsninc <mbstring.h>
_mbsninc_l <mbstring.h>
_strninc <tchar.h>
_wcsninc <tchar.h>
Локаль
) Важно!
Синтаксис
C
size_t strnlen(
size_t numberOfElements
);
size_t strnlen_s(
size_t numberOfElements
);
size_t wcsnlen(
size_t numberOfElements
);
size_t wcsnlen_s(
size_t numberOfElements
);
size_t _mbsnlen(
size_t numberOfElements
);
size_t _mbsnlen_l(
size_t numberOfElements,
_locale_t locale
);
size_t _mbstrnlen(
size_t numberOfElements
);
size_t _mbstrnlen_l(
size_t numberOfElements,
_locale_t locale
);
Параметры
str
numberOfElements
locale
Возвращаемое значение
Эти функции возвращают число символов в строке, не включая завершающий
символ NULL. Если в первых numberOfElements байтах строки (или расширенных
символов для wcsnlen ), numberOfElements то возвращается, чтобы указать условие
ошибки; строки, заканчивающиеся NULL, имеют длину строго меньше
numberOfElements .
Комментарии
7 Примечание
_mbstrnlen также проверяет свои параметры. Если str имеет значение NULL или
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_strnlen.c
#include <string.h>
int main()
size_t len;
Output
Length: 82
Length: 100
Локаль
setlocale, _wsetlocale
Функции strcoll
) Важно!
Синтаксис
C
char *_strnset(
char *str,
int c,
size_t count
);
char *_strnset_l(
char *str,
int c,
size_t count,
_locale_t locale
);
wchar_t *_wcsnset(
wchar_t *str,
wchar_t c,
size_t count
);
wchar_t *_wcsnset_l(
wchar_t *str,
wchar_t c,
size_t count,
_locale_t locale
);
unsigned int c,
size_t count
);
unsigned int c,
size_t count,
_locale_t locale
);
Параметры
str
Параметр символов.
count
locale
Возвращаемое значение
Возвращает указатель на измененную строку.
Комментарии
Функция _strnset устанавливает count первых символов строки str в значение c
(преобразованное в char ). Если значение count больше длины строки str , вместо
параметра count используется длина строки str .
Требования
Подпрограмма Обязательный заголовок
_strnset <string.h>
_strnset_l <tchar.h>
_wcsnset_l <tchar.h>
Пример
C
// crt_strnset.c
#include <string.h>
#include <stdio.h>
Output
Локаль
) Важно!
Синтаксис
C
errno_t _strnset_s(
char *str,
size_t numberOfElements,
int c,
size_t count
);
errno_t _strnset_s_l(
char *str,
size_t numberOfElements,
int c,
size_t count,
_locale_t locale
);
errno_t _wcsnset_s(
wchar_t *str,
size_t numberOfElements,
wchar_t c,
size_t count
);
errno_t _wcsnset_s_l(
wchar_t *str,
size_t numberOfElements,
wchar_t c,
size_t count,
_locale_t locale
);
errno_t _mbsnset_s(
size_t numberOfElements,
unsigned int c,
size_t count
);
errno_t _mbsnset_s_l(
size_t numberOfElements,
unsigned int c,
size_t count,
_locale_t locale
);
Параметры
str
numberOfElements
Параметр символов.
count
locale
Возвращаемое значение
Нуль в случае успешного выполнения; в противном случае — код ошибки.
Требования
Подпрограмма Обязательный заголовок
_strnset_s <string.h>
_strnset_s_l <tchar.h>
Подпрограмма Обязательный заголовок
_wcsnset_s_l <tchar.h>
Пример
C
// crt_strnset_s.c
#include <string.h>
#include <stdio.h>
Output
Локаль
) Важно!
Синтаксис
C
char *strpbrk(
); // C only
char *strpbrk(
char *str,
); // C++ only
); // C++ only
wchar_t *wcspbrk(
); // C only
wchar_t *wcspbrk(
wchar_t *str,
); // C++ only
); // C++ only
); // C only
); // C++ only
); // C++ only
_locale_t locale
); // C only
_locale_t locale
); // C++ only
_locale_t locale
); // C++ only
Параметры
str
strCharSet
locale
Возвращаемое значение
Возвращает указатель на первое вхождение любого символа из strCharSet в str
или указатель NULL , если у двух строк нет общих символов.
Комментарии
Функция strpbrk возвращает указатель на первое вхождение в str символа из
набора символов strCharSet . Поиск не включает завершающий символ NULL.
_mbspbrk проверяет свои параметры. Если str или strCharSet имеет значение
Требования
Подпрограмма Обязательный заголовок
strpbrk <string.h>
Пример
C
// crt_strpbrk.c
#include <string.h>
#include <stdio.h>
Output
4: 5 pigs
Локаль
) Важно!
Синтаксис
C
char *strrchr(
int c
); // C only
char *strrchr(
char *str,
int c
); // C++ only
int c
); // C++ only
wchar_t *wcsrchr(
wchar_t c
); // C only
wchar_t *wcsrchr(
wchar_t *str,
wchar_t c
); // C++ only
wchar_t c
); // C++ only
unsigned int c
); // C only
unsigned int c
); // C++ only
unsigned int c
); // C++ only
unsigned int c,
_locale_t locale
); // C only
unsigned int c,
_locale_t locale
); // C++ only
unsigned int c,
_locale_t locale
); // C++ only
Параметры
str
locale
Возвращаемое значение
Возвращает указатель на последнее вхождение c в str или , NULL если c не
найден.
Комментарии
Функция strrchr находит последнее вхождение c (преобразованного в char ) в
str . Поиск включает завершающий NULL символ.
определяется, const если доступны как версии, так и другие const версии этих
функций. Если требуется поведение не для const обеих перегрузок C++,
определите символ _CONST_RETURN .
_mbsrchr проверяет свои параметры. Если str имеет значение NULL , вызывается
Требования
Подпрограмма Обязательный заголовок
strrchr <string.h>
Пример
Пример использования strrchr см. в разделе strchr.
Локаль
) Важно!
Синтаксис
C
char *_strrev(
char *str
);
wchar_t *_wcsrev(
wchar_t *str
);
);
_locale_t locale
);
Параметры
str
locale
Возвращаемое значение
Возвращает указатель на измененную строку. Нет зарезервированных
возвращаемых значений для указания ошибки.
Комментарии
Функция _strrev изменяет порядок символов в str на обратный. Завершающий
нуль-символ остается на месте. Функции _wcsrev и _mbsrev are wide-character и
multibyte-character versions of _strrev для расширенных и многобайтовых
символов. Аргументы и возвращаемое значение являются _wcsrev строками
расширенных символов. Аргументы и возвращаемое значение являются _mbsrev
многобайтовыми строками символов. Для _mbsrev порядок байтов в каждом
многобайтовом символе в str не изменяется. В остальном эти три функции ведут
себя идентично.
_mbsrev проверяет свои параметры. Если или string1 string2 является пустым
) Важно!
Требования
Подпрограмма Обязательный заголовок
_strrev <string.h>
Пример
C
// crt_strrev.c
//
#include <string.h>
#include <stdio.h>
if( result == 0 )
else
Output
The string "Able was I ere I saw Elba" is a palindrome
Локаль
) Важно!
Синтаксис
C
char *_strset(
char *str,
int c
);
char *_strset_l(
char *str,
int c,
_locale_t locale
);
wchar_t *_wcsset(
wchar_t *str,
wchar_t c
);
wchar_t *_wcsset_l(
wchar_t *str,
wchar_t c,
_locale_t locale
);
unsigned int c
);
unsigned int c,
_locale_t locale
);
Параметры
str
Параметр символов.
locale
Возвращаемое значение
Возвращает указатель на измененную строку.
Комментарии
Функция _strset устанавливает все символы строки str в c (преобразованный в
char ), за исключением завершающего нуль-символа. _wcsset и _mbsset_l
представляют собой расширенную и многобайтовую версии _strset , и типы
данных аргументов и возвращаемых значений изменяются соответствующим
образом. В остальном эти функции ведут себя одинаково.
) Важно!
Эти функции могут быть подвержены угрозам переполнения буфера.
Переполнение буфера можно использовать для атак на систему, поскольку
оно может привести к несанкционированному повышению уровня
привилегий. Дополнительные сведения см . в статье Предотвращение
переполнения буфера.
Требования
Подпрограмма Обязательный заголовок
_strset <string.h>
_strset_l <tchar.h>
_wcsset_l <tchar.h>
Пример
C
// crt_strset.c
#include <string.h>
#include <stdio.h>
Output
After: *******************************
Локаль
_mbsnbset, _mbsnbset_l
memset, wmemset
) Важно!
Синтаксис
C
errno_t _strset_s(
char *str,
size_t numberOfElements,
int c
);
errno_t _strset_s_l(
char *str,
size_t numberOfElements,
int c,
_locale_t locale
);
errno_t _wcsset_s(
wchar_t *str,
size_t numberOfElements,
wchar_t c
);
errno_t *_wcsset_s_l(
wchar_t *str,
size_t numberOfElements,
wchar_t c,
_locale_t locale
);
errno_t _mbsset_s(
size_t numberOfElements,
unsigned int c
);
errno_t _mbsset_s_l(
size_t numberOfElements,
unsigned int c,
_locale_t locale
);
Параметры
str
numberOfElements
Параметр символов.
locale
Возвращаемое значение
Нуль в случае успешного выполнения; в противном случае — код ошибки.
Эти функции проверяют свои аргументы. Если str является пустым указателем или
numberOfElements аргумент меньше или равен 0, или переданный блок не
Комментарии
Функция _strset_s устанавливает все символы строки str в c (преобразованный в
char ), за исключением завершающего нуль-символа. Функции _wcsset_s и
_mbsset_s are wide-character и multibyte-character versions of _strset_s для
Версии библиотек отладки этих функций сначала заполняют буфер 0xFE. Чтобы
отключить это поведение, используйте _CrtSetDebugFillThreshold.
Требования
Подпрограмма Обязательный заголовок
_strset_s <string.h>
_strset_s_l <tchar.h>
_wcsset_s_l <tchar.h>
Пример
C
// crt_strset_s.c
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
Output
After: *******************************
Локаль
_mbsnbset, _mbsnbset_l
memset, wmemset
) Важно!
Синтаксис
C
size_t strspn(
);
size_t wcsspn(
);
size_t _mbsspn(
);
size_t _mbsspn_l(
_locale_t locale
);
Параметры
str
strCharSet
Возвращаемое значение
Возвращает целочисленное значение, задающее длину подстроки в str , которая
состоит только из символов в strCharSet . Если str начинается с символа не из
strCharSet , функция возвращает значение 0.
Комментарии
Функция strspn возвращает индекс первого символа в str , который не
принадлежит набору символов в strCharSet . Поиск не включает завершающие
символы NULL.
Требования
Подпрограмма Обязательный заголовок
strspn <string.h>
Пример
C
// crt_strspn.c
//
#include <string.h>
#include <stdio.h>
int result;
Output
Локаль
) Важно!
Синтаксис
C
char *_strspnp(
);
wchar_t *_wcsspnp(
);
);
_locale_t locale
);
Параметры
str
locale
Возвращаемое значение
_strspnp , _wcsspnp и _mbsspnp возвращают указатель на первый символ в str ,
который не принадлежит набору символов в charset . Каждая из этих функций
возвращает NULL , если str полностью состоит из символов из charset . Для каждой
из этих подпрограмм отсутствуют зарезервированные возвращаемые значения для
указания ошибки.
Комментарии
Функция _mbsspnp возвращает указатель на многобайтовый символ, который
является первым символом в str , который не принадлежит к набору символов в
charset . Функция _mbsspnp распознает последовательности многобайтовых
символов в соответствии с текущей многобайтовой кодовой страницей. Поиск не
включает завершающие символы NULL.
Если или str charset является пустым указателем, эта функция вызывает
обработчик недопустимых параметров, как описано в разделе Проверка
параметров. Если выполнение может быть продолжено, функция возвращает NULL
и устанавливает для параметра errno значение EINVAL .
Требования
Подпрограмма Обязательный заголовок
_mbsspnp <mbstring.h>
_strspnp <tchar.h>
_wcsspnp <tchar.h>
Пример
C
// crt_mbsspnp.c
#include <mbstring.h>
#include <stdio.h>
Выходные данные
Output
abbage
См. также
Манипуляция со строками
Локаль
) Важно!
Синтаксис
C
char *strstr(
); // C only
char *strstr(
char *str,
); // C++ only
); // C++ only
wchar_t *wcsstr(
); // C only
wchar_t *wcsstr(
wchar_t *str,
); // C++ only
); // C++ only
); // C only
); // C++ only
); // C++ only
_locale_t locale
); // C only
_locale_t locale
); // C++ only
_locale_t locale
); // C++ only
Параметры
str
strSearch
locale
Возвращаемое значение
Возвращает указатель на первое вхождение strSearch в str или , NULL если
strSearch не отображается в str . Если strSearch указывает на строку нулевой
Комментарии
Функция strstr возвращает указатель на первое вхождение strSearch в str .
Поиск не включает завершающие символы NULL. wcsstr является версией strstr с
расширенными символами, а _mbsstr — версией с многобайтовыми символами.
Аргументы и возвращаемое значение являются wcsstr строками расширенных
символов. Аргументы и возвращаемое значение являются _mbsstr
многобайтовыми строками символов. _mbsstr проверяет свои параметры. Если
str или strSearch имеет значение NULL , вызывается обработчик недопустимых
) Важно!
Требования
Подпрограмма Обязательный заголовок
strstr <string.h>
Пример
C
// crt_strstr.c
#include <string.h>
#include <stdio.h>
char *pdest;
int result;
if ( pdest != NULL )
printf( "%s found at position %d\n", str, result );
else
Output
String to be searched:
1 2 3 4 5
12345678901234567890123456789012345678901234567890
Локаль
basic_string::find
_strtime , _wstrtime
Статья • 03.04.2023
Копируют время в буфер. Доступны более безопасные версии этих функций; см.
,_strtime_s_wstrtime_s .
Синтаксис
C
char *_strtime(
char *timestr
);
wchar_t *_wstrtime(
wchar_t *timestr
);
char *_strtime(
char (×tr)[size]
); // C++ only
wchar_t *_wstrtime(
wchar_t (×tr)[size]
); // C++ only
Параметры
timestr
Возвращаемое значение
Возвращает указатель на строку символов timestr .
Комментарии
Функция _strtime копирует текущее локальное время в буфер, на который
указывает timestr . Время отформатировано как hh:mm:ss , где hh две цифры,
представляющие час в 24-часовой нотации. mm — это две цифры за минуты,
прошедшие за час, и ss это две цифры в течение секунд. Например, строка
18:23:44 представляет 23 минуты и 44 секунды после 6 вечера. Буфер должен
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые
и безопасные аналоги этих функций. Дополнительные сведения см. в разделе
"Безопасные перегрузки шаблонов".
Требования
Подпрограмма Обязательный заголовок
_strtime <time.h>
Пример
C
// crt_strtime.c
#include <time.h>
#include <stdio.h>
Output
asctime, _wasctime
_tzset
_strtime_s , _wstrtime_s
Статья • 03.04.2023
Синтаксис
C
errno_t _strtime_s(
char *buffer,
size_t numberOfElements
);
errno_t _wstrtime_s(
wchar_t *buffer,
size_t numberOfElements
);
errno_t _strtime_s(
char (&buffer)[size]
); // C++ only
errno_t _wstrtime_s(
wchar_t (&buffer)[size]
); // C++ only
Параметры
buffer
numberOfElements
Размер буфера.
Возвращаемое значение
Нуль при успешном завершении.
Условия ошибок
Проблемы с безопасностью
Передача недопустимого значения, отличного NULL от буфера, приведет к
нарушению доступа, если numberOfElements параметр больше 9.
Комментарии
Эти функции обеспечивают более безопасные версии _strtime и _wstrtime. Функция
_strtime_s копирует текущее локальное время в буфер, на который указывает
Требования
Подпрограмма Обязательный заголовок
_strtime_s <time.h>
Пример
C
// strtime_s.c
#include <time.h>
#include <stdio.h>
int main()
char tmpbuf[9];
errno_t err;
//
_tzset();
if (err)
exit(1);
if (err)
exit(1);
Output
OS time: 14:37:49
OS date: 04/25/03
asctime_s, _wasctime_s
_tzset
strtod , _strtod_l , wcstod , _wcstod_l
Статья • 03.04.2023
Синтаксис
C
double strtod(
char **endptr
);
double _strtod_l(
char **endptr,
_locale_t locale
);
double wcstod(
wchar_t **endptr
);
double _wcstod_l(
wchar_t **endptr,
_locale_t locale
);
Параметры
strSource
endptr
locale
Возвращаемое значение
strtod возвращает значение числа с плавающей запятой, за исключением случаев,
когда представление вызовет переполнение. В этом случае функция возвращает
значение +/- HUGE_VAL . Знак соответствует HUGE_VAL знаку значения, которое не
может быть представлено. strtod возвращает значение , 0 если преобразование
не может быть выполнено или происходит недостаточное количество.
Комментарии
Каждая функция преобразует входную строку strSource в double . Функция strtod
преобразует strSource в значение двойной точности. strtod останавливает чтение
строки strSource в первом символе, который она не распознает как часть числа.
Этот символ может быть завершающим символом NULL. Функция wcstod — это
версия функции strtod с расширенными символами. Ее аргумент strSource —
строка расширенных символов. В остальном эти функции ведут себя одинаково.
radix — это символ точки радикса, точка (.) в языковом стандарте "C" по
умолчанию или конкретное значение языкового стандарта, если текущий языковой
стандарт отличается или если locale задан параметр .
В любой форме, если нет части экспоненты или символа точки радикса,
предполагается, что символ точки радикса следует за последней цифрой в строке.
Регистр игнорируется в обоих формах INF и NAN . Первый символ, который не
соответствует одной из этих форм, останавливает сканирование.
Требования
Подпрограмма Обязательный заголовок
wcstod , _wcstod_l C: <stdlib.h> или <wchar.h> C++: <cstdlib> , <stdlib.h> или <wchar.h>
Пример
C
// crt_strtod.c
//
#include <stdlib.h>
#include <stdio.h>
int main(void)
double x;
long l;
int base;
x = strtod(string, &stopstring);
string = "10110134932";
// NaN
x = strtod("+nan", &stopstring);
printf("\n%f\n", x);
// INF
x = strtod("-INF", &stopstring);
printf("\n%f\n", x);
// e - exponent
x = strtod("1.18973e+49", &stopstring);
printf("\n%f\n", x);
x = strtod("1.18973d+49", &stopstring);
printf("\n%f\n", x);
Output
strtol = -2147483648
string = 10110134932
strtol = 45 (base 2)
nan
-inf
11897299999999999421285862642874618947301378359296.000000
1.189730
Локаль
localeconv
_create_locale, _wcreate_locale
_free_locale
strtof , _strtof_l , wcstof , _wcstof_l
Статья • 03.04.2023
Синтаксис
C
float strtof(
char **endptr
);
float _strtof_l(
char **endptr,
_locale_t locale
);
float wcstof(
wchar_t **endptr
);
float wcstof_l(
wchar_t **endptr,
_locale_t locale
);
Параметры
strSource
endptr
locale
Возвращаемое значение
strtof возвращает значение числа с плавающей запятой, за исключением случаев,
Комментарии
Каждая функция преобразует входную строку strSource в float . Функция strtof
преобразует strSource в значение одиночной точности. strtof останавливает
чтение строки strSource в первом символе, который она не распознает как часть
числа. Этот символ может быть завершающим символом NULL. Функция wcstof —
это версия функции strtof с расширенными символами. Ее аргумент strSource —
строка расширенных символов. В остальном эти функции ведут себя одинаково.
игнорируются; sign — это или плюс ( + ), или минус ( - ); digits — это одна или
несколько десятичных цифр. Если перед символом основания системы счисления
нет никаких цифр, то после него должна отображаться хотя бы одна цифра. За
десятичными цифрами может следовать показатель степени, который состоит из
вводной буквы ( e или E ) и при необходимости целого числа со знаком. Если часть
экспоненты или символ радикса не отображается, предполагается, что символ
радикса следует за последней цифрой в строке. Первый символ, который не
соответствует этой форме, останавливает сканирование.
Требования
Подпрограмма Обязательный заголовок
wcstof , _wcstof_l C: <stdlib.h> или <wchar.h> C++: <cstdlib>, <stdlib.h> или <wchar.h>
Пример
C
// crt_strtof.c
#include <stdlib.h>
#include <stdio.h>
char *string;
char *stopstring;
float x;
x = strtof(string, &stopstring);
Output
strtof = 3.141590
Локаль
localeconv
_create_locale, _wcreate_locale
_free_locale
_strtoi64 , _wcstoi64 , _strtoi64_l ,
_wcstoi64_l
Статья • 03.04.2023
Синтаксис
C
__int64 _strtoi64(
char **endptr,
int base
);
__int64 _wcstoi64(
wchar_t **endptr,
int base
);
__int64 _strtoi64_l(
char **endptr,
int base,
_locale_t locale
);
__int64 _wcstoi64_l(
wchar_t **endptr,
int base,
_locale_t locale
);
Параметры
strSource
endptr
base
Возвращаемое значение
_strtoi64 возвращает значение, представленное в строке strSource , кроме
случаев, когда представление вызвало бы переполнение; в этом случае
возвращается значение _I64_MAX или _I64_MIN . Функция возвращает 0, если
преобразование не может быть выполнено. _wcstoi64 возвращает значения
аналогично _strtoi64 .
Если strSource имеет значение NULL или base имеет ненулевое значение и либо
меньше 2, либо больше 36, то для errno устанавливается значение EINVAL .
Комментарии
Функция _strtoi64 преобразует strSource в __int64 . Обе функции перестают
считывать строку strSource с первого символа, который они не могут распознать
как часть числа. Это может быть завершающий пустой символ или первый
числовой символ, больше или равный base . Функция _wcstoi64 — это версия
функции _strtoi64 с расширенными символами. Ее аргумент strSource — строка
расширенных символов. В остальном эти функции ведут себя одинаково.
Требования
Компонент Обязательный заголовок
См. также:
Преобразование данных
Локаль
localeconv
setlocale, _wsetlocale
Синтаксис
C
intmax_t strtoimax(
char **endptr,
int base
);
intmax_t wcstoimax(
wchar_t **endptr,
int base
);
intmax_t _strtoimax_l(
char **endptr,
int base,
_locale_t locale
);
intmax_t _wcstoimax_l(
wchar_t **endptr,
int base,
_locale_t locale
);
Параметры
strSource
endptr
base
Возвращаемое значение
strtoimax возвращает значение, представленное в строке strSource , кроме
случаев, когда представление вызвало бы переполнение; в этом случае
возвращается значение INTMAX_MAX или INTMAX_MIN , и errno устанавливается в
значение ERANGE . Функция возвращает 0, если преобразование не может быть
выполнено. wcstoimax возвращает значения аналогично strtoimax .
Если strSource имеет значение NULL или base имеет ненулевое значение и либо
меньше 2, либо больше 36, то для errno устанавливается значение EINVAL .
Комментарии
Функция strtoimax преобразует strSource в intmax_t . wcstoimax — это версия
strtoimax с расширенными символами; ее аргумент strSource — строка
расширенных символов. В остальном эти функции ведут себя одинаково. Обе
функции перестают считывать строку strSource при первом символе, которую они
не могут распознать как часть числа. Это может быть завершающий нуль-символ
или первый числовой символ, который больше или равен base .
Требования
Подпрограмма Обязательный заголовок
Локаль
localeconv
setlocale, _wsetlocale
) Важно!
Синтаксис
C
char *strtok(
char *strToken,
);
char *_strtok_l(
char *strToken,
_locale_t locale
);
wchar_t *strToken,
);
wchar_t *wcstok(
wchar_t *strToken,
wchar_t **context
);
wchar_t *_wcstok_l(
wchar_t *strToken,
_locale_t locale
);
);
_locale_t locale
);
Параметры
strToken
strDelimit
Набор символов-разделителей.
locale
context
Возвращаемое значение
Возвращает указатель на следующий токен, найденный в strToken . Функции
возвращаются NULL , когда маркеры больше не найдены. Каждый вызов
изменяется strToken путем замены символа NULL для первого разделителя,
который возникает после возвращенного маркера.
Комментарии
Функция strtok находит следующий токен в strToken . Набор символов в
параметре strDelimit указывает возможные разделители токенов, которые
требуется найти в strToken во время текущего вызова. Функции wcstok и _mbstok
are wide-character и multibyte-character versions of strtok для расширенных и
многобайтовых символов. Аргументы и возвращаемое значение являются wcstok
строками расширенных символов. Аргументы argumets и возвращаемое значение
являются _mbstok многобайтовыми строками символов. В остальном эти три
функции ведут себя идентично.
) Важно!
приводит к тому, что функция strtok ищет следующий токен в измененной строке
strToken . Аргумент strDelimit в разных вызовах может принимать любое
Версии этих функций без суффикса _l используют текущий языковой стандарт для
этого поведения, зависяющего от языкового стандарта. Версии с суффиксом _l
идентичны, за исключением того, что они используют переданный параметр
языкового стандарта. Для получения дополнительной информации см. Locale.
7 Примечание
Требования
Подпрограмма Обязательный заголовок
strtok <string.h>
_wcstok_l <tchar.h>
Пример
C
// crt_strtok.c
//
#include <string.h>
#include <stdio.h>
char *token;
printf( "Tokens:\n" );
Output
Tokens:
string
of
tokens
and
some
more
tokens
Локаль
) Важно!
Синтаксис
C
char* strtok_s(
char* str,
char** context
);
char* _strtok_s_l(
char* str,
char** context,
_locale_t locale
);
wchar_t* wcstok_s(
wchar_t* str,
wchar_t** context
);
wchar_t *_wcstok_s_l(
wchar_t* str,
wchar_t** context,
_locale_t locale
);
char** context
);
char** context,
_locale_t locale
);
Параметры
str
delimiters
context
locale
Возвращаемое значение
Возвращает указатель на следующий токен, найденный в str . Возвращает, NULL
если маркеры больше не найдены. Каждый вызов изменяется str путем замены
символа NULL для первого разделителя, который возникает после возвращенного
маркера.
Условия ошибок
Комментарии
Семейство strtok_s функций находит следующий маркер в str . Набор символов в
параметре delimiters указывает возможные разделители токенов, которые
требуется найти в str во время текущего вызова. Функции wcstok_s и _mbstok_s are
wide-character и multibyte-character versions of strtok_s для расширенных и
многобайтовых символов. Аргументы и возвращаемые значения и
wcstok_s _wcstok_s_l являются строками расширенных символов. Аргументы и
возвращаемые значения и _mbstok_s _mbstok_s_l являются многобайтовыми
строками символов. В остальном эти функции ведут себя одинаково.
Эта функция проверяет свои параметры. При возникновении условия ошибки, как
в таблице Условия ошибки, вызывается обработчик недопустимых параметров, как
описано в разделе Проверка параметров. Если выполнение может быть
продолжено, эти функции устанавливают параметр errno в значение EINVAL и
возвращают значение NULL .
Требования
Подпрограмма Обязательный заголовок
strtok_s <string.h>
_strtok_s_l <string.h>
wcstok_s ,
<string.h> или <wchar.h>
_wcstok_s_l
_mbstok_s ,
<mbstring.h>
_mbstok_s_l
Пример
C
// crt_strtok_s.c
#include <string.h>
#include <stdio.h>
char string1[] =
char string2[] =
int main(void)
printf("Tokens:\n");
if (token1 != NULL)
if (token2 != NULL)
Output
Tokens:
Another
string
string
of
parsed
tokens
at
and
the
some
same
more
time.
tokens
Локаль
Синтаксис
C
long strtol(
char **end_ptr,
int base
);
long wcstol(
wchar_t **end_ptr,
int base
);
long _strtol_l(
char **end_ptr,
int base,
_locale_t locale
);
long _wcstol_l(
wchar_t **end_ptr,
int base,
_locale_t locale
);
Параметры
string
end_ptr
base
Возвращаемое значение
strtol , wcstol , _strtol_l и _wcstol_l возвращает значение, представленное в
string . Они возвращают значение 0, если преобразование невозможно. Когда
errno is set to ERANGE if overflow or underflow occurs. EINVAL string Если задано
значение NULL . Или, если base ненулевое значение и меньше 2 или больше 36.
Дополнительные сведения о ERANGE кодах EINVAL возврата и других кодах возврата
см. в разделе errno, , _doserrno_sys_errlistи _sys_nerr.
Комментарии
wcstol _strtol_l , strtol и _wcstol_l функции преобразуются string в . long Они
Требования
Подпрограмма Обязательный заголовок
strtol <stdlib.h>
_strtol_l <stdlib.h>
Подпрограмма Обязательный заголовок
Пример
См. пример для strtod.
См. также:
Преобразование данных
Локаль
localeconv
setlocale, _wsetlocale
Синтаксис
C
char **endptr
);
char **endptr,
_locale_t locale
);
wchar_t **endptr
);
wchar_t **endptr,
_locale_t locale
);
Параметры
strSource
endptr
locale
Возвращаемое значение
strtold возвращает значение числа с плавающей запятой long double в виде , за
Комментарии
Каждая функция преобразует входную строку strSource в long double . Функция
strtold перестает считывать строку strSource на первом символе, которую она не
может распознать как часть числа. Это может быть завершающий нуль-символ.
wcstold — это версия strtold с расширенными символами; ее аргумент
strSource — строка расширенных символов. В остальном эти функции ведут себя
одинаково.
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_strtold.c
#include <stdlib.h>
#include <stdio.h>
char *string;
char *stopstring;
long double x;
x = strtold(string, &stopstring);
Output
strtold = 3.1415926535898
Локаль
localeconv
_create_locale, _wcreate_locale
_free_locale
strtoll , _strtoll_l , wcstoll ,
_wcstoll_l
Статья • 03.04.2023
Синтаксис
C
char **endptr,
int base
);
wchar_t **endptr,
int base
);
char **endptr,
int base,
_locale_t locale
);
wchar_t **endptr,
int base,
_locale_t locale
);
Параметры
strSource
endptr
base
Возвращаемое значение
Функция strtoll возвращает значение, представленное в строке strSource , кроме
случаев, когда представление вызвало бы переполнение. В таких случаях
возвращается значение LLONG_MAX или LLONG_MIN . Функция возвращает 0, если
преобразование не может быть выполнено. wcstoll возвращает значения
аналогично strtoll .
Если strSource имеет значение NULL или base имеет ненулевое значение и либо
меньше 2, либо больше 36, то для errno устанавливается значение EINVAL .
Комментарии
Функция strtoll преобразует strSource в long long . Обе функции перестают
считывать строку strSource при первом символе, которую они не могут распознать
как часть числа. Это может быть завершающий нуль-символ или первый числовой
символ, который больше или равен base . Функция wcstoll — это версия функции
strtoll с расширенными символами. Ее аргумент strSource — строка
Требования
Подпрограмма Обязательный заголовок
См. также:
Преобразование данных
Локаль
localeconv
setlocale, _wsetlocale
Синтаксис
C
char **endptr,
int base
);
wchar_t **endptr,
int base
);
char **endptr,
int base,
_locale_t locale
);
wchar_t **endptr,
int base,
_locale_t locale
);
Параметры
strSource
endptr
base
Возвращаемое значение
Функция _strtoui64 возвращает значение, представленное в строке strSource ,
кроме случаев, когда представление вызвало бы переполнение. В этом случае
возвращается значение _UI64_MAX . Функция _strtoui64 возвращает 0, если
преобразование не может быть выполнено.
Если strSource имеет значение NULL или base имеет ненулевое значение и либо
меньше 2, либо больше 36, то для errno устанавливается значение EINVAL .
Комментарии
Функция _strtoui64 преобразует strSource в unsigned __int64 . Функция _wcstoui64
— это версия функции _strtoui64 с расширенными символами. Ее аргумент
strSource — строка расширенных символов. В остальном эти функции работают
одинаково.
Требования
Компонент Обязательный заголовок
_strtoui64 <stdlib.h>
Компонент Обязательный заголовок
_strtoui64_l <stdlib.h>
Пример
C
// crt_strtoui64.c
#include <stdio.h>
int main() {
Output
u = 18446744073709551615
Локаль
localeconv
setlocale, _wsetlocale
Синтаксис
C
char **endptr,
int base
);
char **endptr,
int base,
_locale_t locale
);
wchar_t **endptr,
int base
);
wchar_t **endptr,
int base,
_locale_t locale
);
Параметры
strSource
endptr
base
Возвращаемое значение
Функция strtoul возвращает преобразованное значение, если таковое имеется,
или ULONG_MAX в случае переполнения. Функция strtoul возвращает 0, если
преобразование не может быть выполнено. wcstoul возвращает значения
аналогично strtoul . Для обеих функций errno равен ERANGE при возникновении
переполнения или потери значимости.
Комментарии
Эти функции преобразуют входную строку strSource в целое значение unsigned
long .
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
strtoul <stdlib.h>
_strtoul_l <stdlib.h>
Пример
См. пример для strtod.
См. также:
Преобразование данных
Локаль
localeconv
setlocale, _wsetlocale
Синтаксис
C
char **endptr,
int base
);
char **endptr,
int base,
_locale_t locale
);
wchar_t **endptr,
int base
);
wchar_t **endptr,
int base,
_locale_t locale
);
Параметры
strSource
endptr
base
Возвращаемое значение
Функция strtoull возвращает преобразованное значение, если таковое имеется,
или ULLONG_MAX в случае переполнения. Функция strtoull возвращает 0, если
преобразование не может быть выполнено. wcstoull возвращает значения
аналогично strtoull . Для обеих функций errno равен ERANGE при возникновении
переполнения или потери значимости.
Комментарии
Эти функции преобразуют входную строку strSource в целое значение unsigned
long long .
Требования
Подпрограмма Обязательный заголовок
strtoull <stdlib.h>
_strtoull_l <stdlib.h>
Пример
См. пример для strtod.
См. также:
Преобразование данных
Локаль
localeconv
setlocale, _wsetlocale
Синтаксис
C
uintmax_t strtoumax(
char **endptr,
int base
);
uintmax_t _strtoumax_l(
char **endptr,
int base,
_locale_t locale
);
uintmax_t wcstoumax(
wchar_t **endptr,
int base
);
uintmax_t _wcstoumax_l(
wchar_t **endptr,
int base,
_locale_t locale
);
Параметры
strSource
endptr
base
Возвращаемое значение
Функция strtoumax возвращает преобразованное значение, если таковое имеется,
или UINTMAX_MAX в случае переполнения. Функция strtoumax возвращает 0, если
преобразование не может быть выполнено. wcstoumax возвращает значения
аналогично strtoumax . Для обеих функций errno равен ERANGE при возникновении
переполнения или потери значимости.
Комментарии
Эти функции преобразуют входную строку strSource в целое значение uintmax_t .
не распознает как часть числа. Это может быть завершающий символ NULL или
первый числовой символ, который больше или равен base . Параметр категории
LC_NUMERIC языкового стандарта определяет распознавание символа основания
системы счисления в strSource . Дополнительные сведения см. в разделеsetlocale .
_wsetlocale strtoumax и wcstoumax используют текущий языковой стандарт;
_strtoumax_l и _wcstoumax_l идентичны, за исключением того, что они используют
Требования
Подпрограмма Обязательный заголовок
См. также:
Преобразование данных
Локаль
localeconv
setlocale, _wsetlocale
) Важно!
Синтаксис
C
char *_strupr(
char *str
);
wchar_t *_wcsupr(
wchar_t *str
);
);
char *_strupr_l(
char *str,
_locale_t locale
);
wchar_t *_wcsupr_l(
wchar_t *str,
_locale_t locale
);
_locale_t locale
);
char *_strupr(
char (&str)[size]
); // C++ only
wchar_t *_wcsupr(
wchar_t (&str)[size]
); // C++ only
); // C++ only
char *_strupr_l(
char (&str)[size],
_locale_t locale
); // C++ only
wchar_t *_wcsupr_l(
wchar_t (&str)[size],
_locale_t locale
); // C++ only
_locale_t locale
); // C++ only
Параметры
str
locale
Возвращаемое значение
Возвращает указатель на измененную строку. Так как изменение осуществляется на
месте, возвращенный указатель совпадает с указателем, переданным в качестве
входного аргумента. Нет зарезервированных возвращаемых значений для указания
ошибки.
Комментарии
Функция _strupr преобразует "на месте" каждую строчную букву в строке str в
прописную. Преобразование определяется категорией LC_CTYPE языкового
стандарта. Другие символы не затрагиваются. Дополнительные сведения о методе
LC_CTYPE см. в разделе setlocale. Версии этих функций без суффикса _l используют
текущий языковой стандарт. Версии с суффиксом _l идентичны им, но они
используют языковой стандарт, переданный в качестве аргумента. Для получения
дополнительной информации см. Locale.
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые
и безопасные аналоги этих функций. Дополнительные сведения см. в разделе
Безопасные перегрузки шаблонов.
Требования
Подпрограмма Обязательный заголовок
Манипуляция со строками
) Важно!
Синтаксис
C
errno_t _strupr_s(
char *str,
size_t numberOfElements
);
errno_t _wcsupr_s(
wchar_t * str,
size_t numberOfElements
);
errno_t _strupr_s_l(
char * str,
size_t numberOfElements,
_locale_t locale
);
errno_t _wcsupr_s_l(
wchar_t * str,
size_t numberOfElements,
_locale_t locale
);
errno_t _mbsupr_s(
size_t numberOfElements
);
errno_t _mbsupr_s_l(
size_t numberOfElements,
_locale_t locale
);
errno_t _strupr_s(
char (&str)[size]
); // C++ only
errno_t _wcsupr_s(
wchar_t (&str)[size]
); // C++ only
errno_t _strupr_s_l(
char (&str)[size],
_locale_t locale
); // C++ only
errno_t _wcsupr_s_l(
wchar_t (&str)[size],
_locale_t locale
); // C++ only
errno_t _mbsupr_s(
); // C++ only
errno_t _mbsupr_s_l(
_locale_t locale
); // C++ only
Параметры
str
numberOfElements
Размер буфера.
locale
Возвращаемое значение
Нуль в случае успеха или ненулевой код ошибки в случае ошибки.
Эти функции проверяют свои параметры. Если str является указателем NULL ,
вызывается обработчик недопустимых параметров, как описано в разделе
Проверка параметров . Если выполнение может быть продолжено, эти функции
возвращают EINVAL и устанавливают параметр errno в значение EINVAL . Если
numberOfElements меньше, чем длина строки, функция возвращает ERANGE и
Комментарии
Функция _strupr_s преобразует "на месте" каждую строчную букву в строке str в
прописную. _wcsupr_s — версия _strupr_s с расширенными символами. Функция
_mbsupr_s — это версия функции _strupr_s с многобайтовой кодировкой
символов.
Версии библиотек отладки этих функций сначала заполняют буфер 0xFE. Чтобы
отключить это поведение, используйте ._CrtSetDebugFillThreshold
Пример
См. пример для _strlwr_s, _strlwr_s_l, _mbslwr_s, _mbslwr_s_l, _wcslwr_s, . _wcslwr_s_l
Манипуляция со строками
Синтаксис
C
size_t strxfrm(
char *strDest,
size_t count
);
size_t wcsxfrm(
wchar_t *strDest,
size_t count
);
size_t _strxfrm_l(
char *strDest,
size_t count,
_locale_t locale
);
size_t wcsxfrm_l(
wchar_t *strDest,
size_t count,
_locale_t locale
);
Параметры
strDest
Конечная строка.
strSource
Исходная строка.
count
Возвращаемое значение
Возвращает длину преобразованной строки, не считая завершающий нуль-символ.
Если возвращаемое значение больше либо равно count , содержимое strDest
непредсказуемо. При возникновении ошибки каждая функция устанавливает
значение параметра errno и возвращает INT_MAX . В случае недопустимого символа
параметр errno получает значение EILSEQ .
Комментарии
Функция strxfrm преобразует строку, на которую указывает strSource , в новую
упорядоченную форму, которая сохраняется в strDest . Преобразуется и
размещается в конечной строке не более count символов, включая завершающий
нуль-символ. Преобразование осуществляется с использованием параметра
категории LC_COLLATE языкового стандарта. Дополнительные сведения о методе
LC_COLLATE см. в разделе setlocale. Функция strxfrm использует текущий языковой
Требования
Подпрограмма Обязательный заголовок
strxfrm <string.h>
_strxfrm_l <string.h>
См. также:
Преобразование данных
localeconv
setlocale, _wsetlocale
Локаль
Манипуляция со строками
Функции strcoll
Синтаксис
C
void _swab(
char *src,
char *dest,
int n
);
Параметры
src
dest
Возвращаемое значение
Функция swab не возвращает значение. Функция задает значение errno EINVAL ,
если src dest или указатель имеет значение NULL или n меньше нуля, и
вызывается обработчик недопустимых параметров, как описано в разделе
"Проверка параметров".
Комментарии
Если n является четным числом, функция _swab копирует n байт из src , меняет
местами все соседние пары байтов и сохраняет результат в dest . Если n значение
нечетное, _swab копирует и заменяет первые n –1 байт src , а окончательный байт
не копируется. Функция _swab обычно используется для подготовки двоичных
данных для передачи на компьютер, который использует другой порядок байтов.
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_swab.c
#include <stdlib.h>
#include <stdio.h>
int main()
Output
...........................
After: BADCFEHGJILKNMPORQTSVUXWZY
ABCDEFGHIJKLMNOPQRSTUVWXYZ.
Выполняет команду.
) Важно!
Синтаксис
C
int system(
);
int _wsystem(
);
Параметры
command
Возвращаемое значение
Если параметр command имеет значение NULL и найден интерпретатор команд,
возвращает ненулевое значение. Если интерпретатор команд не найден,
возвращает значение 0 и задает значение errno ENOENT . Если command значение не
NULL равно , system возвращает значение, возвращаемое интерпретатором команд.
Она возвращает значение 0, только если интерпретатор команд возвращает
значение 0. Возвращаемое значение -1 указывает на ошибку и errno имеет одно
из следующих значений:
Значение Описание
Значение Описание
Комментарии
Функция system передает параметр command интерпретатору команд, который
выполняет эту строку как команду операционной системы. Для поиска файла
интерпретатора команд CMD.exe функция system использует переменные среды
COMSPEC и PATH . Если параметр command имеет значение NULL , функция только
проверяет, существует ли интерпретатор команд.
Требования
Подпрограмма Обязательный заголовок
Пример
В этом примере функция system используется для печати (TYPE) текстового файла.
// crt_system.c
#include <process.h>
Line one.
Line two.
Вывод
Output
Line one.
Line two.
См. также
Управление процессами и средой
_flushall
Вычисляет тангенс.
Синтаксис
C
C++
Параметры
x
Угол в радианах.
Возвращаемое значение
Функции tan возвращают тангенс x . Если x значение больше или равно 263 или
меньше или равно -263, происходит потеря значимости в результате.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки tan , которые
принимают и возвращают значения float или long double . В программе C, если вы
не используете <tgmath.h> макрос для вызова этой функции, tan всегда принимает
и возвращает . double
Требования
Подпрограмма Обязательный заголовок (C) Обязательный заголовок (C++)
Пример
C
// crt_tan.c
#include <math.h>
#include <stdio.h>
double pi = 3.1415926535;
double x;
x = tan( pi / 4 );
Output
_CItan
tanh , tanhf , tanhl
Статья • 03.04.2023
Синтаксис
C
C++
Параметры
x
Угол в радианах.
Возвращаемое значение
Функции tanh возвращают гиперболический тангенс x . Ошибка не возвращается.
Комментарии
Поскольку C++ допускает перегрузку, можно вызывать перегрузки tanh , которые
принимают и возвращают значения float или long double . В программе C, если вы
не используете <tgmath.h> макрос для вызова этой функции, tanh всегда
принимает и возвращает . double
Если вы используете tanh макрос из <tgmath.h> , тип аргумента определяет, какая
версия функции выбрана. Дополнительные сведения см. в статье Обобщенная
математика типов.
Требования
Подпрограмма Обязательный заголовок (C) Обязательный заголовок (C)
Пример
C
// crt_tanh.c
#include <math.h>
#include <stdio.h>
double pi = 3.1415926535;
double x, y;
x = tan( pi / 4 );
y = tanh( x );
Output
Синтаксис
C
long _tell(
int handle
);
__int64 _telli64(
int handle
);
Параметры
handle
Возвращаемое значение
Текущая позиция указателя файла. Для устройств, которые не поддерживают поиск,
возвращаемое значение не определено.
Комментарии
Функция _tell получает текущее положение указателя файла (при его наличии),
связанного с аргументом handle . Позиция выражается в виде количества байт от
начала файла. Для функции _telli64 это значение выражено в виде 64-разрядного
целого числа.
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_tell.c
//
#include <io.h>
#include <stdio.h>
#include <fcntl.h>
#include <share.h>
#include <string.h>
int fh;
char buffer[500];
char buff[50];
printf( buff );
exit( -1 );
_close( fh );
Line one.
Line two.
Вывод
Output
См. также
Низкоуровневый ввод-вывод
ftell, _ftelli64
_lseek, _lseeki64
tempnam
Статья • 03.04.2023
Синтаксис
C
char *_tempnam(
);
wchar_t *_wtempnam(
);
char *tmpnam(
char *str
);
wchar_t *_wtmpnam(
wchar_t *str
);
Параметры
prefix
dir
Путь, используемый в имени файла, если нет переменной среды TMP или если TMP
не является допустимым каталогом.
str
Возвращаемое значение
Каждая из этих функций возвращает указатель на созданное имя или NULL в случае
сбоя. Сбой может произойти при попытке больше, чем TMP_MAX (см. STDIO). H)
вызывается или tmpnam используется _tempnam , а в переменной TMP среды и в dir
параметре указано недопустимое имя каталога.
7 Примечание
Комментарии
Каждая из этих функций возвращает имя файла, который в настоящее время не
существует. tmpnam возвращает имя, уникальное в указанном временном каталоге
Windows, возвращенном GetTempPathW. _tempnam создает уникальное имя в
каталоге, отличном от указанного. Если имя файла добавляется в обратную косую
черту и нет сведений о пути, например \fname21 , указывает, что имя допустимо для
текущего рабочего каталога.
Если переменная среды TMP не определена или задано имя каталога, который
не существует, использует dir параметр в качестве пути, _tempnam для
которого он создает уникальные имена.
Если переменная среды TMP не определена или задано имя каталога, который
не существует, и если dir он имеет имя NULL каталога, который не существует,
_tempnam использует текущий рабочий каталог для создания уникальных имен.
Требования
Подпрограмма Обязательный заголовок
Подпрограмма Обязательный заголовок
_tempnam <stdio.h>
tmpnam <stdio.h>
Пример
C
// crt_tempnam.c
// in C:\\tmp.
#include <stdio.h>
#include <stdlib.h>
int main(void)
} else {
} else {
if (name2) {
free(name2);
if (_putenv("TMP=") != 0) {
else {
if (name3) {
free(name3);
return 0;
Output
_getmbcp
malloc
_setmbcp
tmpfile
tmpfile_s
_tempnam_dbg , _wtempnam_dbg
Статья • 03.04.2023
Синтаксис
C
char *_tempnam_dbg(
int blockType,
int linenumber
);
wchar_t *_wtempnam_dbg(
int blockType,
int linenumber
);
Параметры
dir
Путь, используемый в имени файла, если нет переменной среды TMP или если TMP
не является допустимым каталогом.
prefix
blockType
filename
linenumber
Возвращаемое значение
Каждая функция возвращает указатель на созданное имя или NULL при сбое. Сбой
может произойти, если в переменной среды TMP и параметре указано
недопустимое dir имя каталога.
7 Примечание
Комментарии
Функции _tempnam_dbg и _wtempnam_dbg идентичны _tempnam функциям и _wtempnam
за исключением того, что при _DEBUG определении они используют отладочную
версию malloc и _malloc_dbg для выделения памяти, если NULL передается в
качестве первого параметра. Для получения дополнительной информации см.
_malloc_dbg.
Требования
Подпрограмма Обязательный заголовок
Потоковый ввод-вывод
Синтаксис
C
Remarks
Функция terminate используется с обработкой исключений C++ и вызывается в
следующих случаях:
Требования
Подпрограмма Обязательный заголовок
terminate <eh.h>
// crt_terminate.cpp
#include <eh.h>
#include <process.h>
#include <iostream>
void term_func();
int main()
set_terminate( term_func );
try
if( j == 0 )
else
result = i/j;
catch( int )
void term_func()
exit(-1);
Output
abort
_set_se_translator
set_terminate
set_unexpected
unexpected
tgamma , tgammaf , tgammal
Статья • 03.04.2023
Синтаксис
C
double tgamma(
double x
);
float tgammaf(
float x
);
long double x
);
float tgamma(
float x
); //C++ only
long double x
); //C++ only
Параметры
x
Возвращаемое значение
В случае успешного выполнения возвращает гамму x .
x = ±0 ±INFINITY
x = -INFINITY Не число
x = +INFINITY +INFINITY
x = не число не число
Комментарии
Поскольку C++ допускает перегрузки, можно вызывать перегрузки функции
tgamma , принимающие и возвращающие типы float и long double . В программе C,
Требования
Компонент Заголовок C Заголовок C++
Синтаксис
C
Параметры
destTime
Возвращаемое значение
Возвращает время в секундах, прошедшее с полуночи, 1 января 1970 года, или -1
при наличии ошибки.
Комментарии
Функция time возвращает число секунд, истекших после полуночи (00:00:00) 1
января 1970 г. (в формате UTC) по системным часам. Возвращаемое значение
сохраняется в расположении, предоставленном destTime . Этот параметр может
иметь значение NULL , в этом случае возвращаемое значение не сохраняется.
Требования
Подпрограмма Обязательный заголовок C Обязательный заголовок C++
Пример
C
// crt_times.c
//
// _tzname
//
#define _CRT_SECURE_NO_WARNINGS 1
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/timeb.h>
#include <string.h>
int main()
time_t ltime;
errno_t err;
//
_tzset();
time( <ime );
if (err)
exit(1);
// Display UTC.
if (err)
if (err)
exit(1);
if (err)
exit(1);
if ( today.tm_hour >= 12 )
today.tm_hour -= 12;
today.tm_hour = 12;
if (err)
exit(1);
// characters.
//
tstruct.timezone/60 );
if (err)
exit(1);
if (err)
exit(1);
printf( tmpbuf );
Output
OS time: 13:51:23
OS date: 04/25/03
asctime, _wasctime
asctime_s, _wasctime_s
Синтаксис
C
int timespec_get(
);
int _timespec32_get(
);
int _timespec64_get(
);
Параметры
time_spec
base
Возвращаемое значение
Значение base , если функция выполнена успешно; в противном случае
возвращает ноль.
Комментарии
Функция timespec_get присваивает текущее время структуре, на которую указывает
аргумент time_spec . Все версии этой структуры имеют два члена: tv_sec и tv_nsec .
Члену tv_sec присваивается целое число секунд, а члену tv_nsec — целое число
наносекунд, округленное до разрешения системных часов, с начала эпохи,
указанной в параметре base .
timespec tv_sec В — это time_t тип, длина которого составляет 32 или 64 бита в
Требования
Подпрограмма Обязательный заголовок
asctime, _wasctime
asctime_s, _wasctime_s
Создает временный файл. Эта функция является устаревшей, так как доступна
более безопасная версия; см. раздел tmpfile_s.
Синтаксис
C
Возвращаемое значение
В случае успешного выполнения tmpfile возвращает указатель на поток. В
противном случае возвращается указатель NULL .
Комментарии
Функция tmpfile создает временный файл и возвращает указатель на этот поток.
Временный файл создается в корневом каталоге. Чтобы создать временный файл в
каталоге, отличном от корневого каталога, используйте tmpnam или tempnam с
fopen.
Если файл не удается открыть, tmpfile возвращает NULL указатель. Этот временный
файл автоматически удаляется при закрытии файла, при нормальном завершении
программы или при _rmtmp вызове при условии, что текущий рабочий каталог не
изменяется. Временный файл открывается в режиме w+b (двоичное чтение и
запись).
Сбой может возникать при попытке выполнить более TMP_MAX (см. STDIO.H)
вызовов с параметром tmpfile .
Требования
Подпрограмма Обязательный заголовок
tmpfile <stdio.h>
Дополнительные сведения о совместимости см. в разделе Compatibility.
Пример
7 Примечание
// crt_tmpfile.c
#include <stdio.h>
FILE *stream;
int i;
else
Output
_rmtmp
Синтаксис
C
errno_t tmpfile_s(
FILE** pFilePtr
);
Параметры
pFilePtr
Возвращаемое значение
Возвращает 0 в случае успеха или код ошибки в случае неудачи.
Условия ошибок
Комментарии
Функция tmpfile_s создает временный файл и помещает указатель на этот поток в
аргумент pFilePtr . Временный файл создается в корневом каталоге. Чтобы создать
временный файл в каталоге, отличном от корневого, используйте tmpnam_s или
tempnam с fopen.
Сбой может произойти при попытке более чем TMP_MAX_S (см. STDIO. H) вызывает с
tmpfile_s .
Требования
Подпрограмма Обязательный заголовок
tmpfile_s <stdio.h>
Пример
7 Примечание
// crt_tmpfile_s.c
//
#include <stdio.h>
FILE *stream;
int i;
errno_t err;
err = tmpfile_s(&stream);
if( err )
else
Output
_rmtmp
Синтаксис
C
errno_t tmpnam_s(
char * str,
size_t sizeInChars
);
errno_t _wtmpnam_s(
wchar_t *str,
size_t sizeInChars
);
errno_t tmpnam_s(
char (&str)[size]
); // C++ only
errno_t _wtmpnam_s(
wchar_t (&str)[size]
); // C++ only
Параметры
str
sizeInChars
Возвращаемое значение
Обе эти функции возвращают 0 в случае успеха или номер ошибки в случае сбоя.
Условия ошибок
str sizeInChars Возвращаемое Содержимое
значение str
Комментарии
Каждая из этих функций возвращает имя файла, который в настоящее время не
существует. tmpnam_s возвращает имя, уникальное в указанном временном каталоге
Windows, возвращенном .GetTempPathW Если имя файла добавляется в обратную
косую черту и нет сведений о пути, например \fname21 , указывает, что имя
допустимо для текущего рабочего каталога.
Требования
Подпрограмма Обязательный заголовок
tmpnam_s <stdio.h>
Пример
C
// crt_tmpnam_s.c
//
#include <stdio.h>
#include <stdlib.h>
char name1[L_tmpnam_s];
errno_t err;
int i;
if (err)
exit(1);
else
Output
_getmbcp
malloc
_setmbcp
tmpfile_s
toascii , __toascii
Статья • 03.04.2023
Синтаксис
C
int __toascii(
int c
);
Параметры
c
Возвращаемое значение
Функция __toascii преобразует значение c в 7-разрядный диапазон ASCII и
возвращает результат. Возвращаемое значение, указывающее на ошибку, не
зарезервировано.
Комментарии
Подпрограмма __toascii преобразует заданный символ в символ ASCII путем его
усечения до 7 бит в прямом порядке. Никакие другие преобразования не
применяются.
как макрос, toascii только если __STDC__ не определен или определен как 0; в
противном случае он не определен.
Требования
Подпрограмма Обязательный заголовок
См. также:
Преобразование данных
Функции to
tolower , _tolower , towlower ,
_tolower_l , _towlower_l
Статья • 03.04.2023
Синтаксис
C
int tolower(
int c
);
int _tolower(
int c
);
int towlower(
wint_t c
);
int _tolower_l(
int c,
_locale_t locale
);
int _towlower_l(
wint_t c,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм преобразует копию c в строчный символ, если это
преобразование возможно, и возвращает результат. Возвращаемое значение,
указывающее на ошибку, не зарезервировано.
Комментарии
Каждая из этих процедур преобразует прописную букву в строчную, если это
возможно и уместно. Преобразование регистра towlower зависит от языкового
стандарта. Изменяются только символы, соответствующие текущему языковому
стандарту. Функции без суффикса _l используют текущий языковой стандарт.
Версии этих функций, имеющие суффикс _l , идентичны функциям без суффикса, за
исключением того, что они принимают языковой стандарт в качестве параметра и
используют его вместо текущего языкового стандарта. Для получения
дополнительной информации см. Locale.
Для того, _tolower чтобы дать ожидаемые результаты, __isascii и isupper должны
оба возвращать ненулевое значение.
7 Примечание
Требования
Подпрограмма Обязательный заголовок
tolower <ctype.h>
_tolower <ctype.h>
Пример
См. пример в to разделе Функции.
См. также:
Преобразование данных
Функции to
Локаль
Синтаксис
C
int toupper(
int c
);
int _toupper(
int c
);
int towupper(
wint_t c
);
int _toupper_l(
int c ,
_locale_t locale
);
int _towupper_l(
wint_t c ,
_locale_t locale
);
Параметры
c
locale
Возвращаемое значение
Каждая из этих подпрограмм преобразует копию c , если это преобразование
возможно, и возвращает результат.
Если c является расширенным символом, для которого iswlower имеется
ненулевое значение, а для которого iswupper имеется соответствующий
расширенный символ, towupper возвращается соответствующий расширенный
символ; towupper в противном случае возвращается c без изменений.
Для того, чтобы toupper дать ожидаемые результаты, __isascii и islower оба должны
возвращать ненулевое значение.
Комментарии
Каждая из этих подпрограмм преобразует указанную строчную букву в прописную,
если это возможно и уместно. Преобразование регистра towupper зависит от
языкового стандарта. Изменяются только символы, соответствующие текущему
языковому стандарту. Функции без суффикса _l используют текущий языковой
стандарт. Версии этих функций с суффиксом _l идентичны функциям без суффикса,
за исключением того, что они принимают языковой стандарт в качестве параметра
и используют его вместо текущего языкового стандарта. Для получения
дополнительной информации см. Locale.
Для того, чтобы toupper дать ожидаемые результаты, __isascii и isupper оба должны
возвращать ненулевое значение.
7 Примечание
Требования
Подпрограмма Обязательный заголовок
toupper <ctype.h>
_toupper <ctype.h>
Пример
См. пример в to разделе Функции.
Функции to
Локаль
Преобразует символ.
Синтаксис
C
wint_t towctrans(
wint_t c,
wctrans_t category
);
Параметры
c
category
Возвращаемое значение
Символ c после того, как функция towctrans использовала правило
преобразования в категории category .
Комментарии
Значение category должно быть возвращено ранее успешным вызовом wctrans.
Требования
Подпрограмма Обязательный заголовок
towctrans <wctype.h>
См. также:
Преобразование данных
trunc , truncf , truncl
Статья • 03.04.2023
Синтаксис
C
Параметры
x
Возвращаемое значение
В случае успешного выполнения функции возвращают целочисленное значение x ,
округленное до нуля.
Проблема Возвращает
x = ±INFINITY x
x = ±0 x
x = не число не число
Комментарии
Поскольку C++ допускает перегрузки, можно вызывать перегрузки функции trunc ,
принимающие и возвращающие типы float и long double . В программе на языке
C, если вы не используете <макрос tgmath.h> для вызова этой функции, trunc
всегда принимает и возвращает double .
Требования
Компонент Заголовок C Заголовок C++
) Важно!
) Важно!
Синтаксис
C
Remarks
Функция _tzset использует текущую настройку переменной среды TZ для
присвоения значения трем глобальным переменным: _daylight , _timezone и
_tzname . Эти переменные используются функциями _ftime и localtime для внесения
tzn
hh
Различие в часах между временем в формате UTC и местным временем. Знак (+)
для положительных значений необязателен.
mm
dzn
7 Примечание
set TZ=GST-1GDT
следующие значения:
Требования
Подпрограмма Обязательный заголовок
_tzset <time.h>
Пример
C
// crt_tzset.cpp
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
_tzset();
int daylight;
_get_daylight( &daylight );
long timezone;
_get_timezone( &timezone );
size_t s;
char tzname[100];
exit( 0 );
Output
_daylight = 1
_timezone = 28800
asctime, _wasctime
Синтаксис
C
Параметры
pmode
Возвращаемое значение
_umask возвращает предыдущее значение pmode . Ошибка не возвращается.
Комментарии
Функция _umask задает для маски разрешений файла текущего процесса режим,
указанный pmode . Маска разрешений файла изменяет параметр разрешения для
новых файлов, созданных _creat , _open или _sopen . Если бит в битовой маске
равен 1, соответствующий бит в запрошенном значении разрешения имеет
значение 0 (запрещено). Если бит в битовой маске равен 0, соответствующий бит
остается без изменений. Параметр разрешения для нового файла не задается, пока
файл не будет закрыт в первый раз.
pmode Описание
доступен только для записи). pmode Если аргумент имеет значение _S_IWRITE , запись
не разрешена (файл доступен только для чтения). Например, если в маске
установлен бит записи, все новые файлы будут доступны только для чтения. В MS-
DOS и операционных системах Windows все файлы доступны для чтения;
невозможно предоставить разрешение только на запись. Таким образом,
установка бита чтения с помощью _umask не влияет на режимы файла.
Требования
Компонент Обязательный заголовок
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_umask.c
#include <sys/types.h>
#include <io.h>
#include <stdio.h>
int oldmask;
Output
Oldmask = 0x0000
Низкоуровневый ввод-вывод
_chmod, _wchmod
_creat, _wcreat
_mkdir, _wmkdir
_open, _wopen
_umask_s
Статья • 03.04.2023
Синтаксис
C
errno_t _umask_s(
int mode,
int* pOldMode
);
Параметры
mode
pOldMode
Возвращаемое значение
Возвращает код ошибки, если mode не указан допустимый режим или pOldMode
указатель NULL .
Условия ошибок
mode Описание
только для записи). mode Если аргумент имеет значение _S_IWRITE , запись не
разрешена (файл доступен только для чтения). Например, если в маске установлен
бит записи, все новые файлы будут доступны только для чтения. В MS-DOS и
операционных системах Windows все файлы доступны для чтения; невозможно
предоставить разрешение только на запись. Таким образом, установка бита чтения
с помощью _umask_s не влияет на режимы файла.
Требования
Компонент Обязательный заголовок
Пример
C
// crt_umask_s.c
*/
#include <sys/stat.h>
#include <sys/types.h>
#include <io.h>
#include <stdio.h>
if (err)
exit(1);
Output
Oldmask = 0x0000
Низкоуровневый ввод-вывод
_chmod, _wchmod
_creat, _wcreat
_mkdir, _wmkdir
_open, _wopen
_umask
__uncaught_exception
Статья • 03.04.2023
Синтаксис
C++
bool __uncaught_exception();
Возвращаемое значение
Значение true с момента возникновения исключения в блоке try и до
инициализации соответствующего блока catch ; в противном случае — false .
Remarks
Требования
Подпрограмма Обязательный заголовок
__uncaught_exception <eh.h>
Синтаксис
C
Remarks
Подпрограмма unexpected не используется с текущей реализацией обработки
исключений C++. По умолчанию unexpected вызывает функцию terminate . Это
поведение по умолчанию можно изменить, написав пользовательскую функцию
завершения. Вызов set_unexpected с именем функции в качестве аргумента.
unexpected вызывает последнюю переданную функцию set_unexpected .
Требования
Подпрограмма Обязательный заголовок
unexpected <eh.h>
abort
_set_se_translator
set_terminate
set_unexpected
terminate
ungetc , ungetwc
Статья • 03.04.2023
Синтаксис
C
int ungetc(
int c,
FILE *stream
);
wint_t ungetwc(
wint_t c,
FILE *stream
);
Параметры
c
stream
Возвращаемое значение
При успешном выполнении каждая из этих функций возвращает аргумент символа
c . Если c не удается отодвинуть назад или символ не был считан, входной поток
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
Комментарии
Функция ungetc помещает символ c обратно в stream и удаляет индикатор конца
файла. Поток должен быть открыт для чтения. Последующая операция чтения в
stream начинается с c . Попытка отправить EOF в поток с помощью ungetc
игнорируется.
ungetwc — это версия функции ungetc для расширенных символов. Однако при
каждом успешном вызове ungetwc для текстового или двоичного потока значение
индикатора позиции в файле будет не задано до тех пор, пока все помещенные
обратно символы не будут считаны или удалены.
Требования
Подпрограмма Обязательный заголовок
ungetc <stdio.h>
Пример
C
// crt_ungetc.c
//
#include <stdio.h>
#include <ctype.h>
int ch;
int result = 0;
if( ch != EOF )
result, getchar() );
Output
521aNumber = 521
getc, getwc
putc, putwc
_ungetc_nolock , _ungetwc_nolock
Статья • 03.04.2023
Синтаксис
C
int _ungetc_nolock(
int c,
FILE *stream
);
wint_t _ungetwc_nolock(
wint_t c,
FILE *stream
);
Параметры
c
stream
Возвращаемое значение
При успешном выполнении каждая из этих функций возвращает аргумент символа
c . Если c не удается отодвинуть назад или если ни одного символа не было
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
Комментарии
Эти функции представляют собой неблокирующие версии функций ungetc и
ungetwc . Версии с суффиксом _nolock идентичны, за исключением того, что они не
защищены от помех со стороны других потоков. Они могут выполняться быстрее,
так как они не несут накладных расходов, связанных с блокировкой других
потоков. Используйте эти функции только в потокобезопасных контекстах,
например в однопоточных приложениях или если вызываемая область уже
обрабатывает изоляцию потоков.
Требования
Подпрограмма Обязательный заголовок
_ungetc_nolock <stdio.h>
getc, getwc
putc, putwc
ungetch
Статья • 03.04.2023
) Важно!
) Важно!
Синтаксис
C
int _ungetch(
int c
);
wint_t _ungetwch(
wint_t c
);
int _ungetch_nolock(
int c
);
wint_t _ungetwch_nolock(
wint_t c
);
Параметры
c
Возвращаемое значение
Обе функции возвращают символ c в случае успешного выполнения. При
возникновении ошибки _ungetch возвращает значение EOF и _ungetwch . WEOF
Комментарии
Эти функции отправляют символ c обратно в консоль, что приводит c к
следующему символу, прочитанного _getch или _getche (или _getwch _getwche ).
_ungetch и _ungetwch завершаются ошибкой, если они вызываются несколько раз
перед следующим чтением. Аргумент c может не иметь значение EOF (или WEOF ).
Требования
Подпрограмма Обязательный заголовок
Пример
C
// crt_ungetch.c
// compile with: /c
//
#include <conio.h>
#include <ctype.h>
#include <stdio.h>
char buffer[100];
int count = 0;
int ch;
ch = _getche();
ch = _getche();
break;
buffer[count++] = (char)ch;
ch = _getche();
Output
Whitetoken = White
_getch, _getwch
unlink
Статья • 03.04.2023
Удалите файл.
Синтаксис
C
int _unlink(
int _wunlink(
);
Параметры
filename
Возвращаемое значение
Каждая из этих функций при успешном выполнении возвращает 0. В противном
случае функция возвращает значение -1 и задает errno EACCES значение , что
означает, что путь указывает файл только для чтения или каталог, а также папку
ENOENT , то есть файл или путь не найден.
Комментарии
Функция _unlink удаляет файл, указанный в параметре filename . _wunlink — это
версия _unlink с расширенными символами; аргумент filename для _wunlink —
строка расширенных символов. В остальном эти функции ведут себя одинаково.
Требования
Подпрограмма Обязательный заголовок
Пример кода
Эта программа использует _unlink для удаления CRT_UNLINK. TXT.
// crt_unlink.c
#include <stdio.h>
else
Deleted 'CRT_UNLINK.TXT'
_close
remove, _wremove
_unlock_file
Статья • 03.04.2023
Синтаксис
C
void _unlock_file(
FILE* file
);
Параметры
file
Дескриптор файла.
Комментарии
Функция _unlock_file разблокирует файл, указанный в параметре file . Снятие
блокировки файла разрешает доступ к этому файлу других процессов. Эту функцию
не следует вызывать, если _lock_file только она не была вызвана ранее для
указателя file . Вызов _unlock_file в файле, который не заблокирован, может
привести к взаимоблокировке. Пример см. в разделе _lock_file.
Требования
Подпрограмма Обязательный заголовок
_unlock_file <stdio.h>
_creat, _wcreat
_open, _wopen
_lock_file
_utime , _utime32 , _utime64 , _wutime ,
_wutime32 , _wutime64
Статья • 03.04.2023
Синтаксис
C
int _utime(
);
int _utime32(
);
int _utime64(
);
int _wutime(
);
int _wutime32(
);
int _wutime64(
);
Параметры
filename
times
Значение Условие
errno
EACCES Путь указывает каталог или файл, доступный только для чтения
EMFILE Слишком много открытых файлов (чтобы изменить время изменения файла,
файл необходимо открыть)
Дату файла можно изменить, если дата изменения лежит в диапазоне от полуночи
1-го января 1970 года до конечной даты используемой функции. В функциях _utime
и _wutime используется 64-разрядное значение времени, поэтому конечная дата
23:59:59 31-го декабря 3000 года, время в формате UTC. Если определена директива
_USE_32BIT_TIME_T для принудительного использования старого поведения,
конечная дата — 23:59:59 18 января 2038 года, время в формате UTC. Функции
_utime32 и _wutime32 используют 32-разрядный тип времени независимо от того,
Комментарии
Функция _utime задает время изменения для файла, указанного в filename . Для
изменения времени процесс должен иметь разрешение на запись в файл. В
операционной системе Windows можно изменить время доступа и время
изменения в структуре _utimbuf . Если times является указателем NULL , для времени
изменения устанавливается текущее время. В противном случае переменная times
должна указывать на структуру типа _utimbuf , определенную в SYS\UTIME.H.
Поле Описание
Требования
Подпрограмма Обязательные заголовки Необязательные заголовки
Пример
Эта программа использует функцию _utime , чтобы задать для времени изменения
файла текущее время.
// crt_utime.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/utime.h>
#include <time.h>
tma.tm_hour = 12;
tma.tm_isdst = 0;
tma.tm_mday = 15;
tma.tm_min = 0;
tma.tm_mon = 0;
tma.tm_sec = 0;
tma.tm_year = 103;
tmm.tm_hour = 12;
tmm.tm_isdst = 0;
tmm.tm_mday = 15;
tmm.tm_min = 0;
tmm.tm_mon = 0;
tmm.tm_sec = 0;
tmm.tm_year = 102;
// Convert tm to time_t
ut.actime = mktime(&tma);
ut.modtime = mktime(&tmm);
else
Directory of C:\test
Directory of C:\test
asctime, _wasctime
_statФункции , _wstat
Синтаксис
C
type va_arg(
va_list arg_ptr,
type
);
void va_copy(
va_list dest,
va_list src
void va_end(
va_list arg_ptr
);
void va_start(
va_list arg_ptr,
prev_param
void va_start(
arg_ptr
Параметры
type
arg_ptr
dest
src
Возвращаемое значение
va_arg возвращает текущий аргумент. va_copy va_end и va_start не возвращают
значения.
Комментарии
Макросы va_arg , va_copy , va_end и va_start предоставляют переносимый способ
получения аргументов функции, которая принимает переменное число
аргументов. Существует две версии макросов: макросы, определенные в STDARG.H ,
соответствуют стандарту ISO C99; макросы, определенные в VARARGS.H , являются
устаревшими, но сохраняются для обратной совместимости с кодом, написанным
до стандарта ANSI C89.
7 Примечание
#include <stdio.h>
#include <stdarg.h>
va_list argptr;
va_start(argptr, i);
if (i == 0)
printf("%d\n", n);
else
printf("%s\n", s);
va_end(argptr);
int main()
Обратите внимание — функция testit ожидает, что второй параметр будет int
или char* . Передаваемые аргументы имеют значение 0xffffffff ( unsigned int , а не
int ) и NULL (фактически int , а не char* ). Когда программа скомпилирована для
Output
-1
(null)
Требования
Заголовка: <stdio.h> И <stdarg.h>
Библиотеки
Все версии библиотек времени выполнения языка C.
Пример
C
// crt_va.c
// va_end va_list
#include <stdio.h>
#include <stdarg.h>
#include <math.h>
va_list marker;
va_list copy;
while (i != -1)
sum += i;
count++;
i = va_arg(marker, int);
sum = 0.0;
while (i != -1)
i = va_arg(copy, int);
Output
) Важно!
Синтаксис
C
int _vcprintf(
va_list argptr
);
int _vcprintf_l(
_locale_t locale,
va_list argptr
);
int _vcwprintf(
va_list argptr
);
int _vcwprintf_l(
_locale_t locale,
va_list argptr
);
Параметры
format
Спецификация формата.
argptr
locale
Возвращаемое значение
Число записанных символов или отрицательное значение в случае ошибки вывода.
Если format является пустым указателем, вызывается обработчик недопустимых
параметров, как описано в разделе Проверка параметров. Если выполнение
разрешено для продолжения, errno устанавливается значение EINVAL и
возвращается значение -1.
Комментарии
Каждая из этих функций принимает указатель на список аргументов, а затем
форматирует и записывает указанные данные в консоль. _vcwprintf — версия
_vcprintf с расширенными символами. Она принимает строку расширенных
символов в качестве аргумента.
) Важно!
Требования
Подпрограмма Обязательный заголовок Необязательные
заголовки
Пример
C++
// crt_vcprintf.cpp
// compile with: /c
#include <conio.h>
#include <stdarg.h>
va_list args;
va_start(args, format);
va_end(args);
return result;
int main()
"<symbol>", 5 );
Output
Функции vprintf
) Важно!
Синтаксис
C
int _vcprintf_p(
va_list argptr
);
int _vcprintf_p_l(
_locale_t locale,
va_list argptr
);
int _vcwprintf_p(
va_list argptr
);
int _vcwprintf_p_l(
_locale_t locale,
va_list argptr
);
Параметры
format
Спецификация формата.
argptr
locale
Возвращаемое значение
Число выведенных символов или отрицательное значение в случае ошибки. Если
format является пустым указателем, вызывается обработчик недопустимых
параметров, как описано в разделе Проверка параметров. Если выполнение
разрешено для продолжения, errno устанавливается значение EINVAL и
возвращается значение -1.
Комментарии
Каждая из этих функций принимает указатель на список аргументов, а затем
использует функцию _putch для форматирования и записи данных в консоль.
( _vcwprintf_p использует _putwch вместо _putch . _vcwprintf_p — это версия для
расширенных символов _vcprintf_p . В качестве аргумента используется строка
расширенных символов.)
) Важно!
Убедитесь, что format не является строкой, определяемой пользователем.
Дополнительные сведения см . в статье Предотвращение переполнения
буфера.
Требования
Подпрограмма Обязательный заголовок
) Важно!
Пример
C
// crt_vcprintf_p.c
// compile with: /c
#include <conio.h>
#include <stdarg.h>
va_list args;
va_start(args, format);
va_end(args);
return result;
int main()
"one", 222);
Output
38 characters printed
) Важно!
Синтаксис
C
int _vcprintf_s(
va_list argptr
);
int _vcprintf_s_l(
_locale_t locale,
va_list argptr
);
int _vcwprintf_s(
va_list argptr
);
int _vcwprintf_s_l(
_locale_t locale,
va_list argptr
);
Параметры
format
Спецификация формата.
argptr
locale
Возвращаемое значение
Число записанных символов или отрицательное значение в случае ошибки вывода.
Как и в менее безопасных версиях этих функций, если format является пустым
указателем, вызывается обработчик недопустимых параметров, как описано в
разделе Проверка параметров. Кроме того, в отличие от менее безопасных версий
этих функций, если format не указан допустимый формат, создается исключение
недопустимого параметра. Если продолжение выполнения разрешено, эти функции
возвращают код ошибки и устанавливают этот код ошибки в качестве значения для
errno . Код ошибки по умолчанию — если EINVAL не применяется более
конкретное значение.
Комментарии
Каждая из этих функций принимает указатель на список аргументов, а затем
форматирует и записывает указанные данные в консоль. _vcwprintf_s — версия
_vcprintf_s с расширенными символами. Она принимает строку расширенных
) Важно!
Требования
Подпрограмма Обязательный заголовок Необязательные
заголовки
) Важно!
Пример
C++
// crt_vcprintf_s.cpp
#include <conio.h>
#include <stdarg.h>
va_list args;
va_start(args, format);
va_end(args);
return result;
int main()
"<symbol>", 5 );
Output
Функции vprintf
Синтаксис
C
int vfprintf(
FILE *stream,
va_list argptr
);
int _vfprintf_l(
FILE *stream,
_locale_t locale,
va_list argptr
);
int vfwprintf(
FILE *stream,
va_list argptr
);
int _vfwprintf_l(
FILE *stream,
_locale_t locale,
va_list argptr
);
Параметры
stream
format
Спецификация формата.
argptr
locale
Возвращаемое значение
Функции vfprintf и vfwprintf возвращают число записанных символов, не
включая конечный нуль-символ, или отрицательное значение, если произошла
ошибка вывода. Если какой-либо stream или format является пустым указателем,
вызывается обработчик недопустимых параметров, как описано в разделе
"Проверка параметров". Если продолжение выполнения разрешено, функции
возвращают значение -1 и задают для errno значение EINVAL .
Комментарии
Каждая из этих функций принимает указатель на список аргументов, а затем
форматирует и записывает указанные данные в stream .
) Важно!
Требования
Подпрограмма Обязательный заголовок Необязательные
заголовки
Функции vprintf
Синтаксис
C
int _vfprintf_p(
FILE *stream,
va_list argptr
);
int _vfprintf_p_l(
FILE *stream,
_locale_t locale,
va_list argptr
);
int _vfwprintf_p(
FILE *stream,
va_list argptr
);
int _vfwprintf_p_l(
FILE *stream,
_locale_t locale,
va_list argptr
);
Параметры
stream
format
Спецификация формата.
argptr
locale
Возвращаемое значение
Функции _vfprintf_p и _vfwprintf_p возвращают число записанных символов, не
включая конечный нуль-символ, или отрицательное значение, если произошла
ошибка вывода.
Комментарии
Каждая из этих функций принимает указатель на список аргументов, а затем
форматирует и записывает указанные данные в stream . Эти функции отличаются от
версий _vfprint_s и _vfwprint_s только в том, что они поддерживают
позиционные параметры. Дополнительные сведения см. в разделе Позиционные
параметры printf_p.
) Важно!
Если или stream format является пустым указателем, или если строка
форматирования содержит недопустимые символы форматирования, вызывается
обработчик недопустимых параметров, как описано в разделе "Проверка
параметров". Если продолжение выполнения разрешено, функции возвращают
значение -1 и задают для errno значение EINVAL .
Требования
Подпрограмма Обязательный заголовок Необязательные
заголовки
Функции vprintf
Синтаксис
C
int vfprintf_s(
FILE *stream,
va_list argptr
);
int _vfprintf_s_l(
FILE *stream,
_locale_t locale,
va_list argptr
);
int vfwprintf_s(
FILE *stream,
va_list argptr
);
int _vfwprintf_s_l(
FILE *stream,
_locale_t locale,
va_list argptr
);
Параметры
stream
format
Спецификация формата.
argptr
locale
Возвращаемое значение
Функции vfprintf_s и vfwprintf_s возвращают число записанных символов, не
включая конечный нуль-символ, или отрицательное значение, если произошла
ошибка вывода. Если или stream format является пустым указателем или строка
форматирования содержит недопустимые символы форматирования, вызывается
обработчик недопустимых параметров, как описано в разделе Проверка
параметров. Если продолжение выполнения разрешено, функции возвращают
значение -1 и задают для errno значение EINVAL .
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
Комментарии
Каждая из этих функций принимает указатель на список аргументов, а затем
форматирует и записывает указанные данные в stream .
) Важно!
Убедитесь, что format не является строкой, определяемой пользователем.
Дополнительные сведения см . в статье Предотвращение переполнения
буфера.
Начиная с Windows 10 версии 2004 (сборка 19041) printf семейство
функций печатает точно представленные числа с плавающей запятой в
соответствии с правилами округления IEEE 754. В предыдущих версиях
Windows точно представленные числа с плавающей запятой,
заканчивающиеся на "5", всегда округлялись вверх. IEEE 754 гласит, что они
должны округлиться до ближайшей четной цифры (также известный как
"Округление банкира"). Например, и printf("%1.0f", 1.5) printf("%1.0f", 2.5)
должны округлиться до 2. Ранее значение 1,5 округлялось до 2, а 2,5
округлялось до 3. Это изменение влияет только на точно представленные
числа. Например, значение 2,35 (которое при представлении в памяти ближе к
2,350000000000000008) продолжает округление до 2,4. Округление,
выполняемое этими функциями, теперь также учитывает режим округления с
плавающей запятой, заданный параметром fesetround. Ранее округление
всегда выбирало FE_TONEAREST поведение. Это изменение затрагивает только
программы, созданные с помощью Visual Studio 2019 версии 16.2 и более
поздних версий. Чтобы использовать устаревшее поведение округления с
плавающей запятой, свяжите с legacy_stdio_float_rounding.obj.
Требования
Подпрограмма Обязательный заголовок Необязательные
заголовки
Функции vprintf
Синтаксис
C
int vfscanf(
FILE *stream,
va_list argptr
);
int vfwscanf(
FILE *stream,
va_list argptr
);
Параметры
stream
format
arglist
Возвращаемое значение
Каждая из этих функций возвращает количество полей, которые успешно
преобразованы и назначены. Возвращаемое значение не включает поля, которые
считываются, но не назначаются. Возвращаемое значение 0 указывает, что поля не
были назначены. Если до первого преобразования возникает ошибка или
достигается конец потока файла, возвращается значение EOF для vfscanf и
vfwscanf .
Эти функции проверяют свои параметры. Если stream или format является пустым
указателем, вызывается обработчик недопустимых параметров, как описано в
разделе Проверка параметров. Если продолжение выполнения разрешено, эти
функции возвращают EOF и устанавливают для errno значение EINVAL .
Комментарии
Функция vfscanf считывает данные из текущей позиции stream в расположения,
на которые указывает список аргументов arglist . Каждый аргумент в списке
должен быть указателем на переменную, которая имеет тип, соответствующий
спецификатору типа в параметре format . format управляет интерпретацией полей
ввода и имеет ту же форму и функцию, что format и аргумент для scanf ; описание
см scanf . в описании format .
Требования
Компонент Обязательный заголовок
vfscanf <stdio.h>
// crt_vfscanf.c
#include <stdio.h>
#include <stdarg.h>
FILE *stream;
int result;
va_list arglist;
va_start(arglist, format);
va_end(arglist);
return result;
int main(void)
long l;
float fp;
char s[81];
char c;
else
// Security caution!
printf("%s\n", s);
printf("%ld\n", l);
printf("%f\n", fp);
printf("%c\n", c);
fclose(stream);
Output
a-string
65000
3.141590
vfscanf_s, vfwscanf_s
vfscanf_s , vfwscanf_s
Статья • 03.04.2023
Синтаксис
C
int vfscanf_s(
FILE *stream,
va_list arglist
);
int vfwscanf_s(
FILE *stream,
va_list arglist
);
Параметры
stream
format
arglist
Возвращаемое значение
Каждая из этих функций возвращает количество полей, которые успешно
преобразованы и назначены. Возвращаемое значение не включает поля, которые
были прочитаны, но не назначены. Возвращаемое значение 0 указывает, что поля
не были назначены. Если до первого преобразования возникает ошибка или
достигается конец потока файла, возвращается значение EOF для vfscanf_s и
vfwscanf_s .
Эти функции проверяют свои параметры. Если stream является недопустимым
указателем на файл или format является пустым указателем, эти функции вызывают
обработчик недопустимых параметров, как описано в разделе Проверка
параметров. Если продолжение выполнения разрешено, эти функции возвращают
EOF и устанавливают для errno значение EINVAL .
Комментарии
Функция vfscanf_s считывает данные из текущей позиции stream в расположения,
на которые указывает список аргументов arglist (если есть). Каждый аргумент в
списке должен быть указателем на переменную, которая имеет тип,
соответствующий спецификатору типа в параметре format . format управляет
интерпретацией полей ввода и имеет ту же форму и функцию, что format и
аргумент для scanf_s ; описание см. в разделе Форматирование полей
спецификации: функции scanf и wscanf . format vfwscanf_s — это версия vfscanf_s с
расширенными символами; аргумент format для функции vfwscanf_s — строка
расширенных символов. Эти функции ведут себя одинаково, если поток открыт в
режиме ANSI. vfscanf_s сейчас не поддерживает ввод из потока ЮНИКОДА.
7 Примечание
Требования
Компонент Обязательный заголовок
vfscanf_s <stdio.h>
Пример
C
// crt_vfscanf_s.c
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
FILE *stream;
int result;
va_list arglist;
va_start(arglist, format);
va_end(arglist);
return result;
int main(void)
long l;
float fp;
char s[81];
char c;
else
// Security caution!
printf("%s\n", s);
printf("%ld\n", l);
printf("%f\n", fp);
printf("%c\n", c);
fclose(stream);
Output
a-string
65000
3.141590
vfscanf, vfwscanf
vprintf , _vprintf_l , vwprintf ,
_vwprintf_l
Статья • 03.04.2023
Синтаксис
C
int vprintf(
va_list argptr
);
int _vprintf_l(
_locale_t locale,
va_list argptr
);
int vwprintf(
va_list argptr
);
int _vwprintf_l(
_locale_t locale,
va_list argptr
);
Параметры
format
Спецификация формата.
argptr
locale
Возвращаемое значение
Функции vprintf и vwprintf возвращают число записанных символов, не включая
конечный нуль-символ, или отрицательное значение, если произошла ошибка
вывода. Если format является пустым указателем или строка форматирования
содержит недопустимые символы форматирования, вызывается обработчик
недопустимых параметров, как описано в разделе Проверка параметров. Если
продолжение выполнения разрешено, функции возвращают значение -1 и задают
для errno значение EINVAL .
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
Комментарии
Каждая из этих функций принимает указатель на список аргументов, а затем
форматирует и записывает указанные данные в stdout .
) Важно!
Требования
Подпрограмма Обязательный заголовок Необязательные заголовки
Функции vprintf
Синтаксис
C
int _vprintf_p(
va_list argptr
);
int _vprintf_p_l(
_locale_t locale,
va_list argptr
);
int _vwprintf_p(
va_list argptr
);
int _vwprintf_p_l(
_locale_t locale,
va_list argptr
);
Параметры
format
Спецификация формата.
argptr
locale
Комментарии
Каждая из этих функций принимает указатель на список аргументов, а затем
форматирует и записывает указанные данные в stdout . Эти функции отличаются от
vprintf_s и vwprintf_s только тем, что они поддерживают возможность указать
) Важно!
Требования
Подпрограмма Обязательный заголовок Необязательные
заголовки
Функции vprintf
Синтаксис
C
int vprintf_s(
va_list argptr
);
int _vprintf_s_l(
_locale_t locale,
va_list argptr
);
int vwprintf_s(
va_list argptr
);
int _vwprintf_s_l(
_locale_t locale,
va_list argptr
);
Параметры
format
Спецификация формата.
argptr
locale
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
Комментарии
Каждая из этих функций принимает указатель на список аргументов, а затем
форматирует и записывает указанные данные в stdout .
Безопасные версии этих функций отличаются от vprintf и vwprintf только тем, что
безопасные версии проверяют, что строка формата содержит допустимые
символы форматирования.
) Важно!
Требования
Подпрограмма Обязательный заголовок Необязательные
заголовки
Функции vprintf
Синтаксис
C
int vscanf(
va_list arglist
);
int vwscanf(
va_list arglist
);
Параметры
format
arglist
Возвращаемое значение
Возвращает количество полей, которые успешно преобразованы и назначены;
Возвращаемое значение не включает поля, которые были прочитаны, но не
назначены. Возвращаемое значение 0 указывает, что поля не были назначены.
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
Комментарии
Функция vscanf считывает данные из стандартного входного потока stdin и
записывает эти данные в расположения, указанные списком аргументов arglist .
Каждый аргумент в списке должен быть указателем на переменную, которая имеет
тип, соответствующий спецификатору типа в параметре format . Если копирование
производится между перекрывающимися строками, поведение не определено.
) Важно!
Требования
Подпрограмма Обязательный заголовок
vscanf <stdio.h>
Пример
C
// crt_vscanf.c
#include <stdio.h>
#include <stdarg.h>
int result;
va_list arglist;
va_start(arglist, format);
va_end(arglist);
return result;
int result;
va_list arglist;
va_start(arglist, format);
va_end(arglist);
return result;
int i, result;
float fp;
char c, s[81];
result = call_vwscanf( L"%d %f %hc %lc %80S %80ls", &i, &fp, &c, &wc, s,
ws );
Output
Локаль
vscanf_s, vwscanf_s
vscanf_s , vwscanf_s
Статья • 03.04.2023
Синтаксис
C
int vscanf_s(
va_list arglist
);
int vwscanf_s(
va_list arglist
);
Параметры
format
arglist
Возвращаемое значение
Возвращает число полей, успешно преобразованных и назначенных;
Возвращаемое значение не включает поля, которые были прочитаны, но не
назначены. Возвращаемое значение 0 указывает, что поля не были назначены.
Значение EOF возвращается в случае ошибки или при обнаружении символа конца
файла или конца строки при первой попытке чтения символа. Если format является
указателем NULL , вызывается обработчик недопустимых параметров, как описано
в разделе Проверка параметров. Если выполнение может быть продолжено, то
функции vscanf_s и vwscanf_s возвращают ошибку EOF и устанавливают для errno
значение EINVAL .
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
Комментарии
Функция vscanf_s считывает данные из стандартного входного потока stdin и
записывает эти данные в расположения, указанные списком аргументов arglist .
Каждый аргумент в списке должен быть указателем на переменную, которая имеет
тип, соответствующий спецификатору типа в параметре format . Если копирование
производится между перекрывающимися строками, поведение не определено.
7 Примечание
Требования
Подпрограмма Обязательный заголовок
vscanf_s <stdio.h>
Пример
C
// crt_vscanf_s.c
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
int result;
va_list arglist;
va_start(arglist, format);
va_end(arglist);
return result;
int result;
va_list arglist;
va_start(arglist, format);
va_end(arglist);
return result;
int i, result;
float fp;
char c, s[81];
Если эта программа получает входные данные, показанные в примере, она создает
следующий результат:
Input
Output
Локаль
vscanf, vwscanf
_vscprintf , _vscprintf_l , _vscwprintf ,
_vscwprintf_l
Статья • 03.04.2023
Синтаксис
C
int _vscprintf(
va_list argptr
);
int _vscprintf_l(
_locale_t locale,
va_list argptr
);
int _vscwprintf(
va_list argptr
);
int _vscwprintf_l(
_locale_t locale,
va_list argptr
);
Параметры
format
argptr
locale
Комментарии
Каждый argument (при наличии) преобразуется согласно соответствующей
спецификации формата в параметре format . Формат состоит из обычных символов
и имеет те же форму и функциональные возможности, что и аргумент format для
printf.
) Важно!
Требования
Подпрограмма Обязательный заголовок
Пример
См. пример для vsprintf.
Функции vprintf
_vscprintf_p , _vscprintf_p_l ,
_vscwprintf_p , _vscwprintf_p_l
Статья • 03.04.2023
Синтаксис
C
int _vscprintf_p(
va_list argptr
);
int _vscprintf_p_l(
_locale_t locale,
va_list argptr
);
int _vscwprintf_p (
va_list argptr
);
int _vscwprintf_p_l(
_locale_t locale,
va_list argptr
);
Параметры
format
argptr
locale
Возвращаемое значение
Функция _vscprintf_p возвращает число символов, которые были бы созданы,
если строка, указанная в списке аргументов, была бы напечатана либо отправлена
в файл или буфер с помощью указанных кодов форматирования. Возвращаемое
значение не включает завершающий символ NULL. Функция _vscwprintf_p
выполняет эту же операцию для расширенных символов.
Комментарии
Эти функции отличаются от _vscprintf и _vscwprintf только тем, что они
поддерживают возможность указать порядок, в котором используются аргументы.
Дополнительные сведения см. в разделе printf_p Позиционные параметры.
) Важно!
Требования
Подпрограмма Обязательный заголовок
Пример
См. пример для vsprintf.
Синтаксис
C
int vsnprintf(
char *buffer,
size_t count,
va_list argptr
);
int _vsnprintf(
char *buffer,
size_t count,
va_list argptr
);
int _vsnprintf_l(
char *buffer,
size_t count,
_locale_t locale,
va_list argptr
);
int _vsnwprintf(
wchar_t *buffer,
size_t count,
va_list argptr
);
int _vsnwprintf_l(
wchar_t *buffer,
size_t count,
_locale_t locale,
va_list argptr
);
int vsnprintf(
char (&buffer)[size],
size_t count,
va_list argptr
); // C++ only
int _vsnprintf(
char (&buffer)[size],
size_t count,
va_list argptr
); // C++ only
int _vsnprintf_l(
char (&buffer)[size],
size_t count,
_locale_t locale,
va_list argptr
); // C++ only
int _vsnwprintf(
wchar_t (&buffer)[size],
size_t count,
va_list argptr
); // C++ only
int _vsnwprintf_l(
wchar_t (&buffer)[size],
size_t count,
_locale_t locale,
va_list argptr
); // C++ only
Параметры
buffer
count
format
Спецификация формата.
argptr
Возвращаемое значение
Функция vsnprintf возвращает количество записанных символов, не считая
завершающего символа NULL. Если размер буфера, указанный параметром count ,
недостаточно велик, чтобы содержать выходные данные, указанные format в и
argptr , возвращаемым значением vsnprintf является число записанных символов,
не считая символ null, если count они были достаточно большими. Если
возвращаемое значение больше count –1, выходные данные были усечены.
Возвращаемое значение –1 указывает, что произошла ошибка кодирования.
Если count значение равно нулю и buffer равно NULL , возвращается число
символов, которые будут записывать функции. Значение не учитывает
завершающийся NULL . Этот результат можно использовать для выделения
достаточного пространства буфера для строки и завершающего значения
NULL, а затем снова вызвать функцию для заполнения буфера.
Если count значение равно нулю, но buffer не NULL равно , ничего не
записывается и функция возвращает -1 .
Если format имеет значение NULL , или если buffer значение равно NULL и
count не равно нулю, эти функции вызывают обработчик недопустимых
Комментарии
Каждая из этих функций принимает указатель на список аргументов, затем
форматирует count данные и записывает до символов в память, на которую
buffer указывает . Функция vsnprintf всегда записывает знак завершения NULL,
) Важно!
7 Примечание
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые
и безопасные аналоги этих функций. Дополнительные сведения см. в разделе
Безопасные перегрузки шаблонов.
Требования
Подпрограмма Обязательный Обязательный заголовок (C++)
заголовок (C)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <wtypes.h>
int nSize = 0;
wchar_t buff[BUFFCOUNT];
memset(buff, 0, sizeof(buff));
va_list args;
va_start(args, formatstring);
// Note: _vsnwprintf is deprecated; consider vsnwprintf_s instead
va_end(args);
int main() {
Output
// crt_vsnprintf.c
#include <stdio.h>
int nSize = 0;
char buff[BUFFCOUNT];
memset(buff, 0, sizeof(buff));
va_list args;
va_start(args, formatstring);
nSize = vsnprintf(buff, sizeof(buff), formatstring, args);
va_end(args);
int main() {
Output
Функции vprintf
Синтаксис
C
int vsnprintf_s(
char *buffer,
size_t sizeOfBuffer,
size_t count,
va_list argptr
);
int _vsnprintf_s(
char *buffer,
size_t sizeOfBuffer,
size_t count,
va_list argptr
);
int _vsnprintf_s_l(
char *buffer,
size_t sizeOfBuffer,
size_t count,
_locale_t locale,
va_list argptr
);
int _vsnwprintf_s(
wchar_t *buffer,
size_t sizeOfBuffer,
size_t count,
va_list argptr
);
int _vsnwprintf_s_l(
wchar_t *buffer,
size_t sizeOfBuffer,
size_t count,
_locale_t locale,
va_list argptr
);
int _vsnprintf_s(
char (&buffer)[size],
size_t count,
va_list argptr
); // C++ only
int _vsnwprintf_s(
wchar_t (&buffer)[size],
size_t count,
va_list argptr
); // C++ only
Параметры
buffer
sizeOfBuffer
count
format
Спецификация формата.
argptr
locale
Возвращаемое значение
vsnprintf_s _vsnwprintf_s и _vsnprintf_s возвращают число записанных символов,
Если count значение равно _TRUNCATE , а число символов данных равно или
превышает sizeOfBuffer , записывается столько строки, сколько вместится в
buffer (с завершающим значением NULL). Происходит усечение оставшихся
данных, и возвращается значение -1 без вызова обработчика недопустимых
параметров.
Если параметр buffer или format является пустым ( NULL ) указателем или если
значение параметра count меньше или равно нулю, вызывается обработчик
недопустимых параметров. Если продолжение выполнения разрешено, эти
функции устанавливают для errno значение EINVAL и возвращают -1.
Условия ошибок
Комментарии
Функция vsnprintf_s идентична функции _vsnprintf_s . vsnprintf_s включается для
соответствия стандарту ANSI. Функция _vnsprintf поддерживается для
совместимости с предыдущими версиями.
Если count имеет значение _TRUNCATE, эти функции записывают столько строк,
сколько вместится в buffer , оставляя место для завершающего значения NULL.
Если вся строка (с учетом завершающего нуль-символа) помещается в buffer , эти
функции возвращают количество записанных символов (не включая завершающий
нуль-символ); в противном случае эти функции возвращают значение –1, что
указывает на то, что произошло усечение.
) Важно!
7 Примечание
Совет
Требования
Подпрограмма Обязательный заголовок Необязательные
заголовки
Пример
C++
// crt_vsnprintf_s.cpp
#include <stdio.h>
#include <wtypes.h>
int nSize = 0;
char buff[10];
memset(buff, 0, sizeof(buff));
va_list args;
va_start(args, formatstring);
va_end(args);
int main() {
Output
Функции vprintf
Синтаксис
C
int vsprintf(
char *buffer,
va_list argptr
);
int _vsprintf_l(
char *buffer,
_locale_t locale,
va_list argptr
);
int vswprintf(
wchar_t *buffer,
size_t count,
va_list argptr
);
int _vswprintf_l(
wchar_t *buffer,
size_t count,
_locale_t locale,
va_list argptr
);
int __vswprintf_l(
wchar_t *buffer,
_locale_t locale,
va_list argptr
);
int vsprintf(
char (&buffer)[size],
va_list argptr
); // C++ only
int _vsprintf_l(
char (&buffer)[size],
_locale_t locale,
va_list argptr
); // C++ only
int vswprintf(
wchar_t (&buffer)[size],
va_list argptr
); // C++ only
int _vswprintf_l(
wchar_t (&buffer)[size],
_locale_t locale,
va_list argptr
); // C++ only
Параметры
buffer
count
format
Спецификация формата.
argptr
locale
Возвращаемое значение
vsprintf и vswprintf возвращает число записанных символов, не включая
завершающий NULL символ, или отрицательное значение при возникновении
ошибки вывода. Если buffer или format является указателем NULL , эти функции
вызывают обработчик недопустимых параметров, как описано в разделе
"Проверка параметров". Если разрешается продолжать выполнение, эти функции
возвращают -1 и задают errno значение EINVAL .
Комментарии
Каждая из этих функций принимает указатель на список аргументов, а затем
форматирует и записывает указанные данные в память, на которую указывает
buffer .
) Важно!
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые
и безопасные аналоги этих функций. Дополнительные сведения см. в разделе
"Безопасные перегрузки шаблонов".
Требования
Подпрограмма Обязательный заголовок Необязательные
заголовки
Пример
C
// crt_vsprintf.c
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
va_list args;
int len;
char *buffer;
+ 1; // terminating '\0'
if ( 0 != buffer )
puts( buffer );
free( buffer );
va_end( args );
Output
This is a string
Функции vprintf
Синтаксис
C
int _vsprintf_p(
char *buffer,
size_t sizeInBytes,
va_list argptr
);
int _vsprintf_p_l(
char *buffer,
size_t sizeInBytes,
_locale_t locale,
va_list argptr
);
int _vswprintf_p(
wchar_t *buffer,
size_t count,
va_list argptr
);
int _vswprintf_p_l(
wchar_t *buffer,
size_t count,
_locale_t locale,
va_list argptr
);
Параметры
buffer
count
format
Спецификация формата.
argptr
locale
Возвращаемое значение
Функции _vsprintf_p и _vswprintf_p возвращают число записанных символов, не
включая конечный нуль-символ, или отрицательное значение, если произошла
ошибка вывода.
Комментарии
Каждая из этих функций принимает указатель на список аргументов, а затем
форматирует и записывает указанные данные в память, на которую указывает
buffer .
Если или format параметры buffer являются NULL указателями, если число равно
нулю или строка форматирования содержит недопустимые символы
форматирования, вызывается обработчик недопустимых параметров, как описано
в разделе "Проверка параметров". Если продолжение выполнения разрешено,
функции возвращают значение -1 и задают для errno значение EINVAL .
) Важно!
Требования
Подпрограмма Обязательный заголовок Необязательные
заголовки
// crt__vsprintf_p.c
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
va_list args;
int len;
if (buffer)
puts( buffer );
free( buffer );
va_end( args );
// First example
// Second example
Output
This is a string
Функции vprintf
Синтаксис
C
int vsprintf_s(
char *buffer,
size_t numberOfElements,
va_list argptr
);
int _vsprintf_s_l(
char *buffer,
size_t numberOfElements,
_locale_t locale,
va_list argptr
);
int vswprintf_s(
wchar_t *buffer,
size_t numberOfElements,
va_list argptr
);
int _vswprintf_s_l(
wchar_t *buffer,
size_t numberOfElements,
_locale_t locale,
va_list argptr
);
int vsprintf_s(
char (&buffer)[size],
va_list argptr
); // C++ only
int vswprintf_s(
wchar_t (&buffer)[size],
va_list argptr
); // C++ only
Параметры
buffer
numberOfElements
format
Спецификация формата.
argptr
locale
Возвращаемое значение
Функции vsprintf_s и vswprintf_s возвращают число записанных символов, не
включая конечный нуль-символ, или отрицательное значение, если произошла
ошибка вывода. Если buffer или format является пустым указателем, если
numberOfElements оно равно нулю или если строка форматирования содержит
Комментарии
Каждая из этих функций принимает указатель на список аргументов, а затем
форматирует и записывает указанные данные в память, на которую указывает
buffer .
vswprintf_s соответствует стандарту ISO C для vswprintf , который требует указания
Эти функции отличаются от менее безопасных версий только тем, что они
поддерживают позиционные параметры. Дополнительные сведения см. в разделе
printf_p "Позиционные параметры".
) Важно!
Требования
Подпрограмма Обязательный заголовок Необязательные
заголовки
Пример
C
// crt_vsprintf_s.c
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
va_list args;
int len;
char * buffer;
+ 1; // terminating '\0'
if ( NULL != buffer )
puts( buffer );
free( buffer );
va_end( args );
Output
This is a string
Функции vprintf
Синтаксис
C
int vsscanf(
va_list arglist
);
int vswscanf(
va_list arglist
);
Параметры
buffer
Сохраненные данные
format
arglist
Возвращаемое значение
Каждая из этих функций возвращает количество полей, которые успешно
преобразованы и назначены. Возвращаемое значение не включает поля, которые
были прочитаны, но не назначены. Возвращаемое значение 0 указывает, что поля
не были назначены. Если до первого преобразования возникает ошибка или
достигается конец строки, возвращается значение EOF .
Если buffer или format является указателем NULL , вызывается обработчик
недопустимых параметров, как описано в разделе Проверка параметров. Если
разрешается продолжать выполнение, эти функции возвращают -1 и задают errno
значение EINVAL .
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
Комментарии
Функция vsscanf считывает данные из buffer в расположения, указанные
аргументами в списке аргументов arglist . Каждый аргумент в списке должен быть
указателем на переменную, которая имеет тип, соответствующий спецификатору
типа в параметре format . Аргумент format определяет интерпретацию полей
входных данных и имеет такую же форму и функцию, как аргумент format для
функции scanf . Если копирование производится между перекрывающимися
строками, поведение не определено.
) Важно!
vsscanf <stdio.h>
Пример
C
// crt_vsscanf.c
#include <stdio.h>
#include <stdarg.h>
int result;
va_list arglist;
va_start(arglist, format);
va_end(arglist);
return result;
char s[81];
char c;
int i;
float fp;
Output
String = 15
Character = 1
Integer: = 15
Real: = 15.000000
vsscanf_s, vswscanf_s
vsscanf_s , vswscanf_s
Статья • 03.04.2023
Синтаксис
C
int vsscanf_s(
va_list argptr
);
int vswscanf_s(
va_list arglist
);
Параметры
buffer
Сохраненные данные
format
arglist
Возвращаемое значение
Каждая из этих функций возвращает количество полей, которые успешно
преобразованы и назначены. Возвращаемое значение не включает поля, которые
были прочитаны, но не назначены. Возвращаемое значение 0 указывает, что поля
не были назначены. Если до первого преобразования возникает ошибка или
достигается конец строки, возвращается значение EOF .
Если buffer или format является указателем NULL , вызывается обработчик
недопустимых параметров, как описано в разделе Проверка параметров. Если
разрешается продолжать выполнение, эти функции возвращают -1 и задают errno
значение EINVAL .
Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlistи
_sys_nerr.
Комментарии
Функция vsscanf_s считывает данные из buffer в расположения, указанные
аргументами в списке аргументов arglist . Аргументы в списке аргументов задают
указатели на переменные, имеющие тип, соответствующий спецификатору типа в
format . В отличие от менее безопасной версии vsscanf параметр размера буфера
является обязательным при использовании символов полей типа c, C, s, S или
наборов элементов управления строк, заключенных в []. Размер буфера в символах
должен быть указан в качестве другого параметра сразу после каждого параметра
буфера, которому он требуется.
7 Примечание
Требования
Подпрограмма Обязательный заголовок
vsscanf_s <stdio.h>
Пример
C
// crt_vsscanf_s.c
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
int result;
va_list arglist;
va_start(arglist, format);
va_end(arglist);
return result;
char s[81];
char c;
int i;
float fp;
Output
String = 15
Character = 1
Integer: = 15
Real: = 15.000000
vsscanf, vswscanf
wcrtomb
Статья • 03.04.2023
Синтаксис
C
size_t wcrtomb(
char *mbchar,
wchar_t wchar,
mbstate_t *mbstate
);
size_t wcrtomb(
char (&mbchar)[size],
wchar_t wchar,
mbstate_t *mbstate
); // C++ only
Параметры
mbchar
wchar
mbstate
Возвращаемое значение
Возвращает число байтов, необходимых для представления преобразованного
многобайтового символа, или значение -1, если произошла ошибка.
Комментарии
Функция wcrtomb преобразует строку расширенных символов, начиная с
указанного состояния преобразования, содержащегося в mbstate , из значения,
содержащегося в wchar , в адрес, представленный mbchar . Возвращаемое значение
— число байтов, необходимых для представления в соответствующего
многобайтового символа, но не более MB_CUR_MAX байт.
В C++ эта функция имеет перегрузку шаблона, которая вызывает более новые и
безопасные аналоги этой функции. Дополнительные сведения см. в разделе
Безопасные перегрузки шаблонов.
Исключения
Функция wcrtomb является потокобезопасной, если ни одна из функций в текущем
потоке не вызывает setlocale , пока выполняется данная функция и пока mbstate
имеет значение null.
Пример
C
// crt_wcrtomb.c
#include <string.h>
#include <stdio.h>
#include <wchar.h>
size_t sizeOfCovertion = 0;
mbstate_t mbstate;
char mbStr = 0;
memset(&mbstate, 0, sizeof(mbstate));
if (sizeOfCovertion > 0)
wprintf(L"%s\"", wcStr);
printf("multibyte character.\n");
else
"was found.\n");
Output
The corresponding wide character "Q" was converted to the "Q" multibyte
character.
Требования
Подпрограмма Обязательный заголовок
wcrtomb <wchar.h>
См. также:
Преобразование данных
Локаль
mbsinit
wcrtomb_s
Статья • 03.04.2023
Синтаксис
C
errno_t wcrtomb_s(
size_t *pReturnValue,
char *mbchar,
size_t sizeOfmbchar,
wchar_t *wchar,
mbstate_t *mbstate
);
errno_t wcrtomb_s(
size_t *pReturnValue,
char (&mbchar)[size],
wchar_t *wchar,
mbstate_t *mbstate
); // C++ only
Параметры
pReturnValue
mbchar
sizeOfmbchar
wchar
mbstate
Комментарии
Функция wcrtomb_s преобразует строку расширенных символов, начиная с
указанного состояния преобразования, содержащегося в mbstate , из значения,
содержащегося в wchar , в адрес, представленный mbchar . Значением pReturnValue
будет число преобразованных байтов, но не более MB_CUR_MAX байтов, или -1, если
произошла ошибка.
Исключения
Функция wcrtomb_s является потокобезопасной, если ни одна из функций в
текущем потоке не вызывает setlocale , пока выполняется данная функция, и
mbstate имеет значение null.
Пример
C
// crt_wcrtomb_s.c
//
#include <string.h>
#include <stdio.h>
#include <wchar.h>
errno_t returnValue;
size_t pReturnValue;
mbstate_t mbstate;
size_t sizeOfmbStr = 1;
char mbchar = 0;
memset(&mbstate, 0, sizeof(mbstate));
*wchar, &mbstate);
if (returnValue == 0) {
wprintf(L"%s\"", wchar);
printf("multibyte character.\n");
else
"was found.\n");
Output
The corresponding wide character "Q" was converted to a the "Q" multibyte
character.
Требования
Подпрограмма Обязательный заголовок
wcrtomb_s <wchar.h>
См. также:
Преобразование данных
Локаль
mbsinit
wcsrtombs
Статья • 03.04.2023
Синтаксис
C
size_t wcsrtombs(
char *mbstr,
sizeof count,
mbstate_t *mbstate
);
size_t wcsrtombs(
char (&mbstr)[size],
sizeof count,
mbstate_t *mbstate
); // C++ only
Параметры
mbstr
wcstr
count
mbstate
Возвращаемое значение
Возвращает число успешно преобразованных байтов, не включая завершающий
байт NULL (если имеется); в противном случае — значение -1, если произошла
ошибка.
Комментарии
Функция wcsrtombs преобразует строку расширенных символов, начиная с
указанного состояния преобразования, содержащегося в mbstate , из значений,
косвенно указанных в wcstr , в адрес mbstr . Преобразование будет продолжаться
для каждого символа до тех пор, пока не встретится расширенный завершающий
символ null, или не обнаружится несоответствующий символ, или когда следующий
символ может превысить ограничение, указанное в count . Если функция wcsrtombs
встречает расширенный нуль-символ (L"\0") перед или после count символов, она
преобразовывает его в 8-битный 0 и останавливается.
В C++ эта функция имеет шаблонную перегрузку, которая вызывает более новые и
безопасные аналоги этой функции. Дополнительные сведения см. в разделе
Безопасные перегрузки шаблонов.
По умолчанию глобальное состояние этой функции ограничивается приложением.
Чтобы изменить это поведение, см. статью Глобальное состояние в CRT.
Исключения
Функция wcsrtombs является многопоточной при условии, что во время
выполнения этой функции не вызывается ни функция в текущем потоке
setlocale mbstate , ни функция не имеет значения NULL.
Пример
C++
// crt_wcsrtombs.cpp
// character string.
#include <stdio.h>
#include <memory.h>
#include <wchar.h>
#include <errno.h>
int main()
char mbString[MB_BUFFER_SIZE];
size_t countConverted;
mbstate_t mbstate;
::memset((void*)&mbstate, 0, sizeof(mbstate));
if (errno == EILSEQ)
else
Output
Требования
Подпрограмма Обязательный заголовок
wcsrtombs <wchar.h>
См. также:
Преобразование данных
Локаль
wcrtomb
wcrtomb_s
wctomb, _wctomb_l
wcstombs, _wcstombs_l
mbsinit
wcsrtombs_s
Статья • 03.04.2023
Синтаксис
C
errno_t wcsrtombs_s(
size_t *pReturnValue,
char *mbstr,
size_t sizeInBytes,
sizeof count,
mbstate_t *mbstate
);
errno_t wcsrtombs_s(
size_t *pReturnValue,
char (&mbstr)[size],
sizeof count,
mbstate_t *mbstate
); // C++ only
Параметры
pReturnValue
mbstr
sizeInBytes
wcstr
count
Возвращаемое значение
Нуль в случае успеха или код ошибки в случае неудачи.
Комментарии
Функция wcsrtombs_s преобразует строку расширенных символов, на которую
указывает wcstr , в многобайтовые символы, сохраненные в буфере, на который
указывает mbstr . При этом используется состояние преобразования, содержащееся
в mbstate . Преобразование будет продолжаться для каждого символа до тех пор,
пока не будет выполнено одно из указанных ниже условий.
) Важно!
Исключения
Функция wcsrtombs_s является потокобезопасной, если ни одна из функций в
текущем потоке не вызывает setlocale , пока выполняется данная функция, и
mbstate имеет значение null.
Пример
C++
// crt_wcsrtombs_s.cpp
//
// character string.
//
#include <stdio.h>
#include <memory.h>
#include <wchar.h>
#include <errno.h>
int main()
char mbString[MB_BUFFER_SIZE];
size_t countConverted;
errno_t err;
mbstate_t mbstate;
::memset((void*)&mbstate, 0, sizeof(mbstate));
if (err == EILSEQ)
else
Output
Требования
Подпрограмма Обязательный заголовок
wcsrtombs_s <wchar.h>
См. также:
Преобразование данных
Локаль
wcrtomb
wcrtomb_s
wctomb, _wctomb_l
wcstombs, _wcstombs_l
mbsinit
wcstombs , _wcstombs_l
Статья • 29.03.2023
Синтаксис
C
size_t wcstombs(
char *mbstr,
size_t count
);
size_t _wcstombs_l(
char *mbstr,
size_t count,
_locale_t locale
);
size_t wcstombs(
char (&mbstr)[size],
size_t count
); // C++ only
size_t _wcstombs_l(
char (&mbstr)[size],
size_t count,
_locale_t locale
); // C++ only
Параметры
mbstr
wcstr
locale
Возвращаемое значение
Если функция wcstombs успешно преобразовывает строку многобайтовых
символов, она возвращает число байтов, записанных в выходную строку
многобайтовых символов, исключая конечный символ NULL (при его наличии).
Если аргумент mbstr равен NULL , функция wcstombs возвращает необходимый
размер строки назначения в байтах. Если wcstombs обнаруживает расширенный
символ, который он не может преобразовать в многобайтовый символ, он
возвращает приведение -1 к типу size_t и задает значение EILSEQ errno .
Комментарии
Функция wcstombs преобразовывает строку расширенных символов, на которую
указывает параметр wcstr , в соответствующие многобайтовые символы и
сохраняет результаты в массиве mbstr . Параметр count указывает максимальное
число байтов, которые могут храниться в выходной строке многобайтовых
символов (т. е., размер mbstr ). Как правило, неизвестно, сколько байт потребуется
при преобразовании строки расширенных символов. Для некоторых расширенных
символов в выходной строке требуется только один байт; для других требуется 2
байта. Если в многобайтовой выходной строке имеется 2 байта для каждого
широкого символа во входной строке (включая расширенный символ NULL ),
результат гарантированно соответствует.
преобразования, так как предположить, что вам потребуется два байта для
каждого широкого символа, может быть недостаточно. Дополнительные сведения
о поддержке UTF-8 см. в разделе Поддержка UTF-8.
Если wcstombs обнаруживает расширенный символ NULL (L'\0') до или при count
возникновении, он преобразует его в 8-разрядный 0 и останавливается. Таким
образом, многобайтовая строка символов в mbstr параметре завершается null,
только если wcstombs во время преобразования встречает символ с расширенным
символом NULL . Если последовательности, на которые указывают параметры wcstr
и mbstr , перекрываются, то поведение wcstombs не определено.
wcstombs проверяет свои параметры. Если wcstr имеет значение NULL или больше
В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые
и безопасные аналоги этих функций. Дополнительные сведения см. в разделе
Безопасные перегрузки шаблонов.
Требования
Подпрограмма Обязательный заголовок
wcstombs <stdlib.h>
_wcstombs_l <stdlib.h>
Пример
Эта программа иллюстрирует поведение функции wcstombs .
// crt_wcstombs.c
// multibyte characters.
#include <stdlib.h>
#include <stdio.h>
size_t count;
count );
pMBBuffer );
free(pMBBuffer);
Output
Characters converted: 13
См. также:
Преобразование данных
Локаль
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
wctomb, _wctomb_l
WideCharToMultiByte
wcstombs_s , _wcstombs_s_l
Статья • 03.04.2023
Синтаксис
C
errno_t wcstombs_s(
size_t *pReturnValue,
char *mbstr,
size_t sizeInBytes,
size_t count
);
errno_t _wcstombs_s_l(
size_t *pReturnValue,
char *mbstr,
size_t sizeInBytes,
size_t count,
_locale_t locale
);
errno_t wcstombs_s(
size_t *pReturnValue,
char (&mbstr)[size],
size_t count
); // C++ only
errno_t _wcstombs_s_l(
size_t *pReturnValue,
char (&mbstr)[size],
size_t count,
_locale_t locale
); // C++ only
Параметры
pReturnValue
mbstr
sizeInBytes
wcstr
count
locale
Возвращаемое значение
Нуль в случае успеха или код ошибки в случае неудачи.
Комментарии
Функция wcstombs_s преобразует строку расширенных символов, на которую
указывает wcstr , в многобайтовые символы, сохраненные в буфере, на который
указывает mbstr . Преобразование будет продолжаться для каждого символа до тех
пор, пока не будет выполнено одно из указанных ниже условий.
) Важно!
Требования
Подпрограмма Обязательный заголовок
wcstombs_s <stdlib.h>
Пример
Эта программа иллюстрирует поведение функции wcstombs_s .
// crt_wcstombs_s.c
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
size_t i;
// Conversion
// Output
if (pMBBuffer)
free(pMBBuffer);
return 0;
Output
Characters converted: 14
См. также:
Преобразование данных
Локаль
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
wctomb_s, _wctomb_s_l
WideCharToMultiByte
wctob
Статья • 03.04.2023
Синтаксис
C
int wctob(
wint_t wchar
);
Параметры
wchar
Возвращаемое значение
Если wctob расширенный символ успешно преобразуется, он возвращает его
многобайтовое представление только в том случае, если многобайтовый символ
является однобайтовой длиной. Если wctob встречается расширенный символ, он
не может преобразоваться в многобайтовый символ или если многобайтовый
символ не является одним байтом длиной, он возвращает значение -1.
Комментарии
Функция wctob преобразует расширенный символ, содержащийся в wchar
соответствующем многобайтовом символе, передаваемом возвращаемым
значением int , если многобайтовый символ является одним длинным байтом.
Требования
Подпрограмма Обязательный заголовок
wctob <wchar.h>
Пример
Эта программа иллюстрирует поведение функции wctob .
// crt_wctob.c
#include <stdio.h>
#include <wchar.h>
int bChar = 0;
wint_t wChar = 0;
wChar = (wint_t)'A';
if (bChar == WEOF)
else
Output
См. также:
Преобразование данных
Локаль
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
wctomb, _wctomb_l
WideCharToMultiByte
wctomb , _wctomb_l
Статья • 03.04.2023
Синтаксис
C
int wctomb(
char *mbchar,
wchar_t wchar
);
int _wctomb_l(
char *mbchar,
wchar_t wchar,
_locale_t locale
);
Параметры
mbchar
wchar
Расширенный символ.
Возвращаемое значение
Если функция wctomb преобразует расширенный символ в многобайтовый символ,
она возвращает число байтов (которое никогда не превышает MB_CUR_MAX ) в
расширенном символе. Если wchar является расширенным нуль-символом (L '\0'),
wctomb возвращает 1. Если целевой указатель mbchar равен NULL , wctomb
Комментарии
Функция wctomb преобразует свой аргумент wchar в соответствующий
многобайтовый символ и сохраняет результат в mbchar . Эту функцию можно
вызывать из любой точки в любой программе. Функция wctomb использует текущий
языковой стандарт для любых аспектов поведения, зависящих от языкового
стандарта; функция _wctomb_l идентична wctomb за исключением того, что она
использует переданный языковой стандарт. Для получения дополнительной
информации см. Locale.
Требования
Подпрограмма Обязательный заголовок
wctomb <stdlib.h>
Пример
Эта программа иллюстрирует поведение функции wctomb.
C++
// crt_wctomb.cpp
#include <stdio.h>
#include <stdlib.h>
int i;
wchar_t wc = L'a';
Output
Characters converted: 1
Multibyte character: a
См. также:
Преобразование данных
Локаль
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
wcstombs, _wcstombs_l
WideCharToMultiByte
wctomb_s , _wctomb_s_l
Статья • 18.03.2023
Синтаксис
C
errno_t wctomb_s(
int *pRetValue,
char *mbchar,
size_t sizeInBytes,
wchar_t wchar
);
errno_t _wctomb_s_l(
int *pRetValue,
char *mbchar,
size_t sizeInBytes,
wchar_t wchar,
_locale_t locale
);
Параметры
pRetValue
mbchar
sizeInBytes
wchar
locale
Комментарии
Функция wctomb_s преобразует свой аргумент wchar в соответствующий
многобайтовый символ и сохраняет результат в mbchar . Эту функцию можно
вызывать из любой точки в любой программе.
Требования
Подпрограмма Обязательный заголовок
wctomb_s <stdlib.h>
_wctomb_s_l <stdlib.h>
Пример
Эта программа иллюстрирует поведение функции wctomb_s .
C++
// crt_wctomb_s.cpp
#include <stdio.h>
#include <stdlib.h>
int i;
wchar_t wc = L'a';
Output
Characters converted: 1
Multibyte character: a
См. также:
Преобразование данных
Локаль
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
wcstombs, _wcstombs_l
WideCharToMultiByte
wctrans
Статья • 03.04.2023
Синтаксис
C
wctrans_t wctrans(
Параметры
property
Возвращаемое значение
LC_CTYPE Если категория текущего языкового стандарта не определяет
сопоставление, имя которого соответствует строке property свойства , функция
возвращает ноль. В противном случае он возвращает ненулевое значение,
подходящее для использования в качестве второго аргумента для последующего
вызова towctransметода .
Комментарии
Эта функция определяет сопоставление одного набора кодов символов с другим.
Функция Эквивалентно
wctrans <wctype.h>
Пример
C
// crt_wctrans.cpp
// codes to another.
#include <wchar.h>
#include <wctype.h>
#include <stdio.h>
#include <iostream>
int main()
wint_t c = 'a';
printf_s("%d\n",c);
wctrans_t i = wctrans("toupper");
printf_s("%d\n",i);
wctrans_t ii = wctrans("towlower");
printf_s("%d\n",ii);
printf_s("%d\n",wc);
Output
97
65
setlocale, _wsetlocale
wctype
Статья • 03.04.2023
Синтаксис
C
wctype_t wctype(
);
Параметры
property
Строка свойства.
Возвращаемое значение
LC_CTYPE Если категория текущего языкового стандарта не определяет правило
классификации, имя которого соответствует строке property свойства , функция
возвращает ноль. В противном случае он возвращает ненулевое значение,
подходящее для использования в качестве второго аргумента для последующего
вызова towctransметода .
Комментарии
Функция определяет правило классификации кодов расширенных символов.
Следующие пары вызовов имеют одинаковое поведение во всех языковых
стандартах (но реализация может определить больше правил классификации даже
в языковом стандарте "C").
Функция Эквивалентно
Требования
Подпрограмма Обязательный заголовок
wctype <wctype.h>
См. также:
Преобразование данных
setlocale, _wsetlocale
write
Статья • 03.04.2023
Синтаксис
C
int _write(
int fd,
);
Параметры
fd
buffer
Записываемые данные.
count
Число байтов.
Возвращаемое значение
В случае успешного _write выполнения возвращает число записанных байтов. Если
фактическое пространство, оставшееся на диске, меньше размера буфера, функция
пытается записать данные на диск, _write происходит сбой и не сбрасывается
содержимое буфера на диск. Возвращаемое значение -1 указывает на ошибку. Если
передаются недопустимые параметры, эта функция вызывает обработчик
недопустимых параметров, как описано в разделе Проверка параметров. Если
выполнение разрешено, функция возвращает значение -1 и errno имеет одно из
трех значений: EBADF , что означает, что дескриптор файла недопустим или файл не
открыт для записи; ENOSPC , что означает, что на устройстве недостаточно места для
операции; или EINVAL , что означает, что buffer был пустой указатель или что в
режиме Юникода был передан нечетный размер count байтов.
Дополнительные сведения об этих и других кодах возврата см. в разделе errno,
_doserrno, _sys_errlistи _sys_nerr.
Комментарии
Функция _write записывает count байт из buffer в файл, связанный с fd .
Операция записи начинается с текущего положения указателя файла (при
наличии), связанного с данным файлом. Если файл открыт для добавления,
операция начинается с текущего конца файла. После операции записи указатель
файла увеличивается на число записанных байтов.
Требования
Подпрограмма Обязательный заголовок
_write <io.h>
Пример
C
// crt__write.c
//
// This program opens a file for output and uses _write to write
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <share.h>
int fileHandle = 0;
unsigned bytesWritten = 0;
return -1;
switch(errno)
case EBADF:
break;
case ENOSPC:
break;
case EINVAL:
break;
default:
perror("Unexpected error!");
else
_close( fileHandle );
Output
fwrite
_open, _wopen
_read
_setmode
wcsicoll
Статья • 03.04.2023
Альтернатива оператору ^ .
Синтаксис
C
#define xor ^
Remarks
Макрос возвращает оператор ^ .
Пример
C++
// iso646_xor.cpp
#include <iostream>
#include <iso646.h>
int main( )
int a = 3, b = 2, result;
result= a ^ b;
result= a xor b;
Output
Требования
Заголовка:< iso646.h>
xor_eq
Статья • 03.04.2023
Альтернатива оператору ^= .
Синтаксис
C
#define xor_eq ^=
Remarks
Макрос возвращает оператор ^= .
Пример
C++
// iso646_xor_eq.cpp
#include <iostream>
#include <iso646.h>
int main( )
int a = 3, b = 2, result;
result= a ^= b;
a = 3;
b = 2;
result= a xor_eq b;
Output
Требования
Заголовка:< iso646.h>
y0 , y1 , yn
Статья • 03.04.2023