自己编写代码实现常用字符串函数的功能
来源:互联网 发布:人工智能危机作文 编辑:程序博客网 时间:2024/05/29 14:19
常见的字符串函数包括strlen,strcpy和strncpy,strcat和strncat,strcmp和strncmp,下面一一描述他们的功能和实现方法。
①strlen()
原型:extern int strlen(char *s);
用法:#include <string.h>
功能:计算字符串s的长度
说明:返回s的长度,不包括结束符NULL。
实现代码:
#include <stdio.h>
#define MAX_SIZE 1024
int my_strlen(char *s)
{
int i = 0;
while(*s != '\0')
{
i++;
s++;
}
return i;
}
int main()
{
char src[MAX_SIZE];
printf("please input a string:\n");
scanf("%s",src);
int len = my_strlen(src);
printf("len = %d\n",len);
return 0;
}
②strcpy和strncpy
strcpy():
原型:extern char *strcpy(char *dest,char *src);
用法:#include <string.h>
功能:把src所指由NUL结束的字符串复制到dest所指的数组中。
返回指向dest结尾处字符(NUL)的指针。
实现代码:
#include <stdio.h>
#define MAX_SIZE 1024
char *my_strcpy(char *dest, char *src)
{
char *temp = dest; //定义中间变量存放形参的地址
while(*src != '\0')
{
*temp = *src; //将src中的内容依次赋值给temp
temp++;
src++;
}
*temp = '\0'; //给temp加上结束字符
return dest; //返回temp的首地址,即dest
}
int main()
{
char dest[MAX_SIZE] = {0};
char src[MAX_SIZE] = {0};
printf("please input dest:\n");
scanf("%s",dest);
printf("please input src:\n");
scanf("%s",src);
char *strcpy = my_strcpy(dest,src); //调用函数
printf("strcpy = %s\n",strcpy);
}
strncpy():
原型:extern char *strncpy(char *dest, char *src, int n);
用法:#include <string.h>
功能:把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组中。
说明:
如果src的前n个字节不含NULL字符,则结果不会以NULL字符结束。
如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
实现代码:
#include <stdio.h>
#define MAX_SIZE 1024
char *my_strncpy(char *dest, char *src, int num)
{
int i;
char *temp = dest; //定义中间变量存放形参的地址
for(i = 0; i < num; i++) //已知循环次数,使用for循环
{
*temp = *src; //将src中的内容依次赋值给temp
temp++;
src++;
}
*temp = '\0'; //给temp加上结束字符
return dest; //返回temp的首地址,即dest
}
int main()
{
char dest[MAX_SIZE] = {0};
char src[MAX_SIZE] = {0};
printf("please input dest:\n");
scanf("%s",dest);
printf("please input src:\n");
scanf("%s",src);
char *result = my_strncpy(dest,src,5); //调用函数
printf("strcpy = %s\n",result);
}
③strcat和strncat
strcat():
原型:extern char *strcat(char *dest,char *src);
用法:#include <string.h>
功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
返回指向dest的指针。
实现代码:
#include <stdio.h>
#define MAX_SIZE 1024
char *my_strcat(char *dest, char *src)
{
char *temp = dest;
while(*temp != '\0')
{
temp++;
}
while(*src != '\0')
{
*temp = *src;
temp++;
src++;
}
*temp = '\0';
return dest;
}
int main()
{
char dest[MAX_SIZE] = "hi hi";
char src[MAX_SIZE] = "hello world";
char *result = my_strcat(dest,src);
printf("result = %s\n",result);
return 0;
}
strncat:
原型:extern char *strncat(char *dest,char *src,int n);
用法:#include <string.h>
功能:把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
返回指向dest的指针。
实现代码:
#include <stdio.h>
#define MAX_SIZE 1024
char *my_strncat(char *dest, char *src, int num)
{
int i;
char *temp = dest;
while(*temp != '\0')
{
temp++;
}
for(i = 0; i < num; i++)
{
*temp = *src;
temp++;
src++;
}
*temp = '\0';
return dest;
}
int main()
{
char dest[MAX_SIZE] = "hi hi";
char src[MAX_SIZE] = "hello world";
char *result = my_strncat(dest,src,8);
printf("dest = %s\n",result);
return 0;
}
④strcmp和strncmp
strcmp:
功 能: 将一个串与另一个比较
用 法: intstrcmpi(char *str1, char *str2);
实现代码:
#include <stdio.h>
#define MAX_SIZE 1024
int my_strcmp(char *dest, char *src)
{
while(*dest != '\0' && *src != '\0') //控制条件为两个数组中有一个先结束
{
if(*dest > *src)
{
return 1;
}
if(*dest < *src)
{
return -1;
}
dest++;
src++;
}
//判断那个数组先结束
if(*dest == '\0' && *src == '\0') //两个数组同时结束
{
return 0;
}
if(*dest == '\0' && *src != '\0') //dest先结束
{
return -1;
}
if(*dest != '\0' && *src == '\0') //src先结束
{
return 1;
}
}
int main()
{
char dest[MAX_SIZE] = {0};
char src[MAX_SIZE] = {0};
printf("please input dest:\n");
scanf("%s",dest);
printf("please input src:\n");
scanf("%s",src);
int result = my_strcmp(dest,src); //调用函数
printf("result = %d\n",result);
return 0;
}
strncmp:
功 能: 把串中的一部分与另一串中的一部分比较 (前n个字符)
用 法: int strncmp(char *str1, char *str2,int maxlen);
实现代码:
#include <stdio.h>
#define MAX_SIZE 1024
int my_strncmp(char *dest, char *src, int n)
{
int i;
int result = 0;
for(i = 0; i < n; i++)
{
if(*dest > *src)
{
result = 1;
break;
}
if(*dest < *src)
{
result = -1;
break;
}
if(*dest = *src)
{
dest++;
src++;
}
}
return result;
}
int main()
{
char dest[MAX_SIZE];
char src[MAX_SIZE];
int n;
printf("please input dest:\n");
scanf("%s",dest);
printf("please input src:\n");
scanf("%s",src);
getchar();
printf("please input n:\n");
scanf("%d",&n);
int result = my_strncmp(dest,src,n); //调用函数
printf("result = %d\n",result);
return 0;
}
- 自己编写代码实现常用字符串函数的功能
- 自己编写代码实现atoi和itoa函数的功能
- 自己编写代码实现atoi和itoa函数的功能
- 自己实现字符串的各个函数功能
- 编写实现strstr()函数功能的代码
- 实现常用字符串函数的功能
- 自己编写函数实现strcmp和strlen的功能。
- 自己编写c语言实现的字符串操作函数
- 一些自己编写的字符串函数
- 自己编写的字符串处理函数
- 实现自己的字符串函数
- 常用的功能实现代码
- 自己模拟strcpy库函数写的功能函数my_strcpy实现strcpy的功能,完整代码
- 自己模拟strcat库函数写的功能函数my_strcat实现strcat的功能,完整代码
- 自己模拟strlen库函数写的功能函数my_strlen实现strlen的功能,完整代码
- 自己模拟strcmp库函数写的功能函数my_strcmp实现strcmp的功能,完整代码
- 编写自己的代码库(javascript常用实例的实现与封装)
- 编写自己的代码库(javascript常用实例的实现与封装)
- Linux蓝牙系统(3) Linux 命令
- Andorid SDK 国内镜像
- HTML5的FileReader API在浏览器中一行行的读取本地文本文件
- map 按照输入顺序输出
- [JZOJ4637] 大鱼海棠(By--A_Crazy_Czy)
- 自己编写代码实现常用字符串函数的功能
- Storm之——配置项详解
- DELPHI XE开发Office Add-In
- NLP中word2vec的使用
- android 6.0权限全面详细分析和解决方案
- mina 作为客户端源代码剖析
- Linux2操作篇 -系统日志性能与网络管理
- Android开发——短信电话拦截/接听电话
- python os模块总结