赞
踩
本文用来记录自己的学习过程,主要是目前学习c语言中字符串的拷贝、拼接与比较、查找、大小写转化以及字符串的分割。
字符串的拷贝使用strcpy以及strncpy,strncpy的使用比strcpy多一个int数,用来指定拷贝的字符串长度。
#include <stdio.h> #include <stdlib.h> int main() { //char *strcpy(char* dest,coonst char *src); // char strDest[128]={'\0'}; char *strDest; strDest=(char*)malloc(128);//注意需要防止内存泄漏 memset(strDest,'\0',128); char *stcSrc="abcdefg\n"; strcpy(strDest,stcSrc); printf("%s",strDest); memset(strDest,'\0',128); strncpy(strDest,stcSrc,2);//指定要复制的位数 puts(strDest); memset(strDest,'\0',128); strncpy(strDest,"ycycycyc",2); puts(strDest); system("pause"); return 0; }
示例:
#include <stdio.h> #include <stdlib.h> int main() { char *stcSrc="abcdefg\n"; //字符串的拼接 char strLen[128]="yyyy "; strcat(strLen,stcSrc); puts(strLen); //字符串的比较 //int strcmp(const char *s1,const char *s2); char *test1="123"; char *test2="1234"; int ret=strcmp(test1,test2);//test1>test2 返回1 test2>test1 返回 2 相等返回0 printf("%d",ret); //比较使用的小技巧: /* if (!strcmp(test1,test2)){ printf("两个字符串一样\n") } */ system("pause"); return 0; }
查找字符串的子字符以及子字符串时,使用strchr以及strstr函数。
strchr:
char *strchr(const char *str, char c)
参数 str-- 要被检索的 C 字符串。
c-- 在 str 中要搜索的字符。
功能 :在参数str所指向的字符串中搜索第一次出现字符c(一个无符号字符)的位置。
返回值:返回一个指向该字符串中第一次出现的字符的指针,如果字符串中不包含该字符则返回NULL空指针。
strstr:
char *strstr(const char *haystack, const char *needle)
参数:haystack – 要被检索的 C 字符串。
needle – 在 haystack 字符串内要搜索的小字符串。
返回值 :该函数返回在 haystack 中第一次出现 needle 字符串的位置,如果未找到则返回 null。
示例:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { /* 函数原型 char *strchr(const char *str, char c) 参数 str-- 要被检索的 C 字符串。 c-- 在 str 中要搜索的字符。 功能 在参数str所指向的字符串中搜索第一次出现字符c(一个无符号字符)的位置。 返回值 返回一个指向该字符串中第一次出现的字符的指针,如果字符串中不包含该字符则返回NULL空指针。 头文件 #include <string.h> */ char *strc="abcde"; char *p = NULL; p = strchr(strc,'b'); if (p == NULL) { printf("没有找到\n"); } else { printf("找到了\n"); puts(p);//p是i的地址 } /* 下面是 strstr() 函数的声明。 char *strstr(const char *haystack, const char *needle) 参数 haystack -- 要被检索的 C 字符串。 needle -- 在 haystack 字符串内要搜索的小字符串。 返回值 该函数返回在 haystack 中第一次出现 needle 字符串的位置,如果未找到则返回 null。 */ char *strtest="Ryjhhhh"; char *a="jh"; char *p1=NULL; p1 = strstr(strtest,a); puts(p1); system("pause"); return 0; }
示例:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { /* 头文件:#include <string.h> strlwr()用于将字符串中的字符转换为小写,其原型为: char *strlwr(char *str); 【参数说明】str为要转换的字符串。 【返回值】返回转换后的小写字符串,其实就是将str返回。 也就是说,strlwr() 不会创建一个新字符串返回,而是改变原有字符串。 所以strlwr()只能操作字符数组,而不能操作指针字符串,因为指针指向的字符串是作为常量保存在静态存储区的,常量不能被修改。 */ /*strupr函数用法与strwr一致,效果相反 */ char strtest1[]="RyJ"; puts(strlwr(strtest1));//小写 puts(strupr(strtest1));//大写 system("pause"); return 0; }
C 库函数 char *strtok(char *str, const char *delim) 分解字符串 str 为一组字符串,delim 为分隔符。
声明
下面是 strtok() 函数的声明。
char *strtok(char *str, const char *delim)
参数
str -- 要被分解成一组小字符串的字符串。
delim -- 包含分隔符的 C 字符串。
返回值
该函数返回被分解的第一个子字符串,如果没有可检索的字符串,则返回一个空指针。
示例:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { /* C 库函数 char *strtok(char *str, const char *delim) 分解字符串 str 为一组字符串,delim 为分隔符。 声明 下面是 strtok() 函数的声明。 char *strtok(char *str, const char *delim) 参数 str -- 要被分解成一组小字符串的字符串。 delim -- 包含分隔符的 C 字符串。 返回值 该函数返回被分解的第一个子字符串,如果没有可检索的字符串,则返回一个空指针。 */ char strtest2[]="Ryj,yi,er,san,si,wu"; char *delim=","; char *p2=NULL; int i =0; char * p3[10];//指针数组 p3[i] = strtok(strtest2,delim); if (p2!=NULL) { printf("提取出来的第%d个字符串为:%s \n",i+1,p2); } while(1) { i=i+1; p3[i]= strtok(NULL,delim); if (p3[i]!=NULL) { printf("提取出来的第 %d 个字符串为:%s\n",i,p3[i]); } else { printf("没有子字符串了!!!\n"); break; } } puts(p2); p2 = strtok(NULL,delim); puts(p2); system("pause"); return 0; }
☀ 记录自己学习的同时,也希望能对大家有所帮助,欢迎留言交流!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。