欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

例题理解(13)--C语言--strcat函数(连接)--strcmp函数(比较大小)--strstr函数(查找)

程序员文章站 2022-05-12 12:36:14
...

字符串函数

接上一篇博客

strcat函数

这个函数的主要作用就是将两个字符串内的数据进行连接,形成一个新的字符串,直接看代码.
例题理解(13)--C语言--strcat函数(连接)--strcmp函数(比较大小)--strstr函数(查找)

如下面例题:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <assert.h>
//====strcat函数实例(连接)
char* strcat(char* dest, const char* source){
	if (dest == NULL || source == NULL){		//合法性校验
		return dest;
	}
	char* p = dest;			//将目的数组赋给p
	while (*p != '\0'){		//循环看大小
		p++;
	}
	while (*source != '\0'){			//注意指针的用法
		*p = *source;
		p++;			//依次加加进行连接
		source++;
	}
	*p = '\0';
	return dest;
}
int main(){
	char arr1[1024] = "good";
	strcat(arr1, "job");				//这里直接调用函数,后置位直接写字符串即可
	printf("%s\n", arr1);		//输出
	system("pause");
	return 0;
}

主要就是掌握他的基本构成,以后能更好的利用,并且明确原理.

strcmp函数

主要就是比较两个字符串的大小,如图理解
例题理解(13)--C语言--strcat函数(连接)--strcmp函数(比较大小)--strstr函数(查找)
如下面例题:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <assert.h>
//====strcmp函数实例(比较大小)
int strcmp(const char* str1, const char* str2){		//当字符相同,则继续向后比较,直到不用为止
	assert(str1 != NULL || str2 != NULL);  //合法性校验
	while (*str1 != '\0'&&*str2 != '\0'){	//判断是否为空
		if (*str1 < *str2){
			return -1;			//这里的-1不只是一个数字,它表达的是一串文字,只不过需要翻译出来
		}
		else if (*str1>*str2){ return 1; }

		else {
			str1++;
			str2++;
		}
	}
	if (*str1 < *str2){		//依次进行比较,看哪一个大
		return -1;
	}
	else if (*str1>*str2){ return 1; }

	else { return 0; }		//相同为0
}
int main(){
	char arr1[] = "abcd";
	char arr2[] = "abc";
	char* temp1 = arr1;
	char* temp2 = arr2;
	printf("%d\n", strcmp(temp1, temp2));		//调用函数
	system("pause");
	return 0;
}

strtsr函数

在另外一个字符串里面寻找和原代码中相同的部分,并输出后面所有的值例题理解(13)--C语言--strcat函数(连接)--strcmp函数(比较大小)--strstr函数(查找)
如下面例题:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <assert.h>
//====strstr函数实例(查找)
char* my_strstr(const char* dest, const char* src)  //查找函数
{
	char* start = (char*)dest;			//强制类型转换
	char* substart = (char*)src;
	char* cp = (char*)dest;
	assert(dest != NULL);		//预警
	assert(src != NULL);
	while (*cp)
	{
		start = cp;
		while (*start != '\0' && *substart != '\0' && *start == *substart)//若为空则++
		{
			start++;
			substart++;
		}
		if (*substart == '\0')
		{
			return cp;
		}
		substart = (char*)src;
		cp++;
	}
	return NULL;	//返回空
}
int main(){			//意思就是查找到后将查找到的字符和后面的所有进行输出
	char arr[20] = "aabbccede";
	char arr1[10] = "bcce";
	printf("%s\n", my_strstr(arr, arr1));		//调用

	system("pause");
	return 0;
}

学会原理,会利用,防止面试出这一类函数的编写.一起加油!!!