字元和字串函式

2021-08-21 15:24:49 字數 4752 閱讀 2046

求字串長度

strlen

size_t strlen(const char *str);//返回字串中'\0'前面出現字元的個數
模擬實現

//計數器方式

int my_strlen(const char *str)

return count;

}//遞迴方式

int my_strlen(const char *str)

//指標-指標

int my_strlen(const char *str)

return ptr - str;

}

長度不受限制字串函式

strcpy

char *strcpy(char *destination, const char *source);
源字串必須以'\0'結束,會將源字串的'\0'拷貝到目標空間,目標空間必須足夠大

模擬實現

char *my_strcpy(char *dst, const char *str)

return dst;

}

strcat

char *strcat(char *destination, const char *source);
字串拼接源字串以'\0'結尾,目標空間必須足夠大,

模擬實現

char *my_strcat(char *dst, const char *str)

while ((*ret++ = *str++))

return dst;

}

strcmp

int strcmp(const char *str1, const char *str2);
第乙個字串大於第二個字串,返回乙個大於0的數字

第乙個字串等於第二個字串 ,返回0

第乙個字串小於第二個字串,返回乙個小於0的數字

模擬實現

int my_strcmp(const char *str1, const char *str2)

if (*str1 == '\0' && *str2 == '\0')

return 0;

else

}

長度受限制的字串函式

strncpy

char *strncmp(char *destination, const char*source, size_t num);
拷貝num個字元從源字串到目標字串,如果源字串的長度小於num,拷貝完源字串後,在目標字串後追加0,知道num個

模擬實現

char* my_strncpy(char *des, const char *sstr, int count)

if (count>0) }

else

return des;

}

strncat

char *strncat(char *destination, const char *source, size_t);
模擬實現

char *my_strncat(char *dst, const char *str, int count)

while (count && (*ret++ = *str++))

*ret = '\0';

return dst;

}

strncmp

int strncmp(const char *str1, const char *str2, size_t num);
模擬實現

int my_strncmp(const char *dst, const char *str, int n)

else if (*dst < *str)

dst++,str++;

n--;

} if (n == 0)

return 0;

}

字串查詢

strchr

char *strchr( const char *string, int c );//返回第乙個出現目標字元的指標
strrchr

char *strrchr( const char *string, int c );//從後往前找第乙個出現目標字元的指標
strpbrk

char *strpbrk( const char *string, const char *strcharset );//返回第乙個字串中第乙個出現在第二個字串中的字元的位址
strstr

char *strstr( const char *string, const char *strcharset );//找子串
模擬實現

char *my_strstr(const char *str1, const char *str2)

if (*substr == '\0')

return cp;

cp++;

}}

strspn

size_t strspn( const char *str1, const char *str2 );//返回str1字串中開始部分匹配str2字串中的字元個數
strcspn

size_t strcspn( const char *str1, const char *str2);//返回str1指向字串中開始部分出現的不在str2指向字串中的字元個數
strtok

char *strtok( char *str, const char *dst );//dst定義了分隔符的字元集合

//找到str中的下乙個分隔符標記並用\0結尾,返回乙個指向這個標記的指標

//第乙個引數不為null,找到str中的第乙個標記,儲存他在字串中位置

//第乙個引數為null,函式在同乙個字串中被儲存的位置開始,查詢下乙個標記

//字串中不存在更多的標記,返回null

錯誤資訊報告

strerror

char *strerror( int errnum );//返回錯誤碼,對應的錯誤資訊
記憶體操作函式(操作基本單元是位元組)

memcpy

void *memcpy( void *dest, const void *src, size_t count );//void *可以被定義,不能被解引用
函式從src的位置開始向後複製count個位元組的資料到dest的記憶體位置

遇到'\0'並不會停下來,如果dest和src有重疊,其複製結果未定義

模擬實現

void *my_memcpy(void *dest, void *src, int count)

return dest;

}

memmove

void *memmove( void *dest, const void *src, size_t count );
memmove函式處理的源記憶體塊和目標記憶體塊是可以重疊的,

模擬實現

void *my_memmove(void *dst, const void *src, int count)

} else }

return dst;

}

memset

void *memset( void *dest, int c, size_t count );
以位元組為基本單位,初始化每個位元組為c

memcmp

int memcmp( const void *buf1, const void *buf2, size_t count );
比較buf1和buf2指標開始的count個位元組

memchr

void *memchr( const void *buf, int c, size_t count );

字串和字串函式

字元輸入輸出 getchar putchar ch getchar putchar ch 字串函式 字串輸入 建立儲存空間 接受字串輸入首先需要建立乙個空間來存放輸入的字串。char name scanf s name 上述的用法可能會導致程式異常終止。使用字串陣列 可以避免上述問題 char na...

字串和字串函式

1.字串字面量 字串常量 用雙引號括起來的內容稱為字串字面量,也叫字串常量。字串常量屬於靜態儲存類別,這說明如果在函式中使用字串常量,該字串只會被儲存一次,在整個程式的生命期內存在,計時函式被呼叫多次。用雙引號括起來的內容被視為指向該字串儲存位置的指標。hello 中的 hello 類似於乙個陣列名...

字元函式和字串函式

size t strlen const char str 模擬實現strlen 字串長度 include include size t mystrlen const char str return count int main 字串拷貝 char strcpy char destination,co...