strlen - 求字符串长度
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//strlen - 求字符串长度
//字符串以'\0'作为结束标志,strlen函数返回的是在字符串中'\0'前面出现的字符个数(不包含'\0')
//参数指向的字符串必须要以'\0'结束
//注意函数的返回值为size_t,是无符号的
int my_strlen(char* str) {
int count = 0;
while (*str != '\0') {
count++;
str++;
}
return count;
}
int main() {
int len1 = strlen("abcdef");
char arr[] = { 'a','b','c','d','e','f' };
int len2 = strlen(arr);
printf("%d\n", len1);//6
printf("%d\n", len2);//随机值
int len3 = my_strlen("abcdef");
printf("%d\n", len3);//6
return 0;
}
strcpy - 复制字符串
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//strcpy - 复制字符串
//源字符串必须以'\0'结束
//会将字符串中的'\0'拷贝到目标空间
//目标空间必须足够大,以确保能存放源字符串
//目标空间必须可变
char* my_strcpy(char* dest, const char* src) {
char* ret = dest;
//拷贝src指向的字符串到dest指向的空间,包含'\0'
while (*dest++ = *src++) {
;
}
//返回目的空间的起始地址
return ret;
}
int main() {
char arr1[] = "abcdef";
char arr2[] = "bit";
char arr3[] = "hello";
//将arr2拷贝到arr1中
strcpy(arr1, arr2);
printf("%s\n", arr1);//bit
my_strcpy(arr1, arr3);
printf("%s\n", arr1);//hello
return 0;
}
bit
hello
strcat - 追加
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//strcat - 追加
//源字符串必须以'\0'结束
//目标空间必须足够大,以确保能存放源字符串
//目标空间必须可变
char* my_strcat(char* dest, const char* src) {
char* ret = dest;
//1.找到目的字符串的'\0'
while (*dest != '\0') {
dest++;
}
//2.追加
while (*dest++ = *src++) {
;
}
return ret;
}
int main() {
char arr1[30] = "hello";
char arr2[] = "world";
char arr3[] = "!";
strcat(arr1, arr2);
printf("%s\n", arr1);//helloworld
my_strcat(arr1, arr3);
printf("%s\n", arr1);//helloworld!
}
helloworld
helloworld!
strcmp - 比较字符串大小
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//strcmp - 比较字符串大小
//第一个字符串大于第二字符串,则返回大于0的数字
//第一个字符串等于第二个字符串,则返回0
//第一个字符串小于第二个字符串,则韩慧小于0的数字
int my_strcmp(const char* str1, const char* str2) {
while (*str1 == *str2) {
if (*str1 == '\0') {
return 0;//相等
}
str1++;
str2++;
}
if (*str1 > *str2)
return 1;//大于
if (*str1 < *str2)
return -1;//小于
}
int main() {
char* p1 = "abcdef";
char* p2 = "sqwer";
char* p3 = "abcdee";
int ret = strcmp(p1, p2);
printf("%d\n", ret);//-1 - 比较ASCII码值
int ret2 = my_strcmp(p1, p3);
printf("%d\n", ret2);//1
return 0;
}
-1
1
strncpy - 复制字符串,限制字符数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//strncpy - 复制字符串,限制字符数
int main() {
char arr1[5] = "abc";
char arr2[] = "hello world";
char arr3[] = "ac";
//复制arr2的4个字符到arr1
strncpy(arr1, arr2, 4);
printf("%s\n", arr1);//hell
strncpy(arr1, arr3, 5);
printf("%s\n", arr1);//ac
return 0;
}
hell
ac
strncat - 追加,限制字符数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//strncat - 追加,限制字符数
int main() {
char arr1[30] = "hello";
char arr2[] = "world";
//向arr1追加arr2的三个字符
strncat(arr1, arr2, 3);
printf("%s\n", arr1);//hellowor
return 0;
}
hellowor
strcmp - 比较字符串大小,限制字符数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//strcmp - 比较字符串大小,限制字符数
int main() {
char* p1 = "abcdef";
char* p2 = "qwer";
//比较p1,p2前4个字符
int ret = strncmp(p1, p2,4);
printf("%d\n", ret);//-1
return 0;
}
-1