1. 程式人生 > >常用函式strcpy strcat strcmp strlen memcpy memset

常用函式strcpy strcat strcmp strlen memcpy memset

strcpy

strcpy是拷貝字串,以’\0’為標誌結束
strcpy的原型為

//這裡不考慮源字串長度比目標字串長度長的情況
char* strcpy(char * dst, const char * src)
{
    assert((dst != NULL) && (src != NULL));
    char * cp = dst;
    while ( *cp++ = *src++ );
    return dst;
}

strcat

用法
#include <string.h>在C++中,則存在於標頭檔案中。
功能
把src所指字串新增到dest結尾處(覆蓋dest結尾處的’\0’)並新增’\0’。
說明
src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。返回指向dest的指標。
strcat的原型為

char* strcat ( char * dst , const char * src )
{
    assert((dst != NULL) && (src != NULL));
    char* cp = dst;
    while ( *cp )
        cp++;
    while ( *cp++ = *src++ );
    return( dst );/* return dst */
}

strcmp

用法:#include <string.h>   
功能:比較字串s1和s2。   
一般形式:strcmp(字串1,字串2)   
說明:   當s1

int strcmp ( const char* src, const char* dst )
{
    assert((dst != NULL) && (src != NULL));
    int ret = 0 ;
    while ( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
        ++src, ++dst;
    if ( ret < 0 )
        ret = -1 ;
    else if ( ret > 0 )
        ret = 1
; return ret; }

strlen

標頭檔案:string.h
格式:strlen (字元陣列名)
功能:計算字串s的(unsigned int型)長度,不包括’\0’在內
說明:返回s的長度,不包括結束符NULL。

size_t strlen(const char * str){ 
    assert(str != NULL);
    const char *cp =  str;
    while  (*cp++ );
    return (cp - str - 1 ); 
}

memcpy

void* memcpy(void* sdt, const void* src, unsigned int len)
{
    register char * d;
    register char * s;
    if (0 == len)
    {
        return dst;
    }
    if (dst > src)
    {
        d = (char *)dst + len - 1;
        s = (char *)src + len - 1;
        while (len >= 4)
        {
            *d-- = *s--;
            *d-- = *s--;
            *d-- = *s--;
            *d-- = *s--;
            len -= 4;
        }
        while (len--)
        {
            *d-- = *s--;
        }
    }
    else if (dst < src)
    {
        d = (char *)dst;
        s = (char *)src;
        while (len >= 4)
        {
            *d++ = *s++;
            *d++ = *s++;
            *d++ = *s++;
            *d++ = *s++;
            len -= 4;
        }
        while (len--)
        {
            *d++ = *s++;
        }
    }
    return dst;
}

memset

用法:#include

void * memset_(void* buffer, int c, int count)  
{  
    assert(buffer != NULL);  
    char* tmp=(char*)buffer;  
    while(count--)  
        *tmp++=(char)c;  
    return buffer;  
} 

PS:
上述函式中並沒有判斷字串末尾值是否是’\0’,原因在這裡解釋下。
‘\0’ == NULL 這個判斷語句返回的是true,我們知道NULL其實是一個巨集定義,對應的值是0,而’\0’在ASCII碼錶中的對應也是0,故二者是相等的。

相關推薦

常用函式strcpy strcat strcmp strlen memcpy memset

strcpy strcpy是拷貝字串,以’\0’為標誌結束 strcpy的原型為 //這裡不考慮源字串長度比目標字串長度長的情況 char* strcpy(char * dst, const

No.25 經典筆試題(二):模擬實現strcpy,strcat,strcmp,strstr,memcpy

直接上程式碼: 1. //模擬實現strcpy #include <stdio.h> #include <assert.h> char* my_strcpy(char* dest, const char* src) { char* ret = dest ;

【c語言】利用指標模式實現字串函式strlenstrcat、strstr、strcpystrcmpmemcpy、memove)

