C语言第27天,字符串函数使用与剖析(一),strlen,strcpy,strcat,strcmp,strncpy,strncat,strcmp

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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值