C语言标准库常用函数
C语言标准库常用函数
输入输出:<stdio.h>
文件操作
#include <stdio.h>
FILE *fopen(const char *filename, const char *mode);
FILE *freopen(const char *filename, const char *mode, FILE *stream);
int fflush(FILE *stream);
int fclose(FILE *stream);
int remove(const char *filename);
int rename(const char *oldname, const char *newname);
FILE *tmpfile(void);
char *tmpnam(char s[L_tmpnam]);
int setvbuf(FILE *stream, char *buf, int mode, size_t size);
void setbuf(FILE *stream, char *buf);
格式化输出
int fprintf(FILE *stream, const char *format, ...);
int printf(const char *format, ...);
int sprintf(char *s, const char *format, ...);
int vprintf(const char *format, va_list arg);
int vfprintf(FILE *stream, const char *format, va_list arg);
int vsprintf(char *s, const char *format, va_list arg);
格式化输入
int fscanf(FILE *stream, const char *format, ...);
int scanf(const char *format, ...);
int sscanf(char *s, const char *format, ...);
字符输入输出
int fgetc(FILE *stream);
char *fgets(char *s, int n, FILE *stream);
int fputc(int c, FILE *stream);
int fputs(const char *s, FILE *stream);
int getc(FILE *stream);
int getchar(void);
char *gets(char *s);
int putc(int c, FILE *stream);
int putchar(int c);
int puts(const char *s);
int ungetc(int c, FILE *stream);
直接输入输出
size_t fread(void *ptr, size_t size, size_t nobj, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *stream);
文件定位
int fseek(FILE *stream, long offset, int origin);
long ftell(FILE *stream);
void rewind(FILE *stream);
int fgetpos(FILE *stream, fpos_t *ptr);
int fsetpos(FILE *stream, const fpos_t *ptr);
错误处理
void clearerr(FILE *stream);
int feof(FILE *stream);
void ferror(FILE *stream);
int perror(const char *s);
字符类别测试:<ctype.h>
- 参数类型:
- unsigned char类型
- EOF的int对象
- 返回值类型:int
字符串函数:<string.h>
- 参数类型:
- 变量s和t:char *
- cs和ct:const char *
- n:size_t
- c:int(将被转换为char类型)
以mem开头的函数按照字符数组的方式操作对象,主要目的是提供一个高效的函数接口。
参数顺序是:目标s = 源ct
参数类型:
- s和t:void *
- cs和ct:const void *
- n:size_t
- c:int(将被转换为unsigned char类型)
数学函数:<math.h>
参数类型;
- x和y:double
- n:int
返回值类型:double
实用函数:<stdlib.h>
声明了数值转换、内存分配以及其它类似工作的函数
double atof(const char *s);
int atoi(const char *s);
long atol(const char *s);
double strtod(const char *s, char **endp);
long strtol(const char *s, char **endp, int base);
unsigned long strtoul(const char *s, char **endp, int base);
int rand(void);
void srand(unsigned int seed);
void calloc(size_t nobj, size_t size);
void *malloc(size_t size);
void *realloc(void *p, size_t size);
void free(void *p);
void abort(void);
void exit(int status);
int atexit(void (*fcn)(void));
int system(const char *s);
char *getenv(const char *name);
void *bsearch(const void *key, const void *base,
size_t n, size_t size,
int (*cmp)(const void *keyval, const void *datum));
void qsort(void *base, size_t n, size_t size,
int (*cmp)(const void *, const void *));
int abs(int n);
long labs(long n);
div_t div(int num, int denom);
ldiv_t ldiv(long num, long denom);
诊断:<assert.h>
assert宏用于程序诊断
void assert(int expression);
当表达式值为0时,assert宏将在stderr中打印一条消息,打印完后宏将调用abort终止程序的执行。
消息格式如:
Assertion failed: 表达式, file 源文件名, line行号
预处理器宏:
- 源文件名:
__FILE__
- 行号:
__LINE__
如果定义了宏NDEBUG
,同时又包含了头文件<assert.h>,则assert宏将被忽略。
可变参数表:<stdarg.h>
//ap依此指向每个实际参数
va_list ap;
//访问任何未命名参数前,必须用va_start宏初始化ap一次
//lastarg是最后一个命名形参
void va_start(va_list ap, lastarg);
//产生一个与未命名参数具有相同类型和数值的值
//同时修改ap,使其指向下一个未命名参数
type va_arg(va_list ap, type);
//处理完所有参数后,在退出函数前,必须调用宏va_end
void va_end(va_list ap);
非局部跳转:<setjmp.h>
int setjmp(jmp_buf env);
void longjmp(jmp_buf env, int val);
信号:<signal.h>
void (*signal(int sig, void (*handle)(int)))(int);
int raise(int sig);
日期和时间函数:<time.h>
表示时间的算术类型:clock_t和time_t
日历时间结构体tm,其成员包括:
clock_t clock(void);
time_t time(time_t *tp);
double difftime(time_t time2, time_t time1);
time_t mktime(struct tm *tp);
char *asctime(const struct tm *tp);
char *ctime(const time_t *tp);
struct tm *gmtime(const time_t *tp);
struct tm *localtime(const time_t *tp);
size_t strftime(char *s, size_t smax, const char *fmt, const struct tm *tp);
与具体实现相关的限制:<limits.h>和<float.h>
头文件<limits.h>定义了一些表示整型大小的常量。列出的值是可接受的最小值。
下表列出的名字是<float.h>的子集,表示与浮点算术运算相关的一些常量,给出的每个值代表相应量的最小取值。