标准C读后总结

看到同事写的代码可以在windows和linux上移植,于是我也读一个标准C。写的共用代码则用标准C,平台有关的则用宏。不说废话了

1. assert.h

里面就一个函数:assert(int expression),表达式必需为真,不然就向标准错误文件写东东,并退出程序。

2.ctype.h

里面全是判断和转换类型。参数都是int,很简单:

isalnum(int c)是否为数值

isalptha是否为字母

iscntrl是否为控制字符

isdigit是否为十进制

islower是否为小写字母

int tolower(int c) 把一个大写字母转换为相应的小写字母

toupper把小写转为大写

3.errno.h

4. float.h用于复杂的浮点数的使用,定义了很多宏

5.limits.h

定义了很多宏,用于各种类型的最大最小值

SCHAR_MIN -127  有符号字符最小值

SCHAR_MAX +127 有符号字符最大值 

6. locale.h 跟本地有关的一些设置,没用过

7.math.h 

声明了一些数学函数

double acos(double x) 计算x的三角反余弦函数

double asin(double x) 

atan2

cos

sin

exp       e的x次方

log

log10

double pow(double x, double y);

double sqrt(double x)

double ceil(double x);

fabs 取浮点数的绝对值

8. setjmp.h 未使用过

绕过正常的函数调用和返回规则

int setjmp(jmp_buf env); setjmp将它的调用环境保存在它的jmp_buf类型的参数中,以供后面的longjmp函数使用

void longjmp(jmp_buf env,int val); 

9. signal.h

void (*signal(int sig,void(*func)(int)))(int);

signal(sig,SIG_IGN)

signal(sig,SIG_DFL)

int raise(int sig); 发给自己的相应的信号

10. stdarg.h

void va_start (va_list ap, parmN);

type va_arg(va_list ap,type);

void va_end(va_list ap);


va_list ap;

va_start(ap,n_Ptrs);  // n_Ptrs是参数的个数

while

      array[ptr_no++] = va_arg(ap,char*)

va_end(ap);


11.stddef.h 没用过

ptrdiff_t   是两个指针相减的结果的有符号整数类型

size_t 无符号整数类型

12. stdio.h  标准输入输出

exit()

fgetc()

fopen()

fputc()

setbuf()

setvbuf()

int remove(const char*filename)

int rename(const char*old,const char*new)

FILE *tmpfile(void)

int fclose(FILE*stream);

int fflush(FILE*strem);把未写入的数据传递给宿主环境,然后写入文件

FILE* fopen(const char *filename,const char *mode)

void setbuf(FILE* stream,char*buf)

int setvbuf(FILE*stream,char*buf,int mode, size_t size)

int fprintf(FILE* stream,const char * format,...);

int fscanf(FILE*stream,const char* format,...);

int printf(const char* format,...)

int scanf (const char*format,...)

int sprintf(char*s,const char*format)

int sscanf(const char*s,const char*format)

int vfprintf(FILE*stream,const char*format,va_list arg);

int vprintf(const char*format,va_list arg)

int vsprintf(char*s,const char*format,va_list arg);

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 nmemb,FILE*stream)

size_t fwrite(const void*ptr,size_t size,size_t nmemb,FILE*stream)

文件定位

int fgetpos(FILE*stream,fpos_t *pos)

int fseek(FILE*stream,long int offset,int whence); // SEEK_SET SEEK_CUR, SEEK_END

int fsetpos(FILE*stream,const fpos_t *pos);

long int ftell(FILE*stream) // 文件位置

void rewind(FILE*stream) // 到达文件头

int feof(FILE* stream) //文件是否到达尾

void perror (const char*s)

把s:现有的errno转换为对应的字符串


13. stdlib.h

div_t  div的返回值类型

ldiv_t ldiv的返回值 类型

double atof(const char*npter)

strtod(nptr,(char**)NULL)

int atoi(const char *nptr)

long int atol(const char*nptr);

double strtod(const char*nptr,char**endptr) 

long int strtol(const char*nptr,char**endptr,int base)

unsigned long int strtoul(const char *nptr,char**endptr,int base)

int rand(void)

void srand(unsigned int seed) 这是下种子给rand使用

void *calloc(size_t nmemb,size_t size);

void free(void *ptr)

void *malloc(size_t size)

void abort(void)

int atexit(void(*func)(void));

void exit(int status)

char* getenv(const char*name)

int system(const char*string)

int abs(int j)

div_t div(int number,int denom);

long int labs(long int j)

ldiv_t ldiv(long int number,long int denom)


14. string.h

void * memcpy(void *s1,const void*s2,size_t n)

void *memremove(void *s1,const *s2,size_t n)

char* strcpy(char*s1,const char*s2)

char* strncpy(char*s1,const char*s2,size_t n)

char* strcat(char *s1,const char*s2) //把s2的串,接在s1的串的后面并返回s1的串

char * strncat(char*s1,const char*s2,size_t n)

int memcmp(const void *s1,const void *s2,size_t n)

char *strstr(const char*s1,const char*s2)  //s2在s1中出现的位置

char* strtok(char*s1,const char*s2)   //

使用:

static char str[] = "?a???b,,,#c";

char *t;

t= strtok(str,"?") ;  // t="a"

t = strtok(NULL,","); // t=??b

t= strtok(NULL,"#,"); //c

t= strtok(NULL,"?"); //t=NULL


void* memset(void*s,int c,size_t n);

size_t strlen(const char*s)

14 time.h

clock_t clock(void)

double difftime(time_t time1,time_t time0);

time_t mktime(struct tm*timeptr)

time_t time(time_t *timer)

char *asctime(const struct tm*timeptr)

char *ctime(const time_t *timer)

struct tm*gmtime(const time_t *timer)

struct tm*localtime(const time_t*timer)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值