STDLIB.H
ライブラリ変数
size_tの |
ある符号なし整数型、はsizeof結果キーワード。 |
wchar_t型 |
これは、整数型ワイド文字定数の大きさです。 |
div_t |
あるdiv要素の機能は、構造体を返します。 |
ldiv_t |
あるldiv関数は、構造体を返します。 |
マクロライブラリ
ヌル |
ヌルポインタ値は一定です。 |
EXIT_FAILURE |
exit関数が失敗したときに返される値。 |
EXIT_SUCCESS |
成功したときにexit関数返される値。 |
RAND_MAX |
rand関数は最大値を返します。 |
MB_CUR_MAX |
マルチバイト文字セットの文字の最大数を表し、あなたはMB_LEN_MAXを超えることはできません。 |
算術
int型のABS(int型x)は、 |
絶対値を求めます。 |
long int型ラボ(long int型のX) |
絶対値を求めます。 |
div_t divの(int型NUMER、int型DENOM) |
分母によって分子とは、商と余りを返します。 |
ldiv_tのldiv(long int型NUMER、long int型のdenom) |
分母によって分子とは、商と余りを返します。 |
乱数
int型のrand(無効) |
0からRAND_MAXの間の疑似乱数の範囲を返します。 |
無効にsrand(unsigned int型の種子) |
乱数生成器のパラメータ値は初期化されます。 |
注意:
- 乱数シードとして使用される現在のタイムジェネレータ:
srand((unsigned int)time(0))
。
文字列変換
INT税引後営業利益(のconstのchar * STR) |
strのパラメータ文字列をintに指摘しました |
long int型アトル(のconst char型*文字列) |
パラメータ文字列尖ったstrがlong intに変換しました |
long int型strtolは(のconst char型* strの、文字** endptrを、int型のベース) |
パラメータ文字列尖ったstrがlong intに変換しました |
符号なしlong int型strtoulを(のconst char型* strの、文字** endptrを、int型のベース) |
変換パラメータstrの文字列をunsigned long型を指摘しました |
注意:
atoi
、atol
;基数変換10を行いstrtol
、 strtoul
可能基数指定された変換し、そして変換された文字列の残りのバイトへのアクセスを許可します。
上記の機能は、違法なサフィックスは無視されますがある場合、関数は、その後、指定されたタイプの正当な文字に値を変換し、文字列に含まれる先頭の空白文字をスキップします。
strtol
、strtoul
2番目の引数がないNULL
第二引数が指すポインタを位置に格納され、このポインタは、文字列変換処理の残りは、文字列のいずれか推定することなく終了することができます。
基地範囲を変換することである2-36
文字は、A-Z
数値として解釈されます10-35
。
char* unused = NULL;
cout << strtol("123abc",&unused,10)<<endl; //123
cout << unused << endl; //abc
cout << strtol("123abc", &unused, 16) << endl; //1194684
cout << unused << endl; //空
動的なメモリ割り当て
void *型のcalloc(size_t型をnitems、size_tのサイズ) |
要素の数と割り当てられたメモリによって占められるメモリサイズの各要素、およびゼロに初期化。 |
ボイドのない(void *型のPTR) |
動的に割り当てられたメモリの解放。 |
void *型のmalloc(size_tのサイズ) |
アプリケーションの動的メモリ。 |
空のrealloc(空 PTR、size_tのサイズ) |
動的メモリを再申請。 |
実行を終了
空アボート(無効) |
プログラムの異常終了を行います。 |
int型のatexit(無効(* FUNC)(無効)) |
プログラムが正常に終了すると、指定された関数funcを呼び出します。 |
空の出口(INTステータス) |
プログラムが正常に終了します。 |
注意:
abort
機能は、プログラムの実行異常終了するために使用され、この関数は開始するSIGABRT
信号を、信号処理機能は、この信号に設定することができます。
atexit
函数可以把一些函数注册为退出函数,当函数正常终止时(调用exit
终止程序,或者 main
函数返回时),退出函数将会被调用,退出函数不接受任何参数。
exit
函数用于正常的终止程序,如果程序以main
函数返回值结束,那么其效果相当于用该参数值调用exit
函数。
- 如果在如何一个
atexit
函数中调用exit
,将会导致无限循环,甚至可能只有当堆栈内存耗尽程序才会终止。
环境
char getenv(const char name) |
查找特定的名字,如果找到就返回一个指向其对应值的指针,程序不能修改返回的字符串,如果名字没有找到,函数返回一个NULL指针。 |
注意:
- 环境就是一个由编辑器定义的名字-值对应的列表,它由操作系统进行维护。
cout << "PATH:" << getenv("PATH")<< endl;
执行系统命令
int system(const char *string) |
把字符串参数传递给宿主操作系统,这样它就可以作为一条命令,由操作系统处理器执行。 |
注意:
system
函数可以使用参数NULL
调用,用于询问命令处理器是否真实存在,如果存在一个可用的系统命令处理器,返回一个非0值,否则返回0 。
排序和查找
void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *)) |
二分查找。 |
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)) |
数组排序。 |
qsort
base
: 指向要排序的数组的第一个元素的指针。
nitems
:由 base 指向的数组中元素的个数。
size
:数组中每个元素的大小,以字节为单位。
compar
:用来比较两个元素的函数:
- 比较函数接受两个需要进行比较的值的指针。
- 比较函数返回一个整数,大于0,等于0,小于0分别表示第一个参数大于、等于、小于第二个参数。
int compareInt(const void* a, const void* b)
{
return (*((int*)a) - *((int*)b));
}
int main()
{
int array[5] = { 1,5,78,23,0};
qsort(array,5, sizeof(int), compareInt);
for (int i = 0; i < 5; i++)
printf("%d ", array[i]);
return(0);
}
bsearch
key
:指向要查找的元素的指针,类型转换为 void*
。
base
:指向进行查找的数组的第一个对象的指针,类型转换为void*
。
nitems
:所指向的数组中元素的个数。
size
:组中每个元素的大小,以字节为单位。
compar
:用来比较两个元素的函数。
- 如果查找成功,该函数返回一个指向数组中匹配元素的指针,否则返回空指针。.
int compareInt(const void* a, const void* b)
{
return (*((int*)a) - *((int*)b));
}
int main()
{
int array[5] = { 1,5,78,23,0};
int key = 5;
int *item = (int*)bsearch(&key, array,5,sizeof(int),compareInt);
if (item == NULL) {
printf("not found the item\n");
}
else {
printf("found the item %d\n",*item);
}
return(0);
}
stdio.h
库变量
size_t |
符号整数类型,它是 sizeof 关键字的结果。 |
FILE |
存储文件流信息的对象类型。 |
fpos_t |
存储文件中任何位置的对象类型。 |
库宏
NULL |
空指针常量的值。 |
IOFBF、_IOLBF 和 _IONBF |
这些宏扩展了带有特定值的整型常量表达式,并适用于 setvbuf 函数的第三个参数。 |
BUFSIZ |
是一个整数,该整数代表了 setbuf 函数使用的缓冲区大小。 |
EOF |
表示已经到达文件结束的负整数。 |
FOPEN_MAX |
是一个整数,该整数代表了系统可以同时打开的文件数量。 |
FILENAME_MAX |
是一个整数,该整数代表了字符数组可以存储的文件名的最大长度。如果实现没有任何限制,则该值应为推荐的最大值。 |
L_tmpnam |
是一个整数,该整数代表了字符数组可以存储的由 tmpnam 函数创建的临时文件名的最大长度。 |
SEEK_CUR、SEEK_END 和 SEEK_SET |
在 fseek 函数中使用,用于在一个文件中定位不同的位置。 |
TMP_MAX |
是 tmpnam 函数可生成的独特文件名的最大数量。 |
stderr、stdin 和 stdout |
这些宏是指向 FILE 类型的指针,分别对应于标准错误、标准输入和标准输出流。 |
打开、关闭流
int fclose(FILE *stream) |
关闭流 stream。刷新所有的缓冲区。 |
FILE fopen(const char filename, const char *mode) |
使用给定的模式 mode 打开 filename 所指向的文件。 |
FILE freopen(const char filename, const char mode, FILE stream) |
把一个新的文件名 filename 与给定的打开的流 stream 关联,同时关闭流中的旧文件。 |
字符I/O
int fputc(int char, FILE *stream) |
把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。 |
int putc(int char, FILE *stream) |
把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。 |
int putchar(int char) |
把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中。 |
int fgetc(FILE *stream) |
从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。 |
int getc(FILE *stream) |
从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。 |
int getchar(void) |
从标准输入 stdin 获取一个字符(一个无符号字符)。 |
int ungetc(int char, FILE *stream) |
把字符 char(一个无符号字符)推入到指定的流 stream 中,以便它是下一个被读取到的字符。 |
未格式化的行I/O
int puts(const char *str) |
把一个字符串写入到标准输出 stdout,直到空字符,但不包括空字符。换行符会被追加到输出中。 |
char gets(char str) |
从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。 |
int fputs(const char str, FILE stream) |
把字符串写入到指定的流 stream 中,但不包括空字符。 |
char fgets(char str, int n, FILE *stream) |
从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。 |
格式化的行I/O
int fprintf(FILE stream, const char format, ...) |
发送格式化输出到流 stream 中。 |
int printf(const char *format, ...) |
发送格式化输出到标准输出 stdout。 |
int sprintf(char str, const char format, ...) |
发送格式化输出到字符串。 |
int fscanf(FILE stream, const char format, ...) |
从流 stream 读取格式化输入。 |
int scanf(const char *format, ...) |
从标准输入 stdin 读取格式化输入。 |
int sscanf(const char str, const char format, ...) |
从字符串读取格式化输入。 |
二进制I/O
size_t fread(void ptr, size_t size, size_t nmemb, FILE stream) |
从给定流 stream 读取数据到 ptr 所指向的数组中。 |
size_t fwrite(const void ptr, size_t size, size_t nmemb, FILE stream) |
把 ptr 所指向的数组中的数据写入到给定流 stream 中。 |
刷新
int fflush(FILE *stream) |
刷新流 stream 的输出缓冲区。 |
定位
long int ftell(FILE *stream) |
返回给定流 stream 的当前文件位置。 |
int fseek(FILE *stream, long int offset, int whence) |
设置流 stream 的文件位置为给定的偏移 offset,参数 offset 意味着从给定的 whence 位置查找的字节数。 |
void rewind(FILE *stream) |
设置文件位置为给定流 stream 的文件的开头。 |
int fgetpos(FILE stream, fpos_t pos) |
获取流 stream 的当前文件位置,并把它写入到 pos。 |
int fsetpos(FILE stream, const fpos_t pos) |
设置给定流 stream 的文件位置为给定的位置。参数 pos 是由函数 fgetpos 给定的位置。 |
流错误
int feof(FILE *stream) |
测试给定流 stream 的文件结束标识符。 |
void clearerr(FILE *stream) |
清除给定流 stream 的文件结束和错误标识符。 |
int ferror(FILE *stream) |
测试给定流 stream 的错误标识符。 |
临时文件
char tmpnam(char str) |
生成并返回一个有效的临时文件名,该文件名之前是不存在的。 |
FILE *tmpfile(void) |
以二进制更新模式(wb+)创建临时文件。 |
文件操纵
int rename(const char old_filename, const char new_filename) |
把 old_filename 所指向的文件名改为 new_filename。 |
int remove(const char *filename) |
删除给定的文件名 filename,以便它不再被访问。 |
改变缓冲方式
void setbuf(FILE stream, char buffer) |
定义流 stream 应如何缓冲。 |
int setvbuf(FILE stream, char buffer, int mode, size_t size) |
另一个定义流 stream 应如何缓冲的函数。 |
错误描述
void perror(const char *str) |
把一个描述性错误消息输出到标准错误 stderr。首先输出字符串 str,后跟一个冒号,然后是一个空格。 |