例题理解(13)--C语言--strcat函数(连接)--strcmp函数(比较大小)--strstr函数(查找)
程序员文章站
2022-05-12 12:36:14
...
字符串函数
接上一篇博客
strcat函数
这个函数的主要作用就是将两个字符串内的数据进行连接,形成一个新的字符串,直接看代码.
如下面例题:
#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函数
主要就是比较两个字符串的大小,如图理解
如下面例题:
#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函数
在另外一个字符串里面寻找和原代码中相同的部分,并输出后面所有的值
如下面例题:
#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;
}
学会原理,会利用,防止面试出这一类函数的编写.一起加油!!!