C语言笔试题:几种字符串的操作函数

大部分公司的笔试题都会涉及到写一个字符串的操作函数,并且不调用库函数。
虽然这些函数经常都会用到,但是在笔试现场还真不一定能做对,要保证写出来还要写对还是需要看平时的积累的,毕竟笔试的时候没有机器给你调试,就只有看个人对代码的理解了,所以,多练习是没错的,毕竟机会难得。

1.strcpy() 字符串拷贝函数

//将src里面的字符串拷贝到dest
char *MyStrcpy(char *dest,const char *src){
	if(NULL == dest || NULL == src){
		return NULL;
	}
	char *ret = dest;
	while((*dest++ = *src++) != '\0');
	return ret;
}

注意:返回一个char*指针是为了实现链式表达式,如 :

int len = strlrn(MyStrcpy(dest,"hello world"));

2.strcmp()字符串比较函数
strcmp(s1,s2):

1、两个字符串从左到右按照 ACSII 码值大小比较,直到出现不同的字符或者遇到’\0’为止;
2、若出现不相同的字符,则以第一对不相同的字符的比较结果为准;
3、字符串1等于字符串2,函数值为0,字符串1大于字符串2,函数值为正整数,字符串1小于字符串2,函数值为负整数;

int MyStrcmp(const char *str1,const char *str2){
	int ret;
	while(!(ret = *str1-*str2)&&str2){
		str1++;
		str2++;
	}
	if(ret>0)return 1;
	if(ret<0)return -1;
	return ret;
}

3.strcat()字符串连接函数
strcat(str1,str2) 将字符串str2拼接在str1后面;

char *MyStrcat(char *dest, const char *src){
	char *strdest = dest;
	int i=0;
	while(*strdest++ != '\0'){
		i++;
	}
	while((dest[i++] = src[j++]) != '\0');
	return dest;
}

4.将字符串转化整型数atoi()

int StrToNum(char *str)
{
	int ret = 0;
	int flag=1;
	if(*str == '-'){
		flag = -1;
	}
	if(*str == '-' || *str == '+'){
		str++;
	}
	while(*str != '\0'){
		if(*str >= '0' && *str <= '9'){
			ret = ret*10+str - '0';
		}
	}
	return flag*ret;
}

5.整型数转化为字符串
注意,如果是负数,不能取余,要变成正数之后用;

char* NumToStr(int nums, char* str)
{
	int i = 0;
	int num = nums;
	while (num) {
		num = num / 10;
		i++;
	}
	if (nums < 0) {
		i = i + 1;
		nums = -nums;//负数不能取余,注意一下
		for (int j = i - 1; j > 0; j--) {
			str[j] = nums % 10 + '0';
			nums = nums / 10;
		}
		str[0] = '-';
		str[i] = '\0';//字符串结束标志
	}
	else {
		for (int j = i - 1; j >= 0; j--) {
			str[j] = nums % 10 + '0';
			nums = nums / 10;
		}
		str[i] = '\0';//字符串结束标志
	}
	//str[i] = '\0';//字符串结束标志
	return str;

}

6.strstr()判断一个字符串里面是否包含另一个字符串

bool my_strstr(const char *s1, const char *s2)
{ 
int len = strlen(s2)
    while(*s1){
		if (strncmp(s1, s2, len) == 0)
            return true;
        else 
         s1++;
    }
    return false;
}

7.删除指定字符串的字符;

8.删除一个字符串包含的字符串

9.一个字符串中出现的字符最多的次数;

10.判断字符串中有多少个单词;

11.将字符串中的单词倒序(只改变单词顺序,不改变字母);

12.将字符串倒过来排列;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值