C字符串操作函数的实现详细解析_C 语言

1. strlen(),计算字符串长度  

复制代码 代码如下:

int strlen(const char string)  
{  
    int i=0;  
    while(string[i]) i++;  
    return i;  
}  

2. strcpy(), 字符串拷贝.   

复制代码 代码如下:

char *strcpy(char *destination, const char *source)  
{  
    while(*destinaton++=*source++);  
    return (destination-1);  
}  

3. strcat(), 字符串的连接.   

复制代码 代码如下:

char *strcat(char *target,const char *source)  
{  
    char *original=target;  
    while(*target) target++; // Find the end of the string  
    while(*target++=*source++);  
    return(original);  

4. streql(), 判断两个字符串是否相等.   

复制代码 代码如下:

int streql(char *str1,char *str2)  
{  
    while((*str1==*str2)&&(*str1))  
    {  
        str1++;  
        str2++;  
    }  
    return((*str1==NULL)&&(*str2==NULL));  
}  

5. strchr(), 在字符串中查找某个字符.   

复制代码 代码如下:

char *strchr(const char *string,int letter)  
{  
    while((*string!=letter)&(*string))  
        string++;  
    return (string);  
}  

6. chrcnt(), 计算某个字符在字符串中出现的次数.  

复制代码 代码如下:

int chrcnt(const char *string,int letter)  
{  
    int count=0;  
    while(*string)  
        if(*string==letter)count++;  
    return count;  
}  

7. strcmp(), 判断两个字符串是否相等.  

复制代码 代码如下:

int strcmp(const char *str1,const char *str2)  
{  
    while((*str1==*str2)&&(*str1))  
    {  
        str1++;  
        str2++;  
    }  
    if((*str1==*str2)&&(!*str1)) //Same strings  
        return o;  
    else if((*str1)&&(!*str2)) //Same but str1 longer  
        return -1;  
    else if((*str2)&&(!*str1)) //Same but str2 longer  
    else  
    return((*str1>*str2)?-1:1);  
}

时间: 2024-09-20 08:10:57

C字符串操作函数的实现详细解析_C 语言的相关文章

函数外初始化与函数内初始化详细解析_C 语言

关于函数外初始化与函数内初始化之前一直分的不是太清,也不太在意.昨天终于出现了这方面的问题,所以决定好好看下,以下是这次的一些收获,先看测试代码: 复制代码 代码如下: #include "stdafx.h"#include <iostream>using namespace std;bool FillStr(char *&szDst, int nSize){ bool bRet = false; if (nSize > 0) {  szDst = (char

C++指向类成员函数的指针详细解析_C 语言

首先 函数指针是指向一组同类型的函数的指针:而类成员函数我们也可以相似的认为,它是指向同类中同一组类型的成员函数的指针,当然这里的成员函数更准确的讲应该是指非静态的成员函数.前者是直接指向函数地址的,而后者我们从字面上也可以知道 它肯定是跟类和对象有着关系的. 函数指针实例: 复制代码 代码如下: typedef int (*p)(int,int);//定义一个接受两个int型且返回int型变量的函数指针类型int func(int x,int y){ printf("func:x=%d,y=%

C#委托所蕴含的函数指针概念详细解析_C 语言

原则: 1.函数指针,实际上是函数编码后的指令在内存中的首地址,在C++/C中,这个地址可以用函数名直接使用 一个函数调用另一个函数的时候,就可以把被调用函数以函数指针的形式作为参数传入 2.回调函数callback使用的技术就是函数指针: 回调函数就好像是一个中断处理函数,系统在符合你设定的条件时自动调用.为此,你需要做三件事: 1). 声明: 2). 定义: 3). 设置触发条件,就是在你的函数中把你的回调函数名称转化为地址作为一个参数,以便于DLL调用. 回调函数是应用程序提供给Windo

C++中的friend函数详细解析_C 语言

为什么要使用友元函数 在实现类之间数据共享时,减少系统开销,提高效率.如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数.具体来说:为了使其他类的成员函数直接访问该类的私有变量.即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数. 实际上具体大概有下面两种情况需要使用友元函数:(1)运算符重载的某些场合需要使用友元.(2)两个类要共享数据的时候. 使用友元函数的优缺点 优点:能够提高效率,表达简单.清晰. 缺点:友元函数破环

iostream与iostream.h的区别详细解析_C 语言

C++的标准类库被修订了两次,有两个标准 C92和C99,这两个库现在都在并行使用,用 .h 包含的是c92 ,不带 .h 的是c99的头文件,对于普通用户来说这两者没有什么区别,区别是在内部函数的具体实现上.旧的C++头文件是官方明确反对使用的,但旧的C头文件则没有(以保持对C的兼容性).据说从 Visual C++ .NET 2003 开始,移除了旧的 iostream 库.其实编译器制造商不会停止对客户现有软件提供支持,所以在可以预计的将来,旧的C++头文件还会嚣张一段时间.如果能明白字符

C++的字符串分割函数的使用详解_C 语言

经常碰到字符串分割的问题,这里总结下,也方便我以后使用. 一.用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串. 参数说明:str为要分解的字符串,delim为分隔符字符串. 返回值:从str开头开始的一个个被分割的串.当没有被分割的串时则返回NULL. 其它:strtok函数线程不安全,可以使用strtok_r替代. 示例: //借助strtok实现split #include <st

STL常用容器详细解析_C 语言

STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用.下面,我们就浅谈某些常用的容器.这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中的常用容器包括:顺序性容器(vector.deque.list).关联容器(map.set).容器适配器(queue.stac). 1.顺序性容器 (1)vectorvector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问.由于具有连续的存储空间,所以在插入和删除操作方面,效率比较慢

C语言文件操作函数freopen详细解析_C 语言

今天做USACO  用到了文件的操作. 之前做USACO只是格式化的些 写  freopen("xxx.in","r",stdin)  和"freopen("xxx.out","w",stdout)"  百度百科上是这么介绍的: 函数名: freopen 功 能: 替换一个流,或者说重新分配文件指针,实现重定向.如果stream流已经打开,则先关闭该流.如果该流已经定向,则freopen将会清除该定向.此函

C++中对象的赋值与复制操作详细解析_C 语言

对象的赋值 如果对一个类定义了两个或多个对象,则这些同类的对象之间可以互相赋值,或者说,一个对象的值可以赋给另一个同类的对象.这里所指的对象的值是指对象中所有数据成员的值. 对象之间的赋值也是通过赋值运算符"="进行的.本来赋值运算符"="只能用来对单个的变量赋值,现在被扩展为两个同类对象之间的赋值,这是通过对赋值运算符的重载实现的. 实际上这个过程是通过成员复制来实现的,即将一个对象的成员值一一复制给另外一个对象的成员.对象赋值的一般形式: 对象名1=对象名2;