字符与字符串的剖析以及函数应用

1.strlen() 字符串长度

size_t  strlen( const char*  str);

 此函数是计算字符串长度,在日常使用中可以直接写strlen()

下面是自己的一个strlen()函数剖析

#include <bits/stdc++.h>

int istrlen(const char* str)
{   
	int i = 0;
	while( str[i]!='\0' ) {
		i++;
	}
	return i;
}

int main()
{
	char name1[100];
	memset(name1,0,sizeof(0));
	strcpy(name1,"suanfafenxi");
	
	char name2[100];
	memset(name2,0,sizeof(0));
	strcpy(name2,"zifuchuan");
	
	printf("istrlen=%d\n",istrlen(name1)); 
	printf("istrlen=%d\n",istrlen(name2)); 
	
	return 0;
}

 运行结果

istrlen=11
istrlen=9

 2.strchr() 字符串字符寻找

char *strchr(const char *s,const int c);

此函数是返回一个指向在字符串中最后一个出现c的位置,如果找不到,返回0的函数,也可以用于在字符串一中找到有没有字符串二中的字符,把字符串一中与字符串二相同的字符找出来

下面是一个例题

L1-011 A-B  分数 20

本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。

输入格式:

输入在2行中先后给出字符串A和B。两字符串的长度都不超过104,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。

输出格式:

在一行中打印出A−B的结果字符串。

输入样例:

I love GPLT!  It's a fun game!
aeiou

输出样例:

I lv GPLT!  It's  fn gm!

解题代码

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int main(){
	char a[N],b[N];
	fgets(a, sizeof(a), stdin);
	fgets(b, sizeof(b), stdin);
	for(int i=0;i<(int)strlen(a);i++){
		if(strchr(b,a[i]))
			continue;
		else
			printf("%c",a[i]);
	}
	return 0;
}

 3.strcpy() 字符串复制

char *strcpy(char* dest, const char* src);
  1. 功 能: 将参数src字符串拷贝至参数dest所指的地址
  2. 返回值: 返回参数dest的字符串起始地址
  3. 复制完字符串后,在dest后追加0
  4. 如果参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误情况

4.strncat() 字符串拼接

char *strncat (char* dest,const char* src, const size_t n);

1.功能:将src字符串的前n个字符拼接到dest所指的字符串尾部
2.返回值:返回dest字符串的起始地址
3.如果n大于等于字符串src的长度,那么将src全部追加到dest的尾部,如果n小于字符串src的长度,只追加src的前n个字符
4.strncat会将dest字符串最后的0覆盖掉,字符追加完成后,再追加0
5.dest要有足够的空间来容纳要拼接的字符串,否则可能会造成缓冲溢出的错误情况

5.strcmp() 字符串比较 

int strcmp(const char *str1, const char *str2 );

功能:比较str1和str2的大小

返回值:相等返回0,str1大于str2返回1,str1小于str2返回-1

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值