本文主要用C语言实现了字符串处理中的如下几个函数功能。
1)Mystrlen实现的是求字符串的长度
2)Mystrcpy实现字符串的复制
3)Mystrcat实现连接两个字符串
4)Mystrcmp实现比较两个字符串大小
5)convert实现小写字符到大写字符的转换
实现的代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
// Get the length of string
int Mystrlen(const char* src)
{
const char* p = src;
assert(src != NULL);
while(*(p++) != '\0');
return p - src - 1;
}
// Copy the source string to destination string
void Mystrcpy(char* dest, const char* src)
{
int i = 0;
assert(dest != NULL && src != NULL);
if(dest && src)
{
while((*(dest + i) = *(src + i)) != '\0')
i++;
*(dest + i) = '\0';
}
// return dest;
}
// concatenate the two string.
void Mystrcat(char *dest, const char *src)
{
assert(dest != NULL && src != NULL);
while(*(dest++) != '\0');
dest--;
while((*dest++ = *src++) != '\0');
}
// compare the two string
int Mystrcmp(const char *str1, const char *str2)
{
assert(str1 != NULL && str2 != NULL);
while(*str1 != '\0' && *str2 != '\0')
{
if(*str1 > *str2)
return 1;
else if(*str1 == *str2)
{
*str1++;
*str2++;
}
else
{
return -1;
}
}
if(*str1 != '\0')
return 1;
else if (*str2 != '\0')
return -1;
else
return 0;
}
// Convert the Low case to Upper case
void convert(char *str)
{
while(*str != '\0')
{
if(*str >= 'a' && *str <= 'z')
{
*str = *str + 'A' - 'a';
}
str++;
}
}
int main()
{
int i = 0;
char dest[20] = "hello,";
char *s = "world!";
char d[7];
int length;
length = Mystrlen(s);
printf("%d\n", length);
Mystrcpy(d, s);
puts(s);
convert(d);
puts(d);
Mystrcat(dest, s);
puts(dest);
if(Mystrcmp(dest, s) == 1)
{
printf("dest great than s");
}
else if(Mystrcmp(dest, s) == -1)
{
printf("dest less than s");
}
else
{
printf("dest equal to s");
}
system("pause");
return 0;
}
其中strlen还有如下的实现:
利用递归来实现计算字符串的长度,但是当字符串太长的时候,递归实现计算字符串的长度会出现如下的问题
1.开销太大,因为函数调用的开销比循环大很多。
2.递归的效率低,当深度太大时,可能会出现错误(如栈溢出)
代码如下:
方法1:
int my_strlen(const char* str)
{
assert(NULL != str);
if('\0' == *str)
{
return 0;
}
else
{
return (1 + my_strlen(++str));
}
}
方法2:
int my_strlen(const char* str)
{
assert(NULL != str);
return ('\0' != *str) ? (1 + my_strlen(++str)) : 0;
}
分享到:
相关推荐
C语言中strcpy_strcmp_strlen_strcat函数原型
C语言学习-字符串处理函数 strcat(char str1,char str2) strcpy(char str1,char str2) strncpy(char str1,char str2,int n) strcmp(char str1,char str2)//比较两个字符串大小str1>str2返回值>0,str1=str2...
strcpy,strcat,strcmp,strlen,strchr
C语言分别实现strcpy,strcmp,strlen,strcat,strchr,strstr的功能
使用c语言,编写字符串的strlen,strcat, strcpy,strcmp四个操作
C 语言字符串操作函数 1. 字符串反转 - strRev 2. 字符串复制 - strcpy 3. 字符串转化为整数 - atoi 4. 字符串求长 - strlen 5. 字符串连接 - strcat 6. 字符串比较 - strcmp 7. 计算字符串中的元音字符个...
下面小编就为大家带来一篇浅谈C语言中strcpy,strcmp,strlen,strcat函数原型。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
strlen函数原型:unsigned int strlen(const char *);返回的是字符串中第一个\0之前的字符个数。 1.strcat函数原型char* strcat(char* dest,const char* src); 进行字符串的拼接,将第二个字符串连接到第一个字符串...
。。。
strcpy,strcmp,strlen,strcat函数的实现过程
减少库的使用,解决那些需要小代码量,但苦恼于没有简易的字符串处理函数的郁闷 char *itoa_private(int val, char *buf, unsigned radix);//整数转字符串 int my_isdigit(int ch);//判断字符是否为数字 long long ...
该文件有strlen,strcpy,strcmp,strcat函数,代码风格规范,非常有利于初学者。
strcpy,strncpy,strcat,strncat,strcmp,strncmp,strchr,strnchr,strlen,strnlen,strspn,strpbrk,strtok,strsep,memset,bcopy,memcpy,memmove,memcmp,memscan,strstr,memchr.函数具体实现内容。对理解C语言和C编程有...
C语言字符串操作的8个库函数源代码 1.strcpy.c 2.strcat.c 3.strlen.c 4.Insstr.c 5.substr.c 6.strstr.c 7.delstr.c 8.strcmp.c
主要介绍 strcpy(),strncpy(), strcat(), strncat(), strcmp(), strncmp(), strchar(), strrchr(), strspn(), strcspn(), strpbrk(), strstr(), strlen(), strerror(), strtok()等。
字符串函数 bcmp bcopy bzero memccpy memchr memcmp memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn strdup stricmp strlen strlwr ...
这些函数到底对源字符串和目标字符串做了些什么?你是否观察过它们运行时两个字符串内存的变化? 上面这些函数使用时,各有哪些需要注意的地方? 你会几种字符串查找操作? c语言中有字符串这个数据类型吗?
字符串函数 bcmp bcopy bzero memccpy memchr memcmp memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn strdup stricmp strlen strlwr ...