模擬實現strlen int my_strlen(const char *p) { assert(p != NULL); char *s = p; while (*p) { p++; } r

深入理解字串處理函式 strlen() strcpy() strcat() strcmp()

在linux C 程式設計中,我們經常遇到字串的處理,最多的就是字串的長度、拷貝字串、比較字串等;當然現在的C庫中為我們提供了很多字串處理函式。熟練的運用這些函式,可以減少程式設計工作量,這裡介紹幾個常用的字串函式,並編寫一些程式,如果沒有這些庫函式,我們將如何實現其功能; 1.求字串長度函式 

linux C --深入理解字串處理函式 strlen() strcpy() strcat() strcmp()

    在linux C 程式設計中,我們經常遇到字串的處理,最多的就是字串的長度、拷貝字串、比較字串等;當然現在的C庫中為我們提供了很多字串處理函式。熟練的運用這些函式,可以減少程式設計工作量,這裡介紹幾個常用的字串函式,並編寫一些程式,如果沒有這些庫函式,我們將如何實

strlen() strcpy() strcat() strcmp()實現

won link 字符長度 一個數 bsp man assert 足夠 strcmp strlen函數原型:unsigned int strlen(const char *);返回的是字符串中第一個\0之前的字符個數。   1.strcat函數原型char* strcat(

strcat strcmp strlen函式的實現

#include<stdio.h> char *Mystrcat(char *arr,const char *brr) //字串連線函式 { char *p = arr; while(*p++); p--; while(*p = *brr); return arr;

嘗試實現strlen(),strcpy(),strcat(),strcmp()

#include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> #define LL long long //strlen(),s

C字串——庫函式系列(strlenstrcatstrcpystrcmp

一定義: 字串:字串是由零個或者多個字元組成的有限序列; 子串:字串中任意個連續的字元組成的子序列,並規定空串是任意串的子串,字串本身也是子串之一;“abcdefg”,”abc“就是其子串,但是“ade”不屬於子串範圍。 子序列:不要求字元連續,但是其順序與其在主串中相一致;上例中,“abc

C語言字串函式總結:模擬實現常用的字串類函式strlenstrcpystrcmp........)

總結:模擬實現常用的字串類函式(strlen、strcpy、strcmp……..) 1. strlen 2. strcpy 3. strcat 4. strstr 5. strchr 6. strcmp 7. memcpy 8. m

[c語言]對各種字串庫函式的實現strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove

1.模擬實現strcpy //1.模擬實現strcpy(字串拷貝) #include<stdio.h> #include<assert.h> char * my_strcpy(char *dest,const char *str) {

strcat,strcmp,memcpy,strcpy函式實現

char *strcat(char *strDest, const char *strScr) //將源字串加const,表明其為輸入引數{        char * address = strDest; //該語句若放在assert之後,編譯出錯        assert((strDest != NUL

C字串函式strcmp\strcpy\strcat\memcpy

1.strcmp int strcmp(const char* str1, const char*str2){ assert(str1 != NULL&&str2 != NULL); while (*str1&&am

strcpy strcat strstr strchr strcmp memcpy memmove的自我編譯

  1.實現strcpy  #include<stdio.h> #include<assert.h> char* m_strcpy(char* dest, const char* src) { char *ret = dest; assert(

C/C++實現strcpy,strcat,strlen,strcmp標準實現程式碼

網上很容易找的到,拿出來記錄下來備忘:) char * strcpy (char * dst, char * src){      char * cp = dst;      while( *cp++ = *src++ )      ;               /* Co

strcpy,strncpy,memcpy,memmove,memset函式用法及實現

轉自:http://blog.csdn.net/piaojun_pj/article/details/5945926一.函式介紹:1、memcpy函式原型:extern void *memcpy(void *dest, const void *src, size_t coun

C庫中的strcpy,strncpy,memcpy,memmove,memset函式

一.函式介紹: 1、memcpy 函式原型:extern void *memcpy(void *dest, const void *src, size_t count); 用法:#include<string.h> 功能:由src所指記憶體區域複製count個位

C 自己實現strcpystrcmpstrlenstrcat等函數

求字符串長度 ret div str 實現 字符串 brush r++ 長度 /* 1. 求字符串長度函數 */ int myStrlen(char *str) { int cnt = 0; while(*str++ != ‘\0‘) { cn

模擬實現:strlen,strcpy,strcat,strchr,ctrcmp,strstr

模擬實現幾個str庫函式的功能: 首先,應用的標頭檔案如下: #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<string.h> 主函式如下

strcpy函式的用法,strlen,sizeof區別

strcpy(s1,s2);strcpy函式的意思是:把字串s2中的內容copy到s1中,連字串結束標誌也一起copy. 這樣s1在記憶體中的存放為:ch\0; 在cout<<s1<<endl時,結果為ch;事實上,在記憶體裡面是這樣