谭浩强c语言书中字符串函数原型的实现


学习编程的人都知道,字符串是程序员面试的重要考察环节,因为通过考察一个程序员对于字符串的操作,可以看出一个人的编程水平和编程习惯。

字符串编程设计到数组操纵,指针运作,越界判断等,可以考察的很全面。

这里将谭浩强c语言程序设计书里关于字符串的标准函数的原型用我写的c代码描述一下,经过调试能运行,基本上能实现其功能。

 

1.strcat函数,函数的作用是将str2字符串接到str1字符串后面,返回str1的地址,代码如下:

 

char *strcat(char *str1, char *str2)
{
	char *address = str1;			//保留str1起始地址
	int i = 0, j = 0;				//i,j分别是str1,str2在赋值过程中的标志位
	while(str1[i] != '\0')			//i的值为s1的长度
		i++;
	if(str2[j] == '\0')
		return address;
	else
	{
		while(str2[j] != '\0')
			str1[i++] = str2[j++];
		str1[i] = '\0';			//别忘了加上结束标志符,这是字符串有别与其他数据类型的地方
	}

	return address;
}

 

 


 

2. strcmp函数,函数作用是比较字符串str1和str2大小,如果str1=str2返回0,如果str1>str2返回正数1,如果str1<str2返回负数-1,代码如下:

 

int strcmp(char *str1, char *str2)
{
	int cmp = 0;
	while(cmp == 0)
	{
		if(*str1 == *str2)
		{
			if(*str1 == '\0' && *str2 == '\0')
				break;
			str1++;
			str2++;
		}
		else if(*str1 > *str2)
			cmp = 1;
		else if(*str1 < *str2)
			cmp = -1;
	}
	
	return cmp;
}

 

 


3. strcpy函数,函数的作用是将字符串str2全部拷贝到字符串str1中,并返回str1的地址,代码如下:

 

char *strcpy(char *str1, char *str2)
{
	char *address = str1;

	if(*str2 == '\0')
		return address;
	else
	{
		while(*str2 != '\0')
			*str1++ = *str2++;
		*str1 = '\0';
	}

	return address;
}


 

 

4.strncpy函数,函数的作用是将字符串str2中前n个字符拷贝到字符串str1中,返回str1的地址,代码如下:

 

char *strncpy(char *str1, char *str2, int n)
{
	char *address = str1;
	int i = 0;

	if(str2[i] == '\0')
		return address;
	else
	{
		while(i < n)
		{
			*str1++ = str2[i++];
			if(str2[i] == '\0')
				break;
		}
		*str1 = '\0';
	}

	return address;
}


 

 

5.strlen函数,函数的作用是计算字符串str1的长度,并返回,代码如下:

 

int strlen(char *str1)
{
	int len = 0;
	if(str1[len] == '\0')
		return len;
	else
	{
		while(str1[len] != '\0')
			len++;
	}

	return len;
}


 

 

6.strlwr函数,函数的作用是将字符串中大写字母改为小写字母,返回原字符串地址,代码如下:

 

char *strlwr(char *str1)
{
	char *address = str1;
	while(*str1 != '\0')
	{
		if(*str1 >= 'A' && *str1 <= 'Z')
			*str1+=32;
		str1++;
	}

	return address;
}



 

 

7.strupr函数,函数的作用是将字符串中小写字母改为大写字母,返回原字符串地址,代码如下:

 

char *strupr(char *str1)
{
	char *address = str1;
	while(*str1 != '\0')
	{
		if(*str1 >= 'a' && *str1 <= 'z')
			*str1-=32;
		str1++;
	}

	return address;
}


 

 

最后:

1.程序是基本实现功能,但健壮性不强,比如strncpy函数中n的大小和格式并未做限制。

2.函数的原型未做仔细研究,如格式有不对的地方,可以自行调整,比如我并不确定strupr函数是否有返回值。

3.仅给字符串初学者或正在准备程序员面试的朋友交流学习,欢迎大家多提意见。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值