字符函数和字符串函数

1.字符分类函数

islower:

#include <stdio.h>
#include <ctype.h>
int main()
{
    int ret = islower('a');
    printf("%d\n", ret);

    return 0;
}

2.

写一个代码,将字符串的小写字母转换成大写字母,其它字符不变。

#include <stdio.h>
#include <ctype.h>
int main()
{
	char arr[] = "I am a student.";
	int i = 0;
	while (arr[i] != '\0')
	{
		if(islower(arr[i]))
		{
			arr[i] -= 32;
		}
		i++;
	}

	printf("%s\n", arr);

	return 0;
}

3.

模拟实现strlen函数

#include <stdio.h>
#include <ctype.h>
#include <string.h>
size_t my_strlen(char* x)
{
	if (*x != '\0')
	{
		return 1 + my_strlen(x + 1);
	}
	else
	{
		return 0;
	}
}
int main()
{

	char arr[] = "abcdef";
	size_t ret = my_strlen(arr);

	printf("%zd\n", ret);

	return 0;
}

4.strcpy函数的使用

#include <stdio.h>
#include <string.h>
int main()
{
	char arr1[] = "Hello World";
	char arr2[20] = {0};
	strcpy(arr2, arr1);

	printf("%s\n", arr2);

	return 0;
}

5.strcpy函数的模拟

#include <stdio.h>
#include <string.h>
#include <assert.h>
void* my_strcpy(char* x, char* y) 
{
	assert(x && y);
	void* ret = x;
	while (*y != '\0')
	{
		*x = *y;
		x++;
		y++;
	}
	*x = *y;

	return ret;
}
int main()
{
	char arr1[] = "abcdef";
	char arr2[20] = { 0 };

	my_strcpy(arr2, arr1);

	printf("%s\n", arr2);

	return 0;
}

6.strcat函数的使用

#include <stdio.h>
#include <string.h>
int main()
{
	char arr1[20] = "Hello ";
	char arr2[20] = "World";

	strcat(arr1, arr2);
	printf("%s\n", arr1);

	return 0;
}

7.strcat函数的模拟

#include <stdio.h>
#include <string.h>
#include <assert.h>
char* my_strcat(char* x, char* y)
{
	assert(x && y);
	char* ret = x;
	while (*x != '\0')
	{
		x++;
	}
	while (*y != '\0')
	{
		*x = *y;
		x++;
		y++;
	}
	*x = *y;

	return ret;
}
int main()
{
	char arr1[20] = "Hello ";
	char arr2[20] = "World";

	my_strcat(arr1,arr2);

	printf("%s\n", arr1);

	return 0;
}

8.strcmp函数的实现

#include <stdio.h>
#include <string.h>
int main()
{
	char arr1[20] = "abcde";
	char arr2[20] = "abq";

	int ret = strcmp(arr1,arr2);

	printf("%d\n",ret);

	return 0;
}

9.strcmp函数的模拟


#include <stdio.h>
#include <string.h>
#include <assert.h>
int my_strcmp(const char* x,const char* y)
{
	assert(x && y);
	while (*x == *y)
	{
		x++;
		y++;
	}//相等就比较下一对
	if (*x > *y)
	{
		return 1;
	}
	else if (*x < *y)
	{
		return -1;
	}
	else
	{
		return 0;
	}
}
int main()
{
	char arr1[20] = "abcde";
	char arr2[20] = "abq";

	int ret = my_strcmp(arr1,arr2);
	printf("%d\n", ret);

	return 0;
}

10. strncpy的实现

#include <stdio.h>
#include <string.h>
int main()
{
	char arr1[20] = "abcdef";
	char arr2[20] = { 0 };

	strncpy(arr2, arr1, 3);
	printf("%s\n",arr2);

	return 0;
}

11.strncat函数的实现

#include <stdio.h>
#include <string.h>
int main()
{
	char arr1[20] = "Hello ";
	char arr2[20] = "World";

	strncat(arr1, arr2,2);
	printf("%s\n", arr1);

	return 0;
}

12.strncmp函数的实现

#include <stdio.h>
#include <string.h>
int main()
{
	char arr1[20] = "Hello ";
	char arr2[20] = "World";

	int ret = strncmp(arr1, arr2,3);

	printf("%d\n", ret);

	return 0;
}

13.strtok函数的实现

#include <stdio.h>
#include <string.h>
int main()
{
	char arr[] = "wang@zeyu.185";
	char buf[256] = { 0 };
	strcpy(buf, arr);
	char sep[] = "@.";
	for (char* ret = strtok(buf, sep); ret != NULL; ret = strtok(NULL, sep));
	{
		printf("%s\n", ret);
	}


	return 0;
}

14.strtok函数的实现

#include <stdio.h>
#include <string.h>
int main()
{
	char arr[] = "wang@zeyu.185";
	char buf[256] = { 0 };
	strcpy(buf, arr);
	char sep[] = "@.";
	char* ret = NULL;

	for ( ret = strtok(buf, sep); ret != NULL; ret = strtok(NULL, sep))
	{
		printf("%s\n", ret);
	}

	return 0;
}

15.strstr函数的实现

#include <stdio.h>
#include <string.h>
int main()
{
	char arr[] = "abcdefgh";
	char* ps = "cdef";

	char* ret = strstr(arr, ps);

	printf("%s\n", ret);

	return 0;
}

16.strstr函数的模拟

      

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
const char* my_strstr(char* x,char* y)
{	
	char* s1 = NULL;
	char* s2 = NULL;
	char* cur = x;

	if (*y == '\0')
	{
		return x;
	}

	while (*cur)
	{
		s1 = cur;
		s2 = y;

		while (*s1 && *s2 && *s1 == *s2)
		{
			s1++;
			s2++;
		}
		if (*s2 == '\0')
			return cur;

		cur++;
	}

	return NULL;
}
int main()
{
	char arr[] = "abcdefgh";
	char* ps = "cdef";

	char* ret = my_strstr(arr, ps);

	printf("%s\n", ret);

	return 0;
}

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值