您的位置:首页 > 编程语言 > C语言/C++

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

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

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

这里将谭浩强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.仅给字符串初学者或正在准备程序员面试的朋友交流学习,欢迎大家多提意见。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  语言 c 编程 面试