字符串函数与字符函数

Posted 两片空白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串函数与字符函数相关的知识,希望对你有一定的参考价值。

一.字符串函数

1.strlen strcpy strcmp strcat函数

strlen函数

  1. 表现形式

在这里插入图片描述
返回值为无符号整形(unsigned int)最小值为0,参数为字符串起始地址。

  1. 作用
    计算字符串中’\\0’前面字符的个数。

strcpy函数

  1. 表现形式

在这里插入图片描述

  1. 作用

将字符串source字符逐个拷贝到字符串destination中,包括’\\0’。
注意:字符串destination的空间一定要大于等于字符串source。返回为字符串destination修改后的首地址。

#include<stdio.h>
int main(){
	char a[] = "asdSDSdf123";
	char b[] = "4444";
	char *p=strcpy(a, b);
	printf("%s\\n", p);//返回a的首地址
	printf("%s\\n", a);//并且a也会被改变
	return 0;

输出:
在这里插入图片描述

strcmp函数

  1. 表现形式

在这里插入图片描述
返回值为int,参数为两个字符串首地址。

  1. 作用
    用于字符串比较。
    字符串str1大于str2时,返回值为1.
    字符串str1等于str2时,返回值为0.
    字符串str1小于str2时,返回值为-1.
    注意:字符串比较方式两字符串逐个字符比较,哪个先出现字符大的,哪个字符串大。相等时返回0。

strcat函数

  1. 表现形式
    在这里插入图片描述
  2. 作用
    将字符串source字符逐个拼接到字符串destination后面,包括’\\0’。从字符串destination的’\\0’开始拼接。
    注意:字符串destination的空间一定要足够大。返回为字符串destination修改后的首地址。
#include<stdio.h>
int main(){
	char a[16] = "asdSDSd";
	char b[] = "4444";
	char *p=strcat(a, b);
	printf("%s\\n", p);
	printf("%s\\n", a);
	return 0;
}

输出:
在这里插入图片描述

2.strncpy strncat strncmp函数

strncpy函数

  1. 表现形式
    在这里插入图片描述
  2. 作用
    将num个字符从字符串source拷贝到字符串destination中,如果字符串source元素个数小于num个,后面补0直到num个。
    注意:strncpy函数后面不会添加字符’\\0’。
#include<stdio.h>
int main(){
	char a[16]="asadasds";
	char b[] = "4444";
	char *p=strncpy(a, b,4);
	printf("%s\\n", p);
	printf("%s\\n", a);
	return 0;
}

输出:
在这里插入图片描述
从上面可以发现a后面的字符也仍然在a里,说明strncpy函数后面不会添加字符’\\0’。
strncat函数

  1. 表现形式
    在这里插入图片描述
  2. 作用
    将num个字符从字符串source拼接到字符串destination后面,从字符串destination的’\\0’开始拼接。
    注意:strncat函数后面会添加’\\0’字符。

strncmp函数

  1. 表现形式
    在这里插入图片描述
  2. 作用
    将两字符串中开始时的num个元素进行比较。返回值与strcpy相同。

3.strstr strtok函数

strstr

  1. 表现形式
    在这里插入图片描述
  2. 作用
    在str1中找到str2字符串第一次出现的位置,返回第一次出现时的开始地址。
#include<stdio.h>
int main(){
	char a[]="this is a simple string";
	char *p=strstr(a, "simple");
	printf("%s\\n", p);
	printf("%s\\n", a);
	return 0;
}

输出:
在这里插入图片描述
上面代码发现,字符串a没变,输出为第一次出现simple的起始地址。

strtok函数

  1. 表现形式
    在这里插入图片描述
  2. 作用
    delimiters字符串是用作分隔符的字符的集合。字符串str任意的其中一个都替换为’\\0’。
    strtok函数的第一个参数不为NULL,函数找到str第一个标记,并保持他在字符串中的位置。
    strtok函数的第一个参数为NULL,函数将从str字符串被保存的位置开始,查找下一个标记。
    如果字符串str不存在更多标记,则返回NULL指针。
#include<stdio.h>
int main(){
	char a[]="this is.a@simple#string";
	char *p=strtok(a, " .@#");
	while (p){     //返回值为指针,不是*p
		printf("%s\\n", p);
		p=strtok(NULL, " .@#");//返回值为地址
		
	}
	return 0;
}

输出:
在这里插入图片描述
注意:strtok函数会使str发生变化,一般先将str拷贝,再进行切分。返回值为地址。注意如何使用strtok函数,见上面代码。如果多个分隔符在一起,只会将第一个设为‘\\0

二.字符函数

1.isspace isdigit islower isupper 函数

isspace判断是否是空白字符
isdigit判断是否是十进制数字字符0~9
islower判断是否是小写字符a~z
isupper判断是否是大写字符A~Z

2.tolower toupper 函数

int tolower(int c)大写转小写
int toupper(int c)小写转大写

注意:有返回值int

#include<stdio.h>
#include<ctype.h>
int main(){
	char *a = "asdASDsbfcc";
	char p ;
	int i = 0;
	while (a[i]){
		if (islower(a[i])){
			p = toupper(a[i]);
		}
		i++;
		putchar(p);
	}
	return 0;
}

输出:
在这里插入图片描述

三.strstr的模拟实现

#include<stdio.h>
#include<assert.h>
char *Mystrstr(char *a, const char *b){
	assert(a);
	assert(b);
	while (*a){
		const char *p = b;
		char *s = a;
		while (*s == *p&&*p&&*s){
			s++, p++;
		}
		if (*p == '\\0'){
			return a;
		}
		a++;

	}
	return NULL;


}
int main(){
	char *a = "this is a simple string";
	char *p = Mystrstr(a,"simple");
	printf("%s\\n", p);
	return 0;
}

输出:
在这里插入图片描述

以上是关于字符串函数与字符函数的主要内容,如果未能解决你的问题,请参考以下文章

201555332盛照宗—网络对抗实验1—逆向与bof基础

web代码片段

21个常用代码片段

10个JavaScript代码片段,使你更加容易前端开发。

10个JavaScript代码片段,使你更加容易前端开发。

Python代码阅读(第38篇):根据谓词函数和属性字符串构造判断函数