字符串函數(shù)【上】:【C語言】【字符串函數(shù)】【超詳解】【上】?。?!-CSDN博客
前言:
在上一篇中,我們已經(jīng)詳細講解了C語言字符串函數(shù)中用到最多的幾種函數(shù)的使用及其模擬實現(xiàn),本篇我們就將學習C語言字符串函數(shù)中,一些非常實用但稍有難度的幾個字符串函數(shù)。
1.strncpy函數(shù)的使用
char * strncpy ( char * destination,const char * scource,size_t num );
1、此函數(shù)可以指定復制num個字符
2、如果源字符個數(shù)小于num,那就在目標字符后追加0,直到到num個
2.strncat函數(shù)的使用
char * strncat ( char * destination,const char * source,size_t num );
如果source指向的字符串的?度?于num的時候,只會將字符串中到\0 的內容追加到destination指向的字符串末尾
?
strncat函數(shù)的使用:
/* strncat example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[20];
char str2[20];
strcpy (str1,"To be ");
strcpy (str2,"or not to be");
strncat (str1, str2, 6);
printf("%s\n", str1);
return 0;
}
3.strncmp函數(shù)的使用
int strncmp ( const char * str1, const char * str2, size_t num );
?較str1和str2的前num個字符,如果相等就繼續(xù)往后?較,最多?較num個字?,如果提前發(fā)現(xiàn)不?樣,就提前結束,?的字符所在的字符串?于另外?個。如果num個字符都相等,就是相等返回0
4.strstr函數(shù)的使用
char * strstr ( const char * str1, const char * str2);
1、函數(shù)返回字符串str2在字符串str1中第?次出現(xiàn)的位置
2、字符串的?較匹配不包含 \0 字符,以 \0 作為結束標志
strstr函數(shù)的使用
/* strstr example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] ="This is a simple string";
char * pch;
pch = strstr (str,"simple");
strncpy (pch,"sample",6);
printf("%s\n", str);
return 0;
}
strstr的模擬實現(xiàn):
char * strstr (const char * str1, const char * str2)
{
char *cp = (char *) str1;
char *s1, *s2;
if ( !*str2 )
return((char *)str1);
while (*cp)
{
s1 = cp;
s2 = (char *) str2;
while ( *s1 && *s2 && !(*s1-*s2) )
s1++, s2++;
if (!*s2)
return(cp);
cp++;
}
return(NULL);
}
5、strtok函數(shù)的使用
char * strtok ( char * str, const char * sep);
sep參數(shù)指向?個字符串,定義了?作分隔符的字符集合
? 第?個參數(shù)指定?個字符串,它包含了0個或者多個由sep字符串中?個或者多個分隔符分割的標
記。
? strtok函數(shù)找到str中的下?個標記,并將其? \0 結尾,返回?個指向這個標記的指針。(注:
strtok函數(shù)會改變被操作的字符串,所以在使?strtok函數(shù)切分的字符串?般都是臨時拷?的內容并且可修改。)
? strtok函數(shù)的第?個參數(shù)不為 NULL ,函數(shù)將找到str中第?個標記,strtok函數(shù)將保存它在字符串
中的位置。
? strtok函數(shù)的第?個參數(shù)為 NULL ,函數(shù)將在同?個字符串中被保存的位置開始,查找下?個標記。
? 如果字符串中不存在更多的標記,則返回 NULL 指針。
?
include <stdio.h>
#include <string.h>
int main()
{
char arr[] = "192.168.6.111";
char* sep = ".";
char* str = NULL;
for (str = strtok(arr, sep); str != NULL; str = strtok(NULL, sep))
{
printf("%s\n", str);
}
return 0;
}
總結:
總的來說字符串函數(shù)還是非常多非常有難度性的,上面所講到的也不全,要想了解更多字符串函數(shù)的知識就需要進一步學習文章來源:http://www.zghlxwxcb.cn/news/detail-841147.html
鑒于本人水平有限,如果文中有錯誤或者有不理解之處還請指出,創(chuàng)作不易,還請一鍵三連。文章來源地址http://www.zghlxwxcb.cn/news/detail-841147.html
到了這里,關于【C語言】【字符串函數(shù)】【超詳解】【下】?。?!的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!