字符串函数模拟实现
来源:互联网 发布:js中有foreach in 编辑:程序博客网 时间:2024/06/09 20:48
strchr函数
函数功能:查找一个字符。在一个字符串中查找一个特定的字符。
函数原型:char *strchr(char const *str,int ch);
函数说明:strchr在字符串str中查找字符ch第一次出现的位置,找到后返回一个指向该位置的指针。如果该字符不存在于字符串中,则返回一个NULL指针。注意:第二个参数是一个整型值,但是,它包含了一个字符串值。
#include <stdio.h>#include <windows.h>char *mystrchr(char *s, char c){char*p = s;while (*s && *s != c)s++;if (*s == c)return s;return NULL;}int main(){char buf[20] = "hellowrold!";char c = 'l';char *p = mystrchr(buf, c);printf("%s\n", p); systme("pause"); return 0; }
strstr函数
函数功能:在一个字符串中查找一个字串
函数原型:char *strstr(char const *s1,char const *s2);
函数说明:strstr实现在s1中查找整个s2第一次出现的位置,并返回一个指向该位置的指针。如果s2并没有完整的出现在s1的任何地方,函数返回一个NULL指针。如果第二个字符串是一个空字符串,函数返回s1。
#include <stdio.h>#include <windows.h>char *mystrstr(char *s1, char *s2){ char *pChar; pChar = s2; int len = strlen(s2); for (; strchr(s1, *pChar) != '\0'; s1++) { if (strncmp(s1, pChar, len) == 0) { return s1; } } return NULL; } int main() { char str1[20] = "abcdhello!"; char str2[20] = "cd"; char *p = mystrstr(str1, str2); printf("%s\n", p); systme("pause"); return 0; }strcat
strcat函数
函数功能:将src指向的字符串追加到dest指向字符串的后面。
函数原型: char *strcat(char *strDest, const char *strSrc)
函数说明:返回dest字符串的地址。
#include <stdio.h> #include <STDLIB.H> #include <STRING.H> char * my_strcat(char * dest,const char *src) { char *p=dest; while(*p) p++; //让指针P指向dest的最后面 while(*src) { *p=*src; p++; src++; } *p='\0'; //新字符串的终止符 return dest; } void main() { char s[10]="andef"; char *c="ghi"; my_strcat(s,c); puts(s); }
strcpy函数
功能:字符串拷贝。将src指向的字符串拷贝到dest,字符串以'\0'结束。
原型:char *strcpy(char *dst, const char *src)。
说明:返回char *
char * strcpy(char *dst, const char *src) //源字符串参数用const修饰,防止修改源字符串{assert(dst != NULL && src != NULL); //空指针检查char *ret = dst; //返回目标地址while ((*dst++ = *src++) != '\0'); return ret;}
strcmp函数
功能:它对两个字符串进行比较,然后返回比较结果。
原型:int strcmp(const char* str1, const char* str2)
说明:其中str1和str2可以是字符串常量或者字符串变量,返回值为整形。返回结果如下规定: str1小于str2,返回负值或者-1(VC返回-1);str1等于str2,返回0;str1大于str2,返回正值或者1(VC返回1);
int strcmp(const char* str1, const char* str2) { int ret = 0; while(!(ret=*(unsigned char*)str1-*(unsigned char*)str2) && *str1) { str1++; str2++ } if (ret < 0) { return -1; } else if (ret > 0) { return 1; } return 0; }
memcpy函数
原型:void * memcpy ( void * destination, const void * source, size_t num );
功能:拷贝n个字节
说明:返回指向dest的指针
void * mymemcpy(void *dest, const void *src, size_t count) { if (dest == NULL || src == NULL) return NULL; char *pdest = static_cast <char*>(dest); const char *psrc = static_cast <const char*>(psrc); int n = count; if (pdest > psrc && pdest < psrc+count) { for (size_t i=n-1; i != -1; --i) { pdest[i] = psrc[i]; } } else { for (size_t i= 0; i < n; i++) { pdest[i] = psrc[i]; } } return dest; }
memmove函数
功能:由src所指内存区域复制count个字节到dest所指内存区域
原型:void *memmove( void* dest, const void* src, size_tcount );
说明:返回指向dest的指针
void* memcpy(void* memTo, void* memFrom, size_t size) { assert(memTo != NULL && memFrom != NULL); char* temFrom = (char*)memFrom; char* temTo = (char*)memTo; while(size-- > 0) *temTo++ = *temFrom++; return memTo; }
拷贝n个字节
阅读全文
0 0
- 字符串函数模拟实现
- 字符串函数模拟实现
- 字符串函数模拟实现
- 模拟实现常用字符串函数
- 模拟实现字符串操作函数
- 字符串操作函数模拟实现
- 模拟实现部分字符串函数
- 字符串函数的模拟实现
- 模拟实现字符串操作函数
- 模拟实现strncat函数(字符串追加函数)
- 模拟实现C语言中的字符串函数
- 字符串操作函数模拟实现大全
- 模拟实现各类字符串查找操作函数
- 模拟实现字符串函数(续)
- C语言模拟实现字符串操作函数
- 一些字符串操作函数的模拟实现
- 模拟实现字符串拷贝函数小细节
- 字符串逻辑比较函数---StrCmpLogicalW的模拟实现
- 序列化
- CVPR 2017 paper list & ICCV 2017 paper list
- ARZIO让AR应用制作变得更简单
- scikit_learn.linear_model线性回归与正则化(一)
- 进程、线程、并发执行的概念
- 字符串函数模拟实现
- 散列算法
- 对称加密
- 非对称加密
- 沙盒 沙箱
- 进程间通信-消息队列
- 什么是socket
- 《海龟投资法则》读书笔记
- BIOS设置通电开机?请问高手怎么设置?