共计 2198 个字符,预计需要花费 6 分钟才能阅读完成。
strlen 函数:求字符串的长度
size_t strlen(const char *s)
- 头文件:#include<string.h>
- 阐明: 求出 s 指向的字符串的长度(不包含 null 字符)。
- 返回值: 返回 s 指向的字符串的长度。
size_t strlen(const char *s)
{
size_t len = 0;
while(*s++)
len++;
return len;
}
strcpy 和 strncpy 函数:复制字符串
char strcpy(char s1,const char *s2)
- 头文件:#include<string.h>
- 阐明:将 s2 指向的字符串复制到 s1 指向的数组中。若 s1 和 s2 指向的内存空间重叠,则作未定义解决。
- 返回值:返回 s1 的值。
char *strcpy(char *s1,const char *s2)
{
char *tmp = s1;
while(*s1++ = *s2++)
;
return tmp;
}
char strncpy(char s1,const char *s2,size_t n);
- 头文件:#include<string.h>
- 阐明:将 s2 指向的字符串复制到 s1 指向的数组中。若 s2 的长度大于等于 n,则复制到第 n 个字符为止。否则用 null 字符填充残余局部。若 s1 和 s2 指向的内存空间重叠,则作未定义解决。
- 返回值:返回 s1 的值。
char *strncpy(char *s1,const char *s2,size_t n)
{
char *tmp = s1;
while(n){if(!(*s1++ = *s2++)) break; // 遇到 '\0' 就完结循环
n--;
}
while(n--)
*s1++ = '\0'; // 用 '\0' 填充残余局部
return tmp;
}
strcat 和 strncat 函数:连贯字符串
char *strcat(char *s1,const char *s2)
- 头文件:#include<string.h>
- 阐明:将 s2 指向的字符串连贯到 s1 指向的开端。若 s1 和 s2 指向的内存空间重叠,则作未定义解决
- 返回值:返回 s1 的值。
char *strcat(char *s1,const char *s2)
{
char *tmp = s1;
while(*s1)
s1++; // 后退到 s1 的开端处
while(*s1++ = *s2++)
; // 循环复制直至遇到 s2 中的 '\0'
return tmp;
}
char *strncat(char *s1,const char *s2,size_t n);
- 头文件:#include<string.h>
- 阐明:将 s2 指向的字符串连贯到 s1 指向的数组开端。若 s2 的长度大于 n 则截断超出局部。若 s1 和 s2 指向的内存空间重叠,则作未定义解决。
- 返回值:返回 s1 的值。
char *strncat(char *s1,const char *s2,size_t n)
{
char *tmp = s1;
while(*s1)
s1++; // 后退到 s1 的开端处
while(n--)
if(!(*s1++ = *s2++)) break; // 遇到 '\0' 就完结循环
*s1 = '\0'; // 在 s1 的开端插入 '\0'
return tmp;
}
strcmp 和 strncmp 函数:比拟字符串的大小关系
char *strcmp(char *s1,const char *s2)
- 头文件:#include<string.h>
- 阐明:比拟 s1 指向的字符串和 s2 指向的字符串的大小关系。
- 返回值:若 s1 和 s2 相等,则返回 0;若 s1 大于 s2,则返回正整数值,反之返回负整数值。
int *strcmp(char *s1,const char *s2)
{while(*s1 == *s2){if(*s1 == '\0')
return 0;
s1++;
s2++;
}
return (unsigned char)*s1 - (unsigned char)*s2;
}
char *strncat(char *s1,const char *s2,size_t n);
- 头文件:#include<string.h>
- 阐明:比拟 s1 指向的字符的数组和 s2 指向的字符的数组的前 n 个字符的大小关系。
- 返回值:若 s1 和 s2 相等,则返回 0;若 s1 大于 s2,则返回正整数值,反之返回负整数值。
int *strncmp(char *s1,const char *s2,size_t n)
{while(n && *s1 && *s2){if(*s1 != *s2)
return (unsigned char)*s1 - (unsigned char)*s2;
s1++;
s2++;
n--;
}
if(!n) return 0; // 相等
if(*s1) return 1; //s1 > s2
return -1; //s1 < s2
}
atoi、atol 和 atof 函数:转换字符串
int atoi(const char *nptr)
- 头文件:#include<stdlib.h>
- 阐明:将 nptr 指向的字符串转换为 int 型示意
- 返回值:返回转换后的值。后果值不能用 int 型示意时的解决未定义。
long atol(const char *nptr)
- 头文件:#include<stdlib.h>
- 阐明:将 nptr 指向的字符串转换为 long 型示意
- 返回值:返回转换后的值。后果值不能用 long 型示意时的解决未定义。
double atof(const char *nptr)
- 头文件:#include<stdlib.h>
- 阐明: 将 nptr 指向的字符串转换为 double 型示意
- 返回值: 返回转换后的值。后果值不能用 double 型示意时的解决未定义。
正文完