每天学一点库函数7

库函数

字符串函数

本文介绍了strcpy、strncpy、strstr、strlen函数。

strcpy

本函数的语法结构为:
char* strcpy(char *str1,cahr *str2)
其功能是将str2所指的字符串复制到字符串str1中去。
输出值是字符串指针str1。

        char ch1[] = "hallo ";
	char ch2[] = "word";
	char *str1 = ch1;
	char *str2 = ch2;
	strcpy(str1, str2);
	for (int i = 0; i < strlen(str1); i++)
	{
		cout << *(str1+i);
	}
	cout <<  endl;

运行以上函数
在这里插入图片描述
如图所示,str1所指的字符串被更改为“word”。

strncpy

本函数的语法结构为:
char * strncpy(char *str1,char *str2,int n)
其功能是将str2所指的字符串的前n项复制到str1所指的数组中,返回str1的地址。
如果str2的前n个字节不含NULL字符,则结果不会以NULL结束。如果str2的长度小于n,则会用NULL来填充剩下的那部分内容。
str1和str2所指的内存区域不可以重叠并且str1的长度要足够容纳str2.

	char str1[15];
	char str2[] = { "hallo" };
	strncpy(str1, str2, 5);
	for (int i = 0; i < 15; i++)
	{
		cout << str1[i];
	}
	cout << endl;
	strncpy(str1, str2, 10);
	for (int i = 0; i < 15; i++)
	{
		cout << str1[i];
	}
	cout << endl;
	strncpy(str1, str2, 14);
	for (int i = 0; i < 15; i++)
	{
		cout << str1[i];
	}
	cout << endl;

运行以上程序。
在这里插入图片描述
由于str1所指的内存用户没有初始化,被系统默认初始化为每个字节数都为0xc。将其按照字符形式每2字节输出为 “烫”
第一组输出为“hallo烫烫烫烫烫”其中,由于str2所指的前n(5)个字符中没有NULL字符,则复制结果没有空字符,则输出结果为“hallo”外加5个“烫”。
第二组数据由于复制了10个字节(n=10),那么不够的部分由NULL补齐,所以输出结果为“hallo”外加5个空再加2个“烫”,最后一个字节由于没有意义导致没有输出。
第三组数据复制了14个字节,所以输出结果为“hallo”外加9个空字符和最后一个无意义的0xc。

strlen

本函数的语法结构为:
unsigner int strlen(char *str);
其功能是统计字符串的长度,不包括结尾的空字符。

        char a[] = { "hallo word!" };
	cout << strlen(a) << endl;

在这里插入图片描述

strstr

本函数的语法结构为:
char* strstr(char* str1,char* str2);
其功能为在字符串str1中找出字符串str2第一次出现的地方。不包括str2的结束符。返回该位置的指针,否则返回空值。

	char str1[] = { "hallo world" };
	char str2[] = { "wo" };
	char str3[] = { "aa" };
	char *a = strstr(str1, str2);
	char *b = strstr(str1, str3);
	if (NULL==a)
		cout << "未找到wo!" << endl;
	else
		for (int i = 0; i < strlen(str2); i++)
		{
			cout << a[i];
		}
	cout << endl;
	if (NULL==b)
		cout << "未找到aa!" << endl;
	else
		for (int i = 0; i < strlen(str3); i++)
		{
			cout << b[i];
		}
	cout << endl;

在这里插入图片描述

注意

本文使用的操作系统是Windows 7 64位处理器。
使用的软件是Microsoft visual studio 2015
在使用字符函数的时候,应该在源文件中添加以下命令
#include <string.h>

Ω ~未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值