首页 > 其他分享 >字符函数和字符串函数

字符函数和字符串函数

时间:2024-10-20 18:17:10浏览次数:3  
标签:字符 arr return 函数 int char 字符串 include strlen

字符函数:字符函数的头文件是ctype.h

islower 是用来判断参数部分的c是否为小写字母

int islower(int c);

通过函数值来说明是否是小写字母,如果是小写字母就返回非零的整数,如果不是小写字母,则返回0;

练习:写一个代码,判断这个字符串是否有小写字母,如果有将小写字母,转变成大写字母

注:小写字母的ASCII值-32==大写字母的ASCII值

#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
	char a[] = "I am a Student.";
	int sz = strlen(a);
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		if ((islower(a[i])) != 0)
		{
			a[i] = a[i] - 32;
		}
	}
	printf("%s\n", a);
	return 0;
}

输出结果:


字符串函数转换

int tplower(int c);//将参数c传进去的大写字母变成小写字母

int toupper(int c);//将参数c传进去的小写字母变成大写字母

练习:写一个代码,判断这个字符串是否有小写字母,如果有将小写字母,转变成大写字母

注:这里我们不是用ASCII值来转变大小写,而是使用字符串函数转换来,转变大小写字符

#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
	char a[] = "I am a Student.";
	int sz = strlen(a);
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		if ((islower(a[i])) != 0)
		{
			a[i]=toupper(a[i]);
		}
	}
	printf("%s\n", a);
	return 0;
}

输出结果:


strlen 函数

求\0之前的字符串的长度

size_t作为strlen的返回值,%zd

strlen的头文件#include<string.h>

strlen的使用:

#include<stdio.h>
#include<string.h>
int main()
{
	char a[] = "abcdef";
	int ret = strlen(a);
	printf("a这个数组的字符串长度是:%d\n",ret);
	return 0;
}

输出结果:

我们来写一个代码实现一下,strlen碰到\0就会停下

#include<stdio.h>
#include<string.h>
int main()
{
	char a[] = "abcd\0ef";
	int ret = strlen(a);
	printf("a这个数组的字符串长度是:%d\n",ret);
	return 0;
}

输出结果:

我们来进行strlen的模拟实现(有三种方法)

//计数器的方法

 //计数器
#include<stdio.h>
size_t my_strlen(const char* arr)
{
	int count = 0;
	while (*arr != '\0')
	{
		*arr++;
		count++;
	}
	return count;
}
int main()
{
	char arr[] = "abcdef";
	size_t len = my_strlen(arr);
	printf("%zd\n", len);
	return 0;
}

//指针-指针的方法

//指针-指针
#include<stdio.h>
size_t my_strlen(const char* arr)
{
	const char* start = arr;
	while (*arr != '\0')
	{
		arr++;
	}
	return arr - start;
}
int main()
{
	char arr[] = "abcdef";
	size_t len = my_strlen(arr);
	printf("%zd\n", len);
	return 0;
}

//递归的方式

//递归的方式
#include<stdio.h>
size_t my_strlen(const char* arr)
{
	if (*arr != '\0')
		return 1 + my_strlen(arr+1);
	else
		return 0;
}
int main()
{
	char arr[] = "abcdef";
	size_t len = my_strlen(arr);
	printf("%zd\n", len);
	return 0;
}

strcpy函数

char* strrcpy(char* destination,const char* source)

                                目标地址                            源头地址

注:源头的字符串中必须包含\0,没有\0strcpy不能结束运行

        目标空间需要足够大,能够放下源字符串

strcpy的使用

#include<stdio.h>
#include<string.h>
int main()
{
	char a[] = "acdef";
	char b[20] = { 0 };
	strcpy(b, a);
	printf("a=%s\n", a);
	printf("b=%s\n", b);

	return 0;
}

输出结果:

strcpy 的模拟实现

//strcpy的模拟实现
#include<stdio.h>
#include<assert.h>
char* my_strcpy(char* dest,const char* src)
{
	assert(dest && src);
	//dest 是目标空间
	char* ret = dest;
	//while(*dest++=*src++)//拷贝过去字符后,判断表达式的值
	// 当\0拷贝过去后,判断为假并且停下来
	//{ ;}
	while (*src != '\0')
	{
		*dest = *src;
		dest++;
		src++;
	}
	*dest = *src;//处理'\0'
	return ret;//为了实现链式访问,
	            //strcpy函数返回的是目标空间的起始地址
}
int main()
{
	char a1[] = "abcdef";
	char a2[10] = "xxxxxxxx";
	char* pstr = my_strcpy(a2, a1);
	printf("a2=%s\n", a2);
	printf("a1=%s\n", a1);
	printf("pstr=%s\n", pstr);
	return 0;
}

输出结果:


标签:字符,arr,return,函数,int,char,字符串,include,strlen
From: https://blog.csdn.net/2301_78189441/article/details/143047100

相关文章