c语言str函数(c语言string的用法大全) |
您所在的位置:网站首页 › c语言的memcmp › c语言str函数(c语言string的用法大全) |
本文目录c语言string的用法大全c语言 str函数c语言中strlen、str、len分别指的是什么意思C语言strtol()函数用法C语言的字符数组str[]的定义和用法c++中c_str()用法,越详细越好C语言中,strstr函数的功能是什么不用库函数,自己写怎么写c语言中str是什么意思C语言中strstr()函数的使用分析c++中c_str()用法c语言string的用法大全 C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C 语言string的用法有哪些呢,请看看下面我为你整理 总结 的c语言string的用法大全_C语言中string使用 方法 。
c语言string的用法 函数原型:char *strdup(const char *s) 函数功能:字符串拷贝,目的空间由该函数分配 函数返回:指向拷贝后的字符串指针 参数说明:src-待拷贝的源字符串 所属文件:《string.h》 view plain #include《stdio.h》 #include《string.h》 #include《alloc.h》 intmain() { char*dup_str,*string=“abcde“; dup_str=strdup(string); printf(“%s“,dup_str); free(dup_str); return0; } @函数名称:strcpy 函数原型:char* strcpy(char* str1,char* str2); 函数功能:把str2指向的字符串拷贝到str1中去 函数返回:返回str1,即指向str1的指针 参数说明: 所属文件:《string.h》 view plain #include《stdio.h》 #include《string.h》 intmain() { charstring; char*str1=“abcdefghi“; strcpy(string,str1); printf(“thestringis:%s\n“,string); return0; } @函数名称:strncpy 函数原型:char *strncpy(char *dest, const char *src,intcount) 函数功能:将字符串src中的count个字符拷贝到字符串dest中去 函数返回:指向dest的指针 参数说明:dest-目的字符串,src-源字符串,count-拷贝的字符个数 所属文件:《string.h》 view plain #include《stdio.h》 #include《string.h》 intmain() { char*src=“bbbbbbbbbbbbbbbbbbbb“;//20’b’s chardest=“aaaaaaaaaaaaaaaaaaaa“;//20’a’s puts(dest); strncpy(dest,src,10); puts(dest); return0; } 输出: view plain /******************************************* aaaaaaaaaaaaaaaaaaaa bbbbbbbbbbaaaaaaaaaa *******************************************/ 注意:strncpy只复制指定长度的字符,不会自动在末尾加’\0’。若指定长度超过源字符串长度,不够的部分补‘\0’, @函数名称:strcat 函数原型:char* strcat(char * str1,char * str2); 函数功能:把字符串str2接到str1后面,str1最后的’\0’被取消 函数返回:str1 参数说明: 所属文件:《string.h》 view plain #include《stdio.h》 #include《string.h》 intmain() { charbuffer; strcpy(buffer,“Hello“); strcat(buffer,“world“); printf(“%s\n“,buffer); return0; } @函数名称:strncat 函数原型:char *strncat(char *dest, const char *src, size_t maxlen) 函数功能:将字符串src中前maxlen个字符连接到dest中 函数返回: 参数说明: 所属文件:《string.h》 view plain #include《stdio.h》 #include《string.h》 charbuffer; intmain() { strcpy(buffer,“Hello“); strncat(buffer,“world“,8); printf(“%s\n“,buffer); strncat(buffer,“*************“,4); printf(“%s\n“,buffer); return0; } 注意:与strncpy不同的是,strncat会自动在末尾加‘\0’,若指定长度超过源字符串长度,则只复制源字符串长度即停止 @函数名称:strcmp 函数原型:int strcmp(char * str1,char * str2); 函数功能:比较两个字符串str1,str2. 函数返回:str1《str2,返回负数;str1=str2,返回 0;str1》str2,返回正数. 参数说明: 所属文件:《string.h》 view plain #include《string.h》 #include《stdio.h》 intmain() { char*buf1=“aaa“,*buf2=“bbb“,*buf3=“ccc“; intptr; ptr=strcmp(buf2,buf1); if(ptr》0) printf(“buffer2isgreaterthanbuffer1\n“); else printf(“buffer2islessthanbuffer1\n“); ptr=strcmp(buf2,buf3); if(ptr》0) printf(“buffer2isgreaterthanbuffer3\n“); else printf(“buffer2islessthanbuffer3\n“); return0; } @函数名称:strncmp 函数原型:int strncmp(char *str1,char *str2,int count) 函数功能:对str1和str2中的前count个字符按字典顺序比较 函数返回:小于0:str1《str2,等于0:str1=str2,大于0:str1》str2 参数说明:str1,str2-待比较的字符串,count-比较的长度 所属文件:《string.h》 view plain #include《string.h》 #include《stdio.h》 intmain() { charstr1=“aabbc“;// charstr2=“abbcd“;// //为使测试程序更简练,此处假定了strncmp只返回-1,0,1三个数 charres_info={’《’,’=’,’》’}; intres; //前1个字符比较 res=strncmp(str1,str2,1); printf(“1:str1%cstr2\n“,res_info); //前3个字符比较 res=strncmp(str1,str2,3); printf(“3:str1%cstr2\n“,res_info); } 输出: view plain /**************************************** 1:str1=str2 3:str1《str2 *****************************************/ @函数名称:strpbrk 函数原型:char *strpbrk(const char *s1, const char *s2) 函数功能:得到s1中第一个“同时也出现在s2中”字符的位置指针 函数返回:位置指针 参数说明: 所属文件:《string.h》 view plain #include《stdio.h》 #include《string.h》 intmain() { char*p=“Findallvowels“; p=strpbrk(p+1,“aeiouAEIOU“); while(p) { printf(“%s\n“,p); p=strpbrk(p+1,“aeiouAEIOU“); } return0; } 输出: view plain /************************************** indallvowels allvowels owels els **************************************/ @函数名称:strcspn 函数原型:int strcspn(const char *s1, const char *s2) 函数功能:统计s1中从头开始直到第一个“来自s2中的字符”出现的长度 函数返回:长度 参数说明: 所属文件:《string.h》 view plain #include《stdio.h》 #include《string.h》 intmain() { printf(“%d\n“,strcspn(“abcbcadef“,“cba“)); printf(“%d\n“,strcspn(“xxxbcadef“,“cba“)); printf(“%d\n“,strcspn(“123456789“,“cba“)); return0; } 输出: view plain /************************ 0 3 9 ************************/ @函数名称:strspn 函数原型:int strspn(const char *s1, const char *s2) 函数功能:统计s1中从头开始直到第一个“不来自s2中的字符”出现的长度 函数返回:位置指针 参数说明: 所属文件:《string.h》 view plain #include《stdio.h》 #include《string.h》 #include《alloc.h》 intmain() { printf(“%d\n“,strspn(“abcbcadef“,“cba“)); printf(“%d\n“,strspn(“xxxbcadef“,“cba“)); printf(“%d\n“,strspn(“123456789“,“cba“)); return0; } 输出: view plain /************************ 6 0 0 ************************/ @函数名称:strchr 函数原型:char* strchr(char* str,char ch); 函数功能:找出str指向的字符串中第一次出现字符ch的位置 函数返回:返回指向该位置的指针,如找不到,则返回空指针 参数说明:str-待搜索的字符串,ch-查找的字符 所属文件:《string.h》 view plain #include《string.h》 #include《stdio.h》 intmain() { char*str=“Thisisastring!“; charch; char*p; while(1) { printf(“Pleaseinputachar:“); ch=getchar(); p=strchr(str,ch); if(p) printf(“%cisthe%dcharacterof\“%s\“\n“,ch,(int)(p-str+1),str); else printf(“Notfound!\n“); printf(“PressESCtoquit!\n\n“); if(27==getch()) break; fflush(stdin); } return0; } 运行结果: view plain /******************************************** Pleaseinputachar:i iisthe3characterof“Thisisastring!“ PressESCtoquit! Pleaseinputachar:l Notfound! PressESCtoquit! Pleaseinputachar:s sisthe4characterof“Thisisastring!“ PressESCtoquit! **********************************************/ @函数名称:strrchr 函数原型:char *strrchr(const char *s, int c) 函数功能:得到字符串s中最后一个含有c字符的位置指针 函数返回:位置指针 参数说明: 所属文件:《string.h》 view plain #include《string.h》 #include《stdio.h》 intmain() { charstring; char*ptr,c=’r’; strcpy(string,“Thisisastring“); ptr=strrchr(string,c); if(ptr) printf(“Thecharacter%cisatposition:%d“,c,ptr-string); else printf(“Thecharacterwasnotfound“); return0; } @函数名称:strstr 函数原型:char* strstr(char* str1,char* str2); 函数功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符) 函数返回:返回该位置的指针,如找不到,返回空指针 参数说明: 所属文件:《string.h》 view plain #include《stdio.h》 #include《string.h》 intmain() { char*str1=“OpenWatcomC/C++“,*str2=“Watcom“,*ptr; ptr=strstr(str1,str2); printf(“Thesubstringis:%s\n“,ptr); return0; } 输出: The substringis:Watcom C/C++ @函数名称:strrev 函数原型:char *strrev(char *s) 函数功能:将字符串中的所有字符颠倒次序排列 函数返回:指向s的指针 参数说明: 所属文件:《string.h》 view plain #include《string.h》 #include《stdio.h》 intmain() { charforward=“string“;//原文中定义为char*是不对的,指向代码段的指针内容是不可变的 printf(“Beforestrrev():%s“,forward); strrev(forward); printf(“Afterstrrev():%s“,forward); return0; } 输出: view plain /************************************ Beforestrrev():string Afterstrrev():gnirts ************************************/ @函数名称:strnset 函数原型:char *strnset(char *s, int ch, size_t n) 函数功能:将字符串s中前n个字符设置为ch的值 函数返回:指向s的指针 参数说明: 所属文件:《string.h》 view plain #include《stdio.h》 #include《string.h》 intmain() { charstring=“aaaaaaaaaaaaaaaaaaaaaaa“; charletter=’x’; printf(“stringbeforestrnset:%s\n“,string); strnset(string,letter,10); printf(“stringafterstrnset:%s\n“,string); return0; } 输出: view plain /************************************************* stringbeforestrnset:aaaaaaaaaaaaaaaaaaaaaaa stringafterstrnset:xxxxxxxxxxaaaaaaaaaaaaa *************************************************/ @函数名称:strset 函数原型:char *strset(char *s, int ch) 函数功能:将字符串s中所有字符设置为ch的值 函数返回:指向s的指针 参数说明: 所属文件:《string.h》 view plain #include《stdio.h》 #include《string.h》 intmain() { charstring=“123456789“; charsymbol=’c’; printf(“Beforestrset():%s“,string); strset(string,symbol); printf(“Afterstrset():%s“,string); return0; } @函数名称:strtok 函数原型:char *strtok(char *s1, const char *s2) 函数功能:分解s1字符串为用特定分隔符分隔的多个字符串(一般用于将英文句分解为单词) 函数返回:字符串s1中首次出现s2中的字符前的子字符串指针 参数说明:s2一般设置为s1中的分隔字符 规定进行子调用时(即分割s1的第二、三及后续子串)第一参数必须是NULL 在每一次匹配成功后,将s1中分割出的子串位置替换为NULL(摘下链中第一个环),因此s1被破坏了 函数会记忆指针位置以供下一次调用 所属文件:《string.h》 view plain #include《string.h》 #include《stdio.h》 intmain() { char*p; char*buffer; char*delims={“.,“}; buffer=strdup(“Findwords,allofthem.“); printf(“%s\n“,buffer); p=strtok(buffer,delims); while(p!=NULL){ printf(“word:%s\n“,p); p=strtok(NULL,delims); } printf(“%s\n“,buffer); return0; }//根据测试,可以随时给strtok的第一个参数输入一个新的字符串,开始新字符串的分隔 PS:根据测试,可以随时给strtok的第一个参数输入一个新的字符串,开始新字符串的分隔 @函数名称:strupr 函数原型:char *strupr(char *s) 函数功能:将字符串s中的字符变为大写 函数返回: 参数说明: 所属文件:《string.h》 view plain #include《stdio.h》 #include《string.h》 intmain() { charstring来声明 ptr=strupr(string); printf(“%s“,ptr); return0; } @函数名称:strlwr 函数原型:char *strlwr(char *s) 函数功能:将字符串中的字符变为小写字符 函数返回:指向s的指针 参数说明: 所属文件:《string.h》 view plain #include《string.h》 intmain() { charstr=“HOWTOSAY“; printf(“%s“,strlwr(str)); return0; } @函数名称:strerror 函数原型:char *strerror(int errnum) 函数功能:得到错误信息的内容信息 函数返回:错误提示信息字符串指针 参数说明:errnum-错误编号 所属文件:《string.h》 view plain #include《stdio.h》 #include《errno.h》 intmain() { char*buffer; buffer=strerror(errno); printf(“Error:%s“,buffer); return0; } @函数名称:memcpy 函数原型:void *memcpy(void *dest, const void *src, size_t n) 函数功能:字符串拷贝 函数返回:指向dest的指针 参数说明:src-源字符串,n-拷贝的最大长度 所属文件:《string.h》,《mem.h》 view plain #include《stdio.h》 #include《string.h》 intmain() { charsrc=“******************************“; chardest=“abcdefghijlkmnopqrstuvwxyz0123456709“; char*ptr; printf(“destinationbeforememcpy:%s\n“,dest); ptr=memcpy(dest,src,strlen(src)); if(ptr) printf(“destinationaftermemcpy:%s\n“,dest); else printf(“memcpyfailed“); return0; } 输出: view plain /************************************************************* destinationbeforememcpy:abcdefghijlkmnopqrstuvwxyz0123456709 destinationaftermemcpy:******************************456709 **************************************************************/ @函数名称:memccpy 函数原型:void *memccpy(void *dest, const void *src, int c, size_t n) 函数功能:字符串拷贝,到指定长度或遇到指定字符时停止拷贝 函数返回: 参数说明:src-源字符串指针,c-中止拷贝检查字符,n-长度,dest-拷贝底目的字符串指针 所属文件:《string.h》,《mem.h》 view plain #include《string.h》 #include《stdio.h》 intmain() { char*src=“Thisisthesourcestring“; chardest; char*ptr; ptr=memccpy(dest,src,’c’,strlen(src)); if(ptr) { *ptr=’\0’; printf(“Thecharacterwasfound:%s“,dest); } else printf(“Thecharacterwasn’tfound“); return0; } 输出: view plain /***************************************** Thecharacterwasfound:Thisisthesourc *****************************************/ PS:指定字符被复制到dest中,memccpy返回了dest中指定字符的下一处的地址,返回NULL表示未遇到指定字符 @函数名称:memchr 函数原型:void *memchr(const void *s, int c, size_t n) 函数功能:在字符串中第开始n个字符中寻找某个字符c的位置 函数返回:返回c的位置指针,返回NULL时表示未找到 参数说明:s-要搜索的字符串,c-要寻找的字符,n-指定长度 所属文件:《string.h》,《mem.h》 view plain #include《string.h》 #include《stdio.h》 intmain() { charstr; char*ptr; strcpy(str,“Thisisastring“); ptr=memchr(str,’r’,strlen(str)); if(ptr) printf(“Thecharacter’r’isatposition:%d“,ptr-str); else printf(“Thecharacterwasnotfound“); return0; } @函数名称:memcmp 函数原型:int memcmp(const void *s1, const void *s2,size_t n) 函数功能:按字典顺序比较两个串s1和s2的前n个字节 函数返回:《0,=0,》0分别表示s1《,=,》s2 参数说明:s1,s2-要比较的字符串,n-比较的长度 所属文件:《string.h》,《mem.h》 view plain #include《stdio.h》 #include《string.h》 intmain() { char*buf1=“ABCDE123“; char*buf2=“abcde456“; intstat; stat=memcmp(buf1,buf2,5); printf(“Thestringstoposition5are“); if(stat)printf(“not“); printf(“thesame\n“); return0; } @函数名称:memicmp 函数原型:int memicmp(const void *s1, const void *s2, size_t n) 函数功能:按字典顺序、不考虑字母大小写对字符串s1,s2前n个字符比较 函数返回:《0,=0,》0分别表示s1《,=,》s2 参数说明:s1,s2-要比较的字符串,n-比较的长度 所属文件:《string.h》,《mem.h》 view plain #include《stdio.h》 #include《string.h》 intmain() { char*buf1=“ABCDE123“; char*buf2=“abcde456“; intstat; stat=memicmp(buf1,buf2,5); printf(“Thestringstoposition5are“); if(stat)printf(“not“); printf(“thesame“); return0; } 输出: view plain /************************************** Thestringstoposition5arethesame ***************************************/ @函数名称:memmove 函数原型:void *memmove(void *dest, const void *src, size_t n) 函数功能:字符串拷贝 函数返回:指向dest的指针 参数说明:src-源字符串,n-拷贝的最大长度 所属文件:《string.h》,《mem.h》 view plain #include《string.h》 #include《stdio.h》 intmain() { chardest=“abcdefghijklmnopqrstuvwxyz0123456789“; printf(“destinationpriortomemmove:%s\n“,dest); memmove(dest+1,dest,35); printf(“destinationaftermemmove:%s“,dest); return0; } PS:与memcpy不同的是,memmove可以处理目的字符串与源字符串地址空间出现重叠的情况,可保证待复制的内容不被破坏。 @函数名称: memset 函数原型: void *memset(void *s, int c, size_t n) 函数功能: 字符串中的n个字节内容设置为c 函数返回: 参数说明: s-要设置的字符串,c-设置的内容,n-长度 所属文件: 《string.h》,《mem.h》 view plain #include《string.h》 #include《stdio.h》 #include《mem.h》 intmain() { charbuffer=“Helloworld“; printf(“Bufferbeforememset:%s/n“,buffer); memset(buffer,’*’,strlen(buffer)-1); printf(“Bufferaftermemset:%s“,buffer); return0; }
c语言string的用法大全相关 文章 : ★ c语言string的用法 ★ c语言的用法 ★ Linux C语言字符与字符串处理 ★ c语言中strcmp的用法 ★ c语言大括号的用法 ★ c语言位运算符的用法 ★ c语言char的用法 ★ c语言中sort的用法详解 ★ c语言中int的用法 ★ c语言map的用法 c语言 str函数1、strcat() 此函数原型为 char *strcat(char *dest, const char *src). 功能为连接两个字符串,把src连接到dest后面;返回dest地址 实现如下 view plaincopy char * strcat(char *dest,const char *src) { char* addr=dest; while(*dest)//找到’\0’ { dest++; }; while(*dest++=*src++) {}; return addr; } 2、strcmp() 此函数的函数原型为 int strcmp(const char *str1, const char *str2). 功能为比较两个字符串。 当str1指向的字符串大于str2指向的字符串时,返回正数。 当str1指向的字符串等于str2指向的字符串时,返回0。 当str1指向的字符串小于str2指向的字符串时,返回负数。 实现如下: view plaincopy int strcmp(const char *str1, const char *str2) { while(*str1==*str2) { if(*str1==’\0’) return 0; str1++; str2++; } return *str1-*str2; } 3、strcpy() 此函数原型为 char *strcpy(char* dest, const char *src) 功能为拷贝字符串内容到目的串,把src所指向的内容拷贝到dest 实现如下 view plaincopy char *strcpy(char *dest,const char *src) { //assert(dest!=NULL&&src!=NULL); char *addr=dest; while(*dest++=*src++); return addr; } 4、strlen() 此函数原型为unsigned in strlen(const char *str) 功能为返回字符串str的长度(不包括’\0’)。 实现如下: view plaincopy unsigned int strlen(const char *str) { unsigned len=0; while(*str!=’\0’) { len++; str++; } return len; } 5、strchr() strrchr() char *strchr(char *str, char c) 功能为查找str中首次出现c的位置,如有有,则返回出现位置,否则返回NULL。实现如下: view plaincopy char *strchr(char *str, char c) { while(*str!=’\0’&&*str!=c) { str++; } return (*str==c? str: NULL); } char *strrchr(char *str, char c) 功能为查找str中最后一次出现c的位置,如有有,则返回出现位置,否则返回NULL。实现如下: view plaincopy char *strrchr(char *str, char c) { char *p=str+strlen(str);//p指向最后一个字符 while(p!=str&&*p!=c) p--; if(p==str&&*p!=c) return NULL; else return p; } 6、strcspn() strspn() strcspn 原型:size_t strcspn(const char *pstr, const char *strCharset) MSDN解释为:在字符串pstr中搜寻strCharsret中所出现的字符,返回strCharset中出现的第一个字符在pstr中的出现位置。简单的说,若strcspn返回的数值为n,则代表字符串strCharsrt开头连续有n个字符不包含在pstr内的字符。 功能:返回后面字符串中第一个不在前者出现的下表。 7、strdup() 此函数原型为char *strdup(const char *str) 功能为拷贝字符串到新建的内存,返回内存指针。若失败,返回NULL。要注意,返回的指针指向的内存在堆中,所以要手动释放。 函数实现: view plaincopy char *strdup(const char *str) { char *p=NULL; if(str&&(p=(char*)malloc(strlen(str)+1))) strcpy(p,str); return p; 8、strrev() 此函数的原型为char *strrev(char *str) 功能为反转字符串,返回字符串指针。 函数实现: view plaincopy char *strrev(char *str) { if(str==NULL) return NULL; char *start=str; char *end=str+strlen(str)-1; char temp; while(start《end) { temp=*start; *start=*end; *end=temp; start++; end--; } return str; } 9、strstr() 函数原型为char *strstr(const char str1, const char *str2) 功能为查找字符串str2在str1中出现的位置,找到则返回位置,否则返回NULL。 函数实现: view plaincopy char *strstr(const char str1, const char *str2) { int length1=strlen(str1); int length3=strlen(str2); while(length1》=length3) { length1--; if(!strncpy(str1,str2,length3))//比较前n个字符串,类似strcpy return str1; str1++; } return NULL; } c语言中strlen、str、len分别指的是什么意思strlen -- 计算字符串长度的库函数名。str -- 通常,程序员喜欢用它作 字符串 变量名。它是 string(英文词 字符串 的缩写) len -- 通常,程序员喜欢用它作 变量名。它是 length(英文词 长度 的缩写)。例如:char str=“I am a student“;int len;len = strlen(str);printf(“the string length is: %d“,len); C语言strtol()函数用法C 库函数 - strtol(): C 标准库 - 《stdlib.h》 描述C 库函数 long int strtol(const char *str, char **endptr, int base) 把参数 str 所指向的字符串根据给定的 base 转换为一个长整数(类型为 long int 型),base 必须介于 2 和 36(包含)之间,或者是特殊值 0。 strtol() 函数的声明 long int strtol(const char *str, char **endptr, int base)参数str -- 要转换为长整数的字符串。endptr -- 对类型为 char* 的对象的引用,其值由函数设置为 str 中数值后的下一个字符。base -- 基数,必须介于 2 和 36(包含)之间,或者是特殊值 0。返回值该函数返回转换后的长整数,如果没有执行有效的转换,则返回一个零值。 实例下面的实例演示了 strtol() 函数的用法。 #include 《stdio.h》 #include 《stdlib.h》 int main() { char str = “2030300 This is test“; char *ptr; long ret; ret = strtol(str, &ptr, 10); printf(“数字(无符号长整数)是 %ld\n“, ret); printf(“字符串部分是 |%s|“, ptr); return(0);} 让我们编译并运行上面的程序, 这将产生以下结果:数字(无符号长整数)是 2030300 this is a test. C语言的字符数组str[]的定义和用法.;以此类推第二个式子和第一个式子差不多可以说第2个式子就是strcpy函数的工作原理首先将k定为数组下界然后每次循环自减1n为制定的循环次数这个循环是将后一项数组元素赋值给前一项也就实现了你说的将第m个字符后面的字符顺序向前移动一个位置别说你没学数组不知道下界.,&str).;也就是strcpy(&str..;也就是strcpy(&str表示这是个数组m是一个变量举个列子你就知道了当m=0时这个式子等价于strcpy(&str)?当m=1时这个式子等价于strcpy(&str)..那你的好好补补基础,&str).;strcpy()函数是干什么的不要多说吧 c++中c_str()用法,越详细越好应该这样用: char c; string s=“1234“; strcpy(c,s.c_str()); 这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作。 语法: const char *c_str(); c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同.,这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。 注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针。 扩展资料:关于上述用法种最好不要这样用 const char* c; std::string s = “1234“; c = s.c_str(); std::cout 《《 c 《《 std::endl; //输出:1234 s = “abcd“; std::cout 《《 c 《《 std::endl; //输出:abcd 上面如果继续用c指针的话,导致的错误将是不可想象的,就如:1234变为abcd。 C语言中,strstr函数的功能是什么不用库函数,自己写怎么写C语言中,strstr函数的功能是寻找字符串中子串出现的位置,自己写的步骤如下。 需要准备的材料分别有:电脑、C语言编译器。 1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。 2、在test.cpp文件中,输入C语言代码:。 int fun(char *a, char *b) { int i, j, alen = strlen(a), blen = strlen(b); for (i = 0; i 《 alen - blen + 1; i++) if (a) { for (j = 1; j 《 blen; j++) if (a)break; if (j == blen) return i; } return -1; } 3、编译器运行test.cpp文件,此时成功实现了strstr实现了字符串查找。 c语言中str是什么意思str -- 通常,程序员喜欢用它作字符串变量名。它是 string(英文词、字符串的缩写) Str函数,返回代表一数值的 Variant(String)。语法Str(number)必要的 number 参数为一 Long,其中可包含任何有效的数值表达式。说明当一数字转成字符串时,总会在前头保留一空位来表示正负。 扩展资料: 如果 number 为正,返回的字符串包含一前导空格暗示有一正号。使用 Format 函数可将数值转成必要的格式,如日期、时间、货币或其他用户自定义格式。与 Str 不同的是,Format 函数不包含前导空格来放置 number 的正负号。 注意 Str 函数只视句点 (.) 为有效的小数点。如果使用不同的小数点(例如,国际性的应用程序),可使用 CStr 将数字转成字符串。 C语言中strstr()函数的使用分析原型: char *strstr(const char *str1, const char *str2); #include《string.h》 找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。返回该位置的指针,如找不到,返回空指针。 Returns a pointer to the first occurrence of strSearch in str, or NULL if strSearch does not appear in str. IfstrSearch points to a string of zero length, the function returns str. 代码如下: #include 《stdio.h》 #include 《conio.h》 #include 《string.h》 #include 《stdlib.h》 #pragma warning (disable:4996) char *mystrstr(char *s1,char *s2); int main(void) { char *s=“Golden Global View“; char *l=“ob“; //char *l=““ char *p; system(“cls“); p=mystrstr(s,l); if (p!=NULL) { printf(“%sn“,p); } else { printf(“Not Found!n“); } getch(); return 0; } /*FROM 百科*/ char *mystrstr(char *s1,char *s2) { int n; if (*s2) //两种情况考虑 { while(*s1) { for (n=0;*(s1+n)==*(s2+n);n++) { if (!*(s2+n+1)) //查找的下一个字符是否为’’ { return (char*)s1; } } s1++; } return NULL; } else { return (char*)s1; } } 另一个实现: 代码如下: char * strstr (buf, sub) register char *buf; register char *sub; { register char *bp; register char *sp; if (!*sub) return buf; while (*buf) { bp = buf; sp = sub; do { if (!*sp) return buf; } while (*bp++ == *sp++); buf += 1; } return 0; } 又一个实现: 代码如下: #include 《iostream》 #include 《string》 using namespace std; //c语言实现strstr const char* isSub(const char* str, const char *subs){ //特殊情况 if(!*subs) return str; const char* tmp=str; while (*tmp!=’’) { //用于每次将父串向后移动一个字符 const char* tmp1=tmp; //记录子串地址 const char* sub1=subs; while (*sub1!=’’&&*tmp1!=’’) { //若不相等则跳出,将父串后移一个字符 if (*sub1!=*tmp1) break; //若相等且子串下一个字符是末尾则是这个父串的子串 if (*sub1==*tmp1&&*(sub1+1)==’’) return tmp; //若相等则继续比较下一个字符 if (*sub1==*tmp1) { sub1++; tmp1++; } } tmp++; } return NULL; } int main(){ char* str1=“ababcdddb“; char* str=““; const char *res=isSub(str1,str); if (res!=NULL) { cout 《《 res 《《 endl; } else cout 《《 “null“ 《《 endl; //cout 《《 isSub(str1,str) 《《 endl; return 0; } c++中c_str()用法为了与c语言兼容,在C语言中没有string类型,故必须通过string类对象的成员函数c_str()把string对象转换成c中的字符串样式 注意: 一定要使用strcpy()函数来操作方法c_str()返回的指针 语法: const char *c_str();1.正确用法: char c; string s =“1234“; strcpy(c , s.c_str()) 2.错误用法: char c string s = “1234“ c = s.c_str(); 错误原因:c最后指向的内容是垃圾,因为s对象被析构,所以不能直接利用c_str返回的字符串。要用strcpy函数以上内容是从https://www.cnblogs.com/curo0119/p/8783801.html摘录 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |