到目前为止,C语言作为我的工作的方式已经整整三年,照说应该很熟练才是,但事实非如此,一些常用的操作根本没去记,要用的时候才去查,就导致了编程变慢了,还是记一记吧。
1、meset, memcmp,memcpy,strcpy,这几个熟了,pass
2、
size_t strlen(const char *s);//取字符串的长度
C语言的字符串就是一个数组,并以'\0'结束,比如strlen("hello")返回值为5,而sizeof("hello")则为6。strlen没把'\0'算进去。java 的字符串是一个对像,其实也就是一段内存了,然以类的形式把字符串的操作函数封装了进去。字符串在java的内部的表示方式与c不同,java字符串的第一字节是表示该字符串的长度,后面才是真正的字符串,所以java字符串的操作不会出现内存越界的情况。
3、
void *memmove(void *dest, const void *src, size_t n);
该函数与memcpy差不多,如果src 与dest 所指的内存重叠,memcpy不保证复制的正确性,但是memmov可以。
4、
char *strcat(char *dest, const char *src);//联接字符串,遇到'\0'时结束 char *strncat(char *dest, const char *src, size_t n);//联接n个字节的字符串 /*无论是strcat 还是 strncat 都要保正dest所指向的内存足够大*/
5、
int strcmp(const char *s1, const char *s2); int strncmp(const char *s1, const char *s2, size_t n);
6、
//忽略大小写 int strcasecmp(const char *s1, const char *s2); int strncasecmp(const char *s1, const char *s2, size_t n);
//搜索字符,如果找到,主返回字符c所在所指针,否则返回NULL char *strchr (const char *s, int c); char *strrchr (const char *s, int c);/*从右到左找字符C*/
7、
/*查找子串,如果找到,返回子串的开头,否则返回NULL*/ char *strstr(cost char *haystack, const char *needle);
8、
/*分割字符串,返回下一个Token的指针,如果没有了,返回NULL*/ char *strtok(char *str, const char *delim);/*不可重入*/ char *strtok_r (char *str, constrchar *delim, char **saveptr);/*可重入*/