国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

3.2 字符串函數(shù)的實(shí)現(xiàn)

2019-11-08 20:21:04
字體:
供稿:網(wǎng)友

1. strlen

需要引入 string.h 頭文件

#include <string.h>

1.1 使用strlen

size_t strlen(const char *s); 返回 s 的字符串長度(不包括結(jié)尾的 /0)

#include<stdio.h>#include<string.h>int main(int argc,char const *argv[]){ char line[] = "Hello"; 1.2 自定義mylen#include<stdio.h>#include<string.h>size_t mylen(const char* s){ int index = 0; while(s[index] != '/0'){ index++; } return index;}int main(int argc,char const *argv[]){ char line[] = "Hello"; printf("strlen=%d/n", strlen(line)); // strlen=5 printf("sizeof=%d/n", sizeof(line)); // sizeof=6 printf("mylen=%d/n", mylen("Hello")); // mylen=5 return 0;}

2. strcmp

int strcmp(const char *s1, const char *s2);比較兩個(gè)字符串,返回 0:s1 == s21:s1 > s2-1:s1 < s2

2.1 使用strcmp

#include<stdio.h>#include<string.h>int main(int argc,char const *argv[]){ char s1[] = "abc"; // s1 存的是 abc/0 char s2[] = "abc"; printf("%d/n", s1 == s2); // 0 s1==s2 比較的是地址 printf("%d/n", strcmp(s1, s2)); // 0 strcmp 比較的是ASCII碼值,空格的 ASCII是32,/0的ASCII碼值是 0 char s3[] = "bbc"; printf("%d/n", strcmp(s1, s3)); // -1 char s4[] = "Abc"; printf("%d", strcmp(s1, s4)); // 1 return 0;}

2.2 自定義mycmp

#include<stdio.h>#include<string.h>int mycmp1(const char *s1, const char *s2){ int index = 0; while(1){ if(s1[index] != s2[index]) { break; } else if( s1[index] == '/0') { break; } index++; } return s1[index] - s2[index]; } int mycmp2(const char *s1, const char *s2){ int index = 0; while(s1[index] == s2[index] && s1[index] != '/0'){ index++; } return s1[index] - s2[index];}int mycmp(const char* s1, const char* s2){ while(*s1 == * s2 && *s1 != '/0'){ s1++; s2++; } return *s1 - *s2;}int main(int argc,char const *argv[]){ char s1[] = "abc"; char s2[] = "ab"; printf("%d/n", mycmp(s1, s2)); // 99 char s3[] = "Abc"; printf("%d/n", mycmp(s1, s3)); // 32 printf("%d/n", 'a' - 'A'); // 32 return 0;}

3. strcpy

char* strcpy(char *restrict des, const char *restrict src);把 src 拷貝到 desrestrict 表明 des 和 src 不重疊(C99),多核復(fù)制時(shí) 重疊會(huì)出錯(cuò)返回des

3.1 使用 strcpy

#include<stdio.h>#include<stdlib.h>#include<string.h>int main(int argc,char const *argv[]){ char src[] = "Hello"; char *dst = (char*)malloc(strlen(src) + 1); strcpy(dst, src); printf("%c/n", dst[0]); return 0;}

3.2 自定義 mycpy

#include<stdio.h>#include<string.h>char* mycpy1(char *dst, const char *src){ int index = 0; while(src[index]){ dst[index] = src[index]; index++; } dst[index] = '/0'; return dst;}char* mycpy2(char* dst, const char* src){ while(*src != '/0'){ *dst = *src; dst++; src++; } *dst = '/0'; return dst;}char* mycpy3(char* dst, const char* src){ char* ret = dst; while(*src != '/0'){ *dst++ = *src++; } *dst = '/0'; return ret;}char* mycpy(char* dst, const char* src){ char* ret = dst; while(*dst++ = *src++){ ; } *dst = '/0'; return ret;}int main(int argc,char const *argv[]){ char s1[] = "Hello"; char s2[10]; mycpy(s2, s1); printf("%c/n", s2[1]); // e return 0;}

4. strchr 與 strrchr

char* strchr(const char *s, int c); // 查找某字符在字符串中首次出現(xiàn)的位置char * strrchr(const char *str, int c); // 函數(shù)用于查找某字符在字符串中最后一次出現(xiàn)的位置返回NULL表示沒用找到

4.1 使用strchr 與 strrchr

#include<stdio.h>#include<string.h>int main(int argc,char const *argv[]){ char s[] = "Hello"; char *p = strchr(s, 'l'); printf("%s/n", p); // llo printf("%s/n",strrchr(s, 'l')); // lo 查找最后一個(gè) l // 查找第2個(gè) l char s1[] = "Helllo"; char *q = strchr(s1, 'l'); q = strchr(q + 1, 'l'); printf("%s/n", q); // llo return 0;}

5.strstr 與 strcasestr

char* strstr(const char *s1, const char *s2); // 查找s2 在s1 中的第一次出現(xiàn)的位置,返回s1的其余部分(從匹配點(diǎn))。如果未找到所搜索的字符串,則返回 false。s2為空,返回s1char* strcasestr(const char *s1, const char *s2); // 忽略大小寫,不是標(biāo)準(zhǔn)庫函數(shù)#include<stdio.h>#include<string.h>int main(int argc,char const *argv[]){ char s1[] = "HelloWorld---"; char s2[] = "World"; char* ret1 = strstr(s1, s2); printf("%s/n", ret1); // World--- return 0;}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 土默特左旗| 柞水县| 集贤县| 比如县| 凤山县| 罗城| 东台市| 如东县| 同德县| 安乡县| 庆阳市| 柘荣县| 玉树县| 黑龙江省| 游戏| 宜都市| 铜陵市| 望奎县| 团风县| 禹城市| 凤山市| 武宣县| 兴义市| 临邑县| 万全县| 湟源县| 兴和县| 大同市| 新干县| 巴塘县| 当雄县| 和政县| 繁峙县| 兴安盟| 安远县| 新营市| 宣恩县| 吉安市| 邓州市| 延安市| 乌拉特前旗|