工欲善其事,必先利其器
使用任何语言,必须先掌握库,只有这样才能站在巨人肩上看得更远。
C语言的库主要是libc, 嵌入式开发环境中用得最多的是uclibc。
关于库函数介绍,推荐书: 脑动力 C语言函数速查效率手册
关于库函数,个人体会做下面2个步骤可能有利于开发。
1> 将书本快速看一下,整理一个Excel文档,内容为: 函数名,参数说明,头文件,sample代码。
2> 建一个SouceInsight工程,实际开发中用到一个,就加一个该函数的测试代码。
这样有个好处,当处于非网络开发环境,可以快速查找。
并且,在特定环境下,还有必要测试下库函数,看是否有实现差异。
下面列举些常用函数:
#include
字符类型判断
int isalpha(int ch);
int isdigit(int ch);
int isalnum(int ch);
int islower(int ch);
int isupper(int ch);
int isspace(int ch);
#include
字符串处理
char* strcpy(char*dst, char*src);
char* strncpy(char*dst, char*src, int n);
char* strcat(char*dst, char*src);
char* strncat(char*dst, char*src, int n);
char* strchr(const char*src, char ch);
char* strrchr(const char*src, char ch);
char* strstr(const char*s1, char* s2);
char* strcmp(const char*s1, char* s2);
char* stricmp(const char*s1, char* s2);
char* strnicmp(const char*s1, char* s2,int maxlen);
int strlen(char*s);
char* strlwr(char*s);
char* strupr(char*s);
#include
控制台相关
int kbhit(void);
int getch(void);
int getchar(void);
int putch(int ch);
int putchar(int ch);
#include
int printf(char* fmt[, args]);
int vprintf(char* fmt, va_list param);
int sprintf(char* buf, char* fmt[, args]);
int vsprintf(char* fmt, va_list param);
#include
int ioctl(int fd, int request,void*);
#include
typdef void(*sig_t)(int);
sig_t signal(int signum, sig_t handler);
int raise(int signum);
#include
int system(const char * cmd);
#include
#include
#include
#include
int rename(char* oldname, char* newname);
int open(char* path, int access[,int permiss]);
int read(int fd, void*buf, int nByte);
int write(int fd, void*buf, int nByte);
int eof(int fd);
int lseek(int fd, long offset, int origin);
long tell(int fd);
int isatty(int fd);
#include
int lock(int fd, long offset, int len);
int unlock(int fd, long offset, int len);
int close(int fd);
#include
FILE* fopen(char* path, char* mode);
size_t fread(void*buf, size_t size, size_t count, FILE*stream);
size_t fwrite(void*buf, size_t size, size_t count, FILE*stream);
int feof(FILE*stream);
int fseek(FILE*stream, long offset, int origin);
long ftell(FILE*stream);
int ferror(FILE*stream);
int fclose(FILE*stream);
/* buffer */
void setbuf(FILE*stream, char*buf);
int setvbuf(FILE*stream,char* buf,int type, unsigned size);
int fflush(FILE*stream);
/* format */
int fprint(FILE*stream, char* format[, args]);
int vfprint(FILE*stream, char* format, va_list param);
/* 文件权限管理 */
int chmod(char* path, int mode);
int access(char* path, int mode);
int getftime(int fd, struct ftime* pftime);
int setftime(int fd, struct ftime* pftime);
long filelength(int fd);
int setmode(int fd, unsigned mode);
#include
int abs(int i);
double sin(double x);
double cos(double x);
double exp(double x);
double log(double x);
float pow(float x, float y);
double sqrt(double x);
double ceil(double x);
double floor(double x);
void srand(unsigned seed);
int rand(void);
/* 时间函数 */
#include
void getdate(struct date* pDate);
void setdate(struct date* pDate):
void gettime(struct time* pTime);
void settime(struct time* pTime);
time_t time(time_t*timer);
double difftime(time_t t1, time_t t2);
/* 类型转换 */
#include
char* ltoa(long value, char* str, int radix);
char* itoa(int value, char* str, int radix);
double atof(char* str);
int atoi(char* str);
long atol(char* str);
int tolower(int ch)