常用函式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語言】利用指標模式實現字串函式(strlen、strcat、strstr、strcpy、strcmp、memcpy、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字串——庫函式系列(strlen、strcat、strcpy、strcmp)
一定義: 字串:字串是由零個或者多個字元組成的有限序列; 子串:字串中任意個連續的字元組成的子序列,並規定空串是任意串的子串,字串本身也是子串之一;“abcdefg”,”abc“就是其子串,但是“ade”不屬於子串範圍。 子序列:不要求字元連續,但是其順序與其在主串中相一致;上例中,“abc
C語言字串函式總結:模擬實現常用的字串類函式(strlen、strcpy、strcmp........)
總結:模擬實現常用的字串類函式(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 自己實現strcpy,strcmp,strlen,strcat等函數
求字符串長度 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;事實上,在記憶體裡面是這樣