字符串处理函数

字符串处理函数
字符串处理函数

字符串处理函数(string.h)

strcat strchr strrchr strcmp strcpy strlen

strstr strpbrk strcspn strrev strnset strset

strtok strupr strlwr memccpy memchr memicmp memmove

strcat

原型: char *strcat(char *str1, char *str2);

功能: 字符串连接函数,把字符串 str2 接到 str1 后面,str1 后面的'\0 '被取消。程序示例:

#include

#include

int main( void )

{

char string[80];

strcpy( string, "Hello world from " );

strcat( string, "strcpy " );

strcat( string, "and " );

strcat( string, "strcat!" );

printf( "String = %s\n", string );

return(0);

}

输出结果:String = Hello world from strcpy and strcat!

strchr

原型: char *strchr(char *str, char c);

功能:找出 str 指向的字符串中第一次出现字符 ch 的位置指针。程序示例:

#include

#include

int main(void)

{

char string[15];

char *ptr, c = 'r';

strcpy(string, "This is a string");

ptr = strchr(string, c);

if (ptr)

printf("The character %c is at position: %d\n", c, ptr-string);

else

printf("The character was not found\n");

return(0);

}

输出结果:The character r is at position: 12

strrchr

原型: char *strrchr(const char *s, int c)

功能: 得到字符串 s 中最后一次出现字符 ch 的位置指针。程序示例:

#include

#include

int main(void)

{

char string[15];

char *ptr,c='r';

strcpy(string,"This is a string");

ptr=strrchr(string,c);

if (ptr)

printf("The character %c is at position:%d",c,ptr-string);

else

printf("The character was not found");

return(0);

}

输出结果:The character r is at position:12

strcmp

原型: int strcmp(char *str1, char *str2);

功能: 比较两个字符串 str1、str2,当 s1 小于 s2 时,返回值小于 0;当 s1 等于s2 时,返回值等于 0;当 s1 大于 s2 时,返回值大于 0。程序示例:

#include

#include

int main(void)

{

char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc";

int ptr;

ptr = strcmp(buf2, buf1);

if (ptr> 0)

printf("buffer 2 is greater than buffer 1\n");

else

printf("buffer 2 is less than buffer 1\n");

ptr = strcmp(buf2, buf3);

if (ptr> 0)

printf("buffer 2 is greater than buffer 3\n");

else

printf("buffer 2 is less than buffer 3\n");

return(0);

}

输出结果:

buffer 2 is greater than buffer 1

buffer 2 is less than buffer 3

strcpy

原型: char *strcpy(char *str1, char *str2);

功能: 把 str2 指向的字符串拷贝到 str1 中。程序示例:

#include

#include

int main(void)

{

char str1[10];

char *str2 = "abcdefghi";

strcpy(str1, str2);

printf("%s\n", str1);

return(0);

}

输出结果:abcdefghi

strlen

原型: unsigned int strlen(char *str);

功能: 统计字符串中字符的个数 (不包含'\0')。程序示例:

#include

#include

int main( void )

{

char buffer[61] = "How long am I?";

int len;

len = strlen( buffer );

printf( "%s is %d characters long\n", buffer, len );

return(0);

}

输出结果:How long am I? is 14 characters long

strstr

原型: char *strstr(char *str1, char *str2);

功能: 从字符串 str1 中查找是否有字符串 str2,如果有,从 str1 中的 str2 位置起,返回 str1 中 str2 起始位置的指针,如果没有,返回 NULL。程序示例:

#include

#include

int main(void)

{

char *str1 = "Borland International", *str2 = "nation", *ptr;

ptr = strstr(str1, str2);

printf("The substring is: %s\n", ptr);

return(0);

}

输出结果:The substring is: national

strpbrk

原型: char *strpbrk(const char *s1, const char *s2);

功能: 依次检验字符串 s1 中的字符,当被检验字符在字符串 s2 中也包含时,则停止检验,并返回该字符位置,空字符 NULL 不包括在内。程序示例:

#include

#include

int main(void)

char *p="Find all vowels";

while(p)

{

printf("%s\n",p);

p=strpbrk(p+1,"aeiouAEIOU");

}

return( 0);

}

输出结果:

Find all vowels

ind all vowels

all vowels

owels

els

strcspn

原型: int strcspn(const char *s1, const char *s2)

功能: 顺序在字符串s1中搜寻与s2中字符的第一个相同字符,包括结束符NULL,返回这个字符在 S1 中第一次出现的位置。程序示例:

#include

#include

int main(void)

{

printf("%d\n",strcspn("abcbcadef","cba"));

printf("%d\n",strcspn("xxxbcadef","cba"));

printf("%d\n",strcspn("123456789","cba"));

return( 0);

}

输出结果:

3

9

strrev

原型: char *strrev(char *s)

功能: 把字符串 s 的所有字符的顺序颠倒过来(不包括空字符 NULL)。

程序示例:

#include

#include

int main(void)

{

char forward[80]="string";

printf("Before strrev():%s\n",forward);

strrev(forward);

printf("After strrev(): %s\n",forward);

return(0);

输出结果:

Before strrev():string

After strrev(): gnirts

strnset

原型: char *strnset(char *s, int ch, int n)

功能: 将字符串 s 中前 n 个字符设置为 ch 的值。程序示例:

#include

#include

int main(void)

{

char string[80]="abcdefghijklmnopqrstuvwxyz";

char letter='x';

printf("string before strnset: %s\n",string);

strnset(string,letter,13);

printf("string after strnset: %s\n",string);

return (0);

}

输出结果:

string before strnset: abcdefghijklmnopqrstuvwxyz

string after strnset: xxxxxxxxxxxxxnopqrstuvwxyz

strset

功能:将字符串 s 中所有字符设置为 ch 的值

原型: char *strset(char *s, int ch) 程序示例:

#include

#include

int main(void)

{

char string[10]="123456789";

char symbol='c';

printf("Before strset(): %s\n", string);

strset(string, symbol);

printf("After strset(): %s\n", string);

return(0);

}

输出结果:

Before strset(): 123456789

After strset(): ccccccccc

strtok

原型: char *strtok(char *s1, const char *s2)

功能:将字符串s1按s2指定的分隔符分隔为多个字符串(一般用于将英文句子分解为单词) 。程序示例:

#include

#include

int main(void)

char *p;

char *buffer;

char *delims={ " .," };

buffer=strdup("Find words, all of them.");

printf("%s\n",buffer);

p=strtok(buffer,delims);

while(p!=NULL)

{

printf("word: %s\n",p);

p=strtok(NULL,delims);

}

printf("%s\n",buffer);

return(0);

}

输出结果:

Find words, all of them.

word: Find

word: words

word: all

word: of

word: them

Find

strupr

原型: char *strupr(char *s)

功能: 将字符串s中的字符变为大写, 不改变其它字符。程序示例:

#include

#include

int main(void)

{

char string[80]="abcdefghijklmnopqrstuvwxyz",*ptr;

ptr=strupr(string);

printf("%s",ptr);

return(0);

}

输出结果:ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ

strlwr

原型: char *strlwr(char *s)

功能: 将字符串中的字符变为小写字符 ,不改变其它字符程序示例: #include

#include

int main(void)

{

char str[]="HOW TO SAY?";

printf("%s",strlwr(str));

return(0);

}

输出结果:how to say?

memccpy

原型: void *memccpy(void *dest, const void *src, int ch, int n)

功能:由src所指内存区域复制不多于n个字节到dest所指内存区域,如果遇到字符ch则停止复制.程序示例:

#include

#include

int main(void)

{

char *src="This is the source string";

char dest[50];

char *ptr;

ptr=(char *)memccpy(dest,src,'c',strlen(src));

if (ptr)

{

*ptr='\0';

printf("The character was found:%s",dest);

}

else

printf("The character wasn't found");

return(0);

}

输出结果:The character was found:This is the sourc

memchr

原型: void *memchr(const void *s, int ch, int n)

功能: 从s所指内存区域的前n个字节查找字符ch .程序示例:

#include

#include

int main(void)

{

char str[17];

char *ptr;

strcpy(str,"This is a string");

ptr=(char *)memchr(str,'r',strlen(str));

if (ptr)

printf("The character 'r' is at position: %d",ptr-str);

else

printf("The character was not found");

return(0);

}

输出结果:The character 'r' is at position: 12

memicmp

原型:int memicmp(const void *s1, const void *s2, int n)

功能: 按字典顺序,不考虑字母大小写对字符串s1,s2前n个字符比较。程序示例: #include

#include

int main(void)

{

char *buf1="ABCDE123";

char *buf2="abcde456";

int stat;

stat=memicmp(buf1,buf2,5);

printf("The strings to position 5 are ");

if(stat) printf("not");

printf("the same");

return(0);

}

输出结果:The strings to position 5 are the same

memmove

原型: void *memmove(void *dest, const void *src, int n)

功能: 由src所指内存区域复制n个字节到dest所指内存区域。程序示例:

#include

#include

int main(void)

{

char dest[40]="abcdefghijklmnopqrstuvwxyz0123456789";

printf("destination prior to memmove:%s\n",dest);

memmove(dest+1,dest,35);

printf("destination after memmove:%s",dest);

return(0);

}

输出结果:

destination prior to memmove:abcdefghijklmnopqrstuvwxyz0123456789

destination after memmove:aabcdefghijklmnopqrstuvwxyz012345678

例 1 分别用 gets()和 scanf()函数输入带空格字符串。

分析:scanf()函数接收的字符串中不能有空格符,空格符和回车符都作为输入数据的分隔符。gets(str)函数接收从键盘输入的一个字符串(可含空格)到字符数组 str 中,遇换行符结束输入。自动将 '\0' 置于串尾代替换行符。参考程序

#include

int main(void)

{

char str[20];

printf("Enter a string: ");

gets(str);

printf("%s\n",str);

scanf("%s",str);

printf("%s",str);

return(0);

}

例 2 不使用函数 strcat(),将字符串"Happy"和字符串"New Year!"合并为一个字符串。

分析:两个字符串可以分别放在两个一维数组中,合并字符串时,首先确定第 1 个字符串的结束位置,然后用循环赋值的方法,将第 2 个字符串中的字符依次连接到第 1 个字符串后面。参考程序

#include

int main(void)

{

char str1[20]="Happy ";

char str2[]="New Year!";

int k=0,j=0;

while(str1[k])k++; /* 确定字符串 1 的结束位置 */

while(str2[j]) /* 判断是否为字符串 2 的串结束符 */

str1[k++]=str2[j++]; /* 把字符串2中的字符依次连接到字符串1的后面 */

str1[k]='\0'; /* 给字符串 1 加串结束符 */

printf("\n%s",str1); /* 输出字符串 */

}

例 3 不使用字符串比较函数,比较两个字符串的大小。

分析:字符串的大小不是根据字符串的长度确定的,而是由其 ASCII 码值确定的。比较两个字符串就是将两个字符串对应位置上的字符的 ASCII 码值进行比较,率先出现ASCII 码值大的字符,对应的字符串就大。

进行比较时,可以将两个字符串对应位置上的字符相减。如果结果为 0,表示两个字符相等,继续比较下一个字符;如果结果大于 0,表示第 1 个字符串大于第 2 个字符串;如果结果小于 0,表示第 1 个字符串小于第 2 个字符串。参考程序

#include

int main(void)

{

char s1[80],s2[80];

int i=-1,t;

printf("\nEnter a string: ");

gets(s1);

printf("\nEnter another string: ");

gets(s2);

do {

i++;

t=s1[i]-s2[i];

} while(t==0&&s1[i]!='\0');

if(t>0)

printf("\ns1>s2");

else if(t<0)

printf("\ns1

else

printf("\ns1=s2");

return(0);

}

C语言课程设计报告 - 字符串处理

课程设计报告 课程设计题目:研究生初试录取 学生姓名:李俊 专业:计算机应用技术 班级: 1140302 指导教师:宋文琳 2012年 06 月 23日

目录 一)实验题目 (3) 二)实验目的 (3) 三)实验要求 (3) 四)实验思路 (4) 五)实验过程 (6) 六)实验调试和结果 (9) 七)实验小结 (13)

实验题目 字符串处理 (1)不使用系统库函数,编写多个函数实现; (2)定义字符数组存放字符串,从键盘输入; (3)调用不同的函数,实现字符串的连接、拷贝、比较、求字符串长度、对字符串内字符进行排序、查找字符串中某个字符是否存在; (4)分别输出以上字符串处理的结果。 二)实验目的 本次课程设计的主要目的是综合运用所学的C语言知识解决一个比较实际的简单问题,侧重对数组、函数、指针、结构体等相关内容的综合应用,使学生能进一步熟悉掌握C语言的基本语法,进一步提升编程能力并逐步培养编程思维,进而不断提高学生解决问题的能力,并为以后的语言学习打下良好的基础。三)实验要求 1. 学生独立完成课程设计的主要内容; 2. 按照实验课表安排进行,不得无故旷课; 3.按照选题规则确定课程设计题目,不可随意更换,但可在完成规定的任务之后,根据 个人兴趣选做其它题目; 4.严格按照报告格式撰写课程设计报告; 5.程序实现方式可以自选,可采用指针、数组或其任意组合方式完成。

四)实验思路1)整体思路

五)实验过程 代码: #include void main() {void lianjie(char a[],char b[]); void kaobei(char a[],char b[]); void bijiao(char a[],char b[]); void qiuchangdu(char a[],char b[]); void paixu(char a[],char b[]); void chazhao(char a[],char b[],char c); char str1[50],str2[40]; char t; int i; printf("需要进行的操作:1.连接;2.拷贝;3.比较;4.求长度;5.排序;6.查找\n"); scanf("%d",&i); if(i==1) {printf("要连接的字符串1:"); scanf("%s",str1); printf("要连接的字符串2:"); scanf("%s",str2); lianjie(str1,str2);} else if(i==2) {printf("拷贝的字符串1:"); scanf("%s",str1); printf("要拷贝的字符串2:"); scanf("%s",str2); kaobei(str1,str2);} else if(i==3)

C字符串处理函数全

strcpy(char destination[], const char source[]); strcpy:将字符串source拷贝到字符串destination中。 strcpy函数应用举例 原型:strcpy(char destination[], const char source[]); 功能:将字符串source拷贝到字符串destination中 例程: #include #include void main(void) { char str1[10] = { "TsinghuaOK"}; char str2[10] = { "Computer"}; cout < #include void main(void) { char str1[10] = { "Tsinghua "}; char str2[10] = { "Computer"}; cout <

各种字符串处理函数示例(基本)

示例 1.字符串输出示例。 程序: #include void main(void) { char str[25]={"Welcome to our city!"}; puts(str); puts("Thank you!"); } 结果: 2.字符串输入实例。(注意比较gets与scanf和puts与printf的区别)程序: #include void main(main) { char str[20]; gets(str); puts(str); printf("*********\n"); scanf("%s",str); puts(str); } 结果: 3.测字符串长度函数strlen()的使用。 程序: #include #include void main(main) { char a[10]="program";

int x,y; x=strlen(a); y=strlen("abc13"); printf("%d\n%d\n\n",x,y); } 结果: 4.字符串连接函数的使用。 程序: #include #include void main(main) { char s1[20]="Hello",s2[6]="Word"; puts(s1); puts(s2); strcat(s1,s2); printf("%s\n",s1); } 结果: 修改后 程序: #include #include void main(main) { char s1[5]="Hello",s2[6]="Word"; puts(s1); puts(s2); strcat(s1,s2); printf("%s\n",s1); } 结果:

VB常用字符串操作函数解读

VB常用字符串操作函数2009/11/25 18:321. ASC(X,Chr(X:转换字符字符码[格式]: P=Asc(X 返回字符串X的第一个字符的字符码 P=Chr(X 返回字符码等于X的字符 [范例]:(1P=Chr(65 ‘ 输出字符A,因为A的ASCII码等于65 (2P=Asc(“A” ‘ 输出65 2. Len(X:计算字符串X的长度 [格式]: P=Len(X [说明]:空字符串长度为0,空格符也算一个字符,一个中文字虽然占用2 Bytes,但也算 一个字符。 [范例]: (1 令X=”” (空字符串 Len(X 输出结果为0 (2 令X=”abcd” Len(X 输出结果为4 (3 令X=”VB教程” Len(X 输出结果为4 3. Mid(X函数:读取字符串X中间的字符 [格式]: P=Mid(X,n 由X的第n个字符读起,读取后面的所有字符。 P=Mid(X,n,m 由X的第n个字符读起,读取后面的m个字符。 [范例]: (1 X=”abcdefg” P=Mid(X,5 结果为:P=”efg” (2 X=”abcdefg” P=Mid(X,2,4 结果为 P=”bcde” 4. R eplace: 将字符串中的某些特定字符串替换为其他字符串 [格式]: P=Replace(X,S,R [说明]:将字符串X中的字符串S替换为字符串R,然后返回。[范例]:X=”VB is very good” P=Replace(X,good,nice 输出结果为:P=”VB is very nice” 5. StrReverse:反转字符串 [格式]: P=StrReverse(X [说明]:返回X参数反转后的字符串 [范例]:(1)X=”abc” P=StrReverse(X 输出结果:P=”cba” 6. Ucase(X,Lcase(X:转换英文字母的大小写 [格式]:P=Lcase(X ‘ 将X字符串中的大写字母转换成小写P=Ucase(X ‘ 将X字符串中的小写字母转换成大写 [说明]:除了英文字母外,其他字符或中文字都不会受到影响。 [范例]:(1)令X=”VB and VC” 则Lcase(X的结果为”vb and vc”,Ucase(X的结果为”VB AND VC” 7. InStr函数:寻找字符串 [格式]: P=InStr(X,Y 从X第一个字符起找出Y出现的位置 P=InStr(n,X,Y 从X第n个字符起找出Y出现的位置 [说明]:(1)若在X中找到Y,则返回值是Y第一个字符出现在X中的位置。(2) InStr(X,Y相当于 InStr(1,X,Y。(3)若字符串长度,或X为空字符串,或在X中找不到Y,则都 返回0。(4)若Y为空字符串,则返回0。 ---------------------------------------------------------------------------------------------- mid(字符串,从第几个开始,长度 ByRef 在[字符串]中[从第几个开始]取出[长度个字符串] 例如 mid("小欣无敌",1,3 则返回 "小欣无" instr(从第几个开始,字符串1,字符串2 ByVal 从规定的位置开始查找,返回字符

C语言中处理字符串的各种自定义函数(精)

C 语言中处理字符串的各种自定义函数 关于 strcpy,strcmp,strcat,strlen 的自定义函数,它是为了避免调用库函数对代码兼容的局限性。要注意如下一些问题: 1. 检查输入的两个指针是否有效; 2. 检查两个字符串是否以 NULL 结尾; 3. 检查目标指针的空间是否大于等于原字符串的空间。 一. strcpy 自定义 char * sef_strcpy(char *str1,char *str2 { If( (NULL==str1||(NULL==str2 { printf(“ invalid argument(s” ; return; } char *strcopy=str1; while(… \0? != *str1++=*str2++ ; *str1=? \0? ; return strcopy;

} 二. strcmp 的自定义 int sef_strcpy(char *str1,char *str2 { If( (NULL==str1||(NULL==str2 { printf(“ 输入参数错误,值为 NULL ! \n” ; return -1; } while(*str1&&*str2&&( *str1++==*str2++ ; return str1-str2; } 三. strcat 的自定义 char * sef_strcat(char *str1,char *str2 { If( (NULL==str1||(NULL==str2 { printf(“ 输入参数错误! ” ;

return; } char *strcopy=str1; while(… \0? !=*str1 {str++;} while(… \0? != (*str1++=*str2++ ; *str1=? \0? ; return strcopy; } 四. strlen 的自定义函数 int sef_strlen(char *str { if(NULL==str { printf(“ 输入参数错误,值为NULL ! ” ; char *p=str; while(… \0? !=*str++ ; return str-p-1;

Pascal常用字符串函数

一、数学函数: Inc(i) 使I:=I+1; Inc(I,b) 使I:=I+b; Abs(x) 求x的绝对值例:abs(-3)=3 Chr(x) 求编号x对应的字符。例:Chr(65)=’A’ chr(97)=’a’ chr(48)=’0’ Ord(x) 求字符x对应的编号。例:ord(‘A’)=65 ord(‘a’)=97 另外:ord(false)=0 o rd(true)=1 Sqr(x) 求x的平方。例:sqr(4)=16 Sqrt(x)求x的开方. 例:sqrt(16)=4 round(x) 求x的四舍五入例:round(4.5)=5 trunc(x) 求x的整数部分例:trunc(5.6)=5 结果是integer型 int(x) 求x的整数部分例int(5.6)=5.0 结果是real型 frac (x)求x的小数部分例frac(5.6)=0.6 pred(x) 求x的前导pred(‘b’)=’a’ pred(5)=4 pred(true)=false succ(x) 求x的后继succ(‘b’)=’c’ succ(5)=6 succ(false)=true odd(x) 判断x是否为奇数。如果是值为true,反之值为false. Odd(2)=false od d(5)=true power(a,n) 求a的n次方power(2,3)=8 exp(b*ln(a)) a的b次方 random 取0~1之间的随机数(不能取到1) randomize 随机数的种子函数,在每次设置随机数时都要把这个函数放在最前面. Fillchar(a,size(a),0) 数组初始化,即把数组a的值全部置为0 SHR: x SHR n 把x换成二进制后向右移n位,相当于把x 除以2n a shr n 等价于a div (2^n) SHL: x SHL n把x换成二进制后向左移n位,相当于把x 乘以2n 二、字符串函数 1. 连接运算concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn. 例:concat(‘11’,’aa’)=’11aa’; 2. 求子串。Copy(s,i,L) 从字符串s中截取第i个字符开始后的长度为L的子串。 例:copy(‘abdag’,2,3)=’bda’ 3. 删除子串。过程Delete(s,i,L) 从字符串s中删除第i个字符开始后的长度为L的子串。

C语言字符串的输入和输出

C语言字符串的输入和输出 字符串的输入和输出 %c人为加入\0进行输入输出 %s直接输入输出 *输入输出字符串时字符数组应有足够的存储空间,指针变量作为输入项时,指针必须已经指向确切的、足够大的存储空间 %s的使用 scanf("%s",地址值) 地址值:字符数组名、字符指针、字符数组元素的地址 例:char str[15]; scanf("%s",str); abc123 1.不读入空格和回车,从空格处结束 2.输入字符串长度超过字符数组元素个数,不报错 3.当输入项为字符指针时,指针必须已指向确定的有足够空间的连续 存储单元 4.当为数组元素地址时,从此元素地址开始存放 2.printf("%s",地址值) 输出时遇到第一个'\0'为止 3.gets和puts函数 开头必须stdio.h #include"stdio.h"

1.gets(地址值) 地址值:字符数组名、字符指针、字符数组元素的地址 4.当为数组元素地址时,从此元素地址开始存放 5.printf("%s",地址值) 输出时遇到第一个'\0'为止 6.gets和puts函数 开头必须stdio.h #include"stdio.h" 1.gets(地址值) 地址值:字符数组名、字符指针、字符数组元素的地址 7.例: char str[10]; gets(str); 包括空格符 8. 2.puts(字符串起始地址) 遇第一个'\0'结束,自动加入换行符 9.字符串数组:数组中每个元素都是一个存放字符串的数组 可以将一个二维数组看作是字符串数组 10.char ca[3][5]={"A","BB","CCC"}; A\0 B B\0 C C C\0 字符型指针数组 char*pa[3]={"a","bb","ccc"}; pa[0]pa[1]pa[2] 可以重新赋值gets(pa[2]);

acm常用字符串处理函数

sstrstr与strchar用法 原型:extern char *strstr(char *haystack, char *needle); 用法:#include 功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。 说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。 举例: #include #include main() { char *s="Golden Global View"; char *l="lob"; char *p; clrscr(); p=strstr(s,l); if(p) printf("%s",p); else printf("Not Found!"); getchar(); return 0; } 语法:int strstr(str1,str2) str1: 被查找目标string expression to search. str2:要查找对象The string expression to find. 该函数返回str2第一次在str1中的位置,如果没有找到,返回NULL The strstr() function returns the ordinal position within str1 of the first occurrence of str2. If str2 is not found in str1, strstr() returns 0. 例子: 功能:从字串” string1 onexxx string2 oneyyy”中寻找”yyy” (假设xxx和yyy都是一个未知的字串) char *s=” string1 onexxx string2 oneyyy”; char *p; p=strstr(s,”string2”); if(!p) printf(“Not Found!”); p=strstr(p,”one”); if(!p) printf(“Not Found!”); p+=strlen(“one”) printf(“%s”,p); 说明:如果直接写语句p=strstr(p,”one”),则找到的是xxx,不符合要求 所以需采用二次查找法找到目标

C语言字符串操作总结大全(超详细)

C语言字符串操作总结大全(超详细) 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符串 strncmp(p, p1, n) 比较指定长度字符串 strchr(p, c) 在字符串中查找指定字符 strrchr(p, c) 在字符串中反向查找 strstr(p, p1) 查找字符串 strpbrk(p, p1) 以目标字符串的所有字符作为集合,在当前字符串查找该集合的任一元素strspn(p, p1) 以目标字符串的所有字符作为集合,在当前字符串查找不属于该集合的任一元素的偏移 strcspn(p, p1) 以目标字符串的所有字符作为集合,在当前字符串查找属于该集合的任一元素的偏移 * 具有指定长度的字符串处理函数在已处理的字符串之后填补零结尾符 2)字符串到数值类型的转换 strtod(p, ppend) 从字符串p 中转换double 类型数值,并将后续的字符串指针存储到ppend 指向的char* 类型存储。 strtol(p, ppend, base) 从字符串p 中转换long 类型整型数值,base 显式设置转换的整型进制,设置为0 以根据特定格式判断所用进制,0x, 0X 前缀以解释为十六进制格式整型,0 前缀以解释为八进制格式整型 atoi(p) 字符串转换到int 整型 atof(p) 字符串转换到double 符点数 atol(p) 字符串转换到long 整型 3)字符检查 isalpha() 检查是否为字母字符 isupper() 检查是否为大写字母字符 islower() 检查是否为小写字母字符 isdigit() 检查是否为数字 isxdigit() 检查是否为十六进制数字表示的有效字符 isspace() 检查是否为空格类型字符 iscntrl() 检查是否为控制字符 ispunct() 检查是否为标点符号 isalnum() 检查是否为字母和数字 isprint() 检查是否是可打印字符 isgraph() 检查是否是图形字符,等效于isalnum() | ispunct()

java 字符串常用函数及其用法

java中的字符串也是一连串的字符。但是与许多其他的计算机语言将字符串作为字符数组处理不同,Java将字符串作为String类型对象来处理。将字符串作为内置的对象处理允许Java提供十分丰富的功能特性以方便处理字符串。下面是一些使用频率比较高的函数及其相关说明。 String相关函数 1)substring() 它有两种形式,第一种是:String substring(int startIndex) 第二种是:String substring(int startIndex,int endIndex) 2)concat() 连接两个字符串 例:String s="Welcome to "; String t=s.concat("AnHui"); 3)replace() 替换 它有两种形式,第一种形式用一个字符在调用字符串中所有出现某个字符的地方进行替换,形式如下: String replace(char original,char replacement) 例如:String s=”Hello”.replace(’l',’w'); 第二种形式是用一个字符序列替换另一个字符序列,形式如下: String replace(CharSequence original,CharSequence replacement) 4)trim() 去掉起始和结尾的空格 5)valueOf() 转换为字符串 6)toLowerCase() 转换为小写 7)toUpperCase() 转换为大写 8)length() 取得字符串的长度 例:char chars[]={’a',’b’.’c'}; String s=new String(chars); int len=s.length(); 9)charAt() 截取一个字符 例:char ch; ch=”abc”.charAt(1); 返回值为’b’ 10)getChars() 截取多个字符 void getChars(int sourceStart,int sourceEnd,char target[],int targetStart) sourceStart 指定了子串开始字符的下标 sourceEnd 指定了子串结束后的下一个字符的下标。因此,子串包含从sourceStart到sourceEnd-1的字符。

Linux下常用C语言字符串操作函数

Linux下常用C语言字符串操作函数 stroul, strdup snprintf() atio C中常用字符串操作函数 #include size_t strlen(const char *s) 测量字符串长度s的实际长度。 例如s[20]="abc",那么strlen(s)的结果是3,而不是20.这就是实际长度 char *strcat(const char *s1, const *s2) 将字符串s2连接到s1的尾部。从s1的\0开始。 int strcmp(const *s1,const *s2) 比较s1和s2。 s1 = s2的时候返回值=0 s1 < s2的时候返回至<0 s1 > s2的时候返回值>0 char *strchr(const char *s, char c); 返回s中首次出现C的位置的指针。如果s中不存在c则返回NULL char *strrchr(const char *s, char c );返回s中最后一次出现c的位置的指针。如果没有,则返回0 char *strstr(const char *haystack, const char *needle);返回haystack中needle字符串首次出现的位置的指针(不比较结束符NULL)。若果没找到则返回NULL 限定长度的比较,拷贝和追加函数 int strncmp(char *s1, const char *s2, size_t n);(这些都是针对字符串的前n个字符来操作的) char *strncpy(char *dest, const char *src, size_t n); char *strncat(char *dest, const char *src, size_t n); char *strdup(char *s)返回指向被复制的字符串的指针,所需空间由malloc()分配而且需要free释放空间 int atoi(const char *nptr);将字符串转换成整型数

字符串处理函数大全

字符串处理函数大全 bcmp(比较内存内容)相关函数 bcmp,strcasecmp,strcmp,strcoll,strncmp,strncasecmp 表头文件;include 定义函数;int bcmp ( const void *s1,const void * s2,int n); 函数说明;bcmp()用来比较s1和s2所指的内存区间前n个字节,若参数n为0,则返回0。返回值;若参数s1 和s2 所指的内存内容都完全相同则返回0 值,否则返回非零值。 附加说明;建议使用memcmp()取代。 范例:参考memcmp()。 //================================================================ bcopy(拷贝内存内容)相关函数 memccpy,memcpy,memmove,strcpy,ctrncpy 表头文件;#include 定义函数;void bcopy ( const void *src,void *dest ,int n); 函数说明;bcopy()与memcpy()一样都是用来拷贝src所指的内存内容前n个字节到dest所指的地址,不过参数src与dest在传给函数时是相反的位置。 返回值 ;附加说明建议使用memcpy()取代 范例 #include main() { char dest[30]=”string(a)”; char src[30]=”string\0string”; int i; bcopy(src,dest,30);/* src指针放在前*/ printf(bcopy(): “) for(i=0;i<30;i++) printf(“%c”,dest[i]); memcpy(dest src,30); /*dest指针放在钱*/ printf(…\nmemcpy() : “); for(i=0;i<30;i++) printf(“%c”,dest[i]); 执行 bcopy() : string string memcpy() :string sring //================================================================ bzero(将一段内存内容全清为零)相关函数 memset,swab 表头文件;#include 定义函数;void bzero(void *s,int n); 函数说明:bzero()会将参数s所指的内存区域前n个字节,全部设为零值。相当于调用memset((void*)s,0,size_tn); 返回值:附加说明建议使用memset取代

javascript字符串处理函数汇总

javascript字符串处理函数汇总 虽然JavaScript 有很多用处,但是处理字符串是其中最流行的一个。下面让我们深入地分析一下使用JavaScript 操作字符串。 在JavaScript 中,String 是对象。String 对象并不是以字符数组的方式存储的,所以我们必须使用内建函数来操纵它们的值。这些内建函数提供了不同的方法来访问字符串变量的内容。下面我们详细看一下这些函数。 操作字符串的值是一般的开发人员必须面临的家常便饭。操作字符串的具体方式有很多,比如说从一个字符串是提取出一部分内容来,或者确定一个字符串是否包含一个特定的字符。下面的JavaScript 函数为开发人员提供了他们所需要的所有功能: ? concat() –将两个或多个字符的文本组合起来,返回一个新的字符串。 ? indexOf() –返回字符串中一个子串第一处出现的索引。如果没有匹配项,返回-1 。 ? charA T() –返回指定位置的字符。 ? lastIndexOf() –返回字符串中一个子串最后一处出现的索引,如果没有匹配项,返回 -1 。 ? match() –检查一个字符串是否匹配一个正则表达式。 ? substring() –返回字符串的一个子串。传入参数是起始位置和结束位置。 ? replace() –用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配的字符串。 ? search() –执行一个正则表达式匹配查找。如果查找成功,返回字符串中匹配的索引值。否则返回-1 。 ? slice() –提取字符串的一部分,并返回一个新字符串。 ? split() –通过将字符串划分成子串,将一个字符串做成一个字符串数组。

c语言中常用的函数和头文件

头文件ctype.h 函数列表<> 函数类别函数用途详细说明 字符测试是否字母和数字isalnum 是否字母isalpha 是否控制字符iscntrl 是否数字isdigit 是否可显示字符(除空格外)isgraph 是否可显示字符(包括空格)isprint 是否既不是空格,又不是字母和数字的可显示字符ispunct 是否空格isspace 是否大写字母isupper 是否16进制数字(0-9,A-F)字符isxdigit 字符大小写转换函数转换为大写字母toupper 转换为小写字母tolower 地区化 本类别的函数用于处理不同国家的语言差异。 头文件local.h 函数列表 函数类别函数用途详细说明 地区控制地区设置setlocale 数字格式约定查询国家的货币、日期、时间等的格式转换localeconv 数学函数 本分类给出了各种数学计算函数,必须提醒的是ANSI C标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754(例如frinklin C51) 头文件math.h 函数列表 函数类别函数用途详细说明 错误条件处理定义域错误(函数的输入参数值不在规定的范围内) 值域错误(函数的返回值不在规定的范围内) 三角函数反余弦acos 反正弦asin 反正切atan 反正切2 atan2 余弦cos

正弦sin 正切tan 双曲函数双曲余弦cosh 双曲正弦sinh 双曲正切tanh 指数和对数指数函数exp 指数分解函数frexp 乘积指数函数fdexp 自然对数log 以10为底的对数log10 浮点数分解函数modf 幂函数幂函数pow 平方根函数sqrt 整数截断,绝对值和求余数函数求下限接近整数ceil 绝对值fabs 求上限接近整数floor 求余数fmod 本分类函数用于实现在不同底函数之间直接跳转代码。头文件setjmp.h io.h 函数列表 函数类别函数用途详细说明 保存调用环境setjmp 恢复调用环境longjmp 信号处理 该分类函数用于处理那些在程序执行过程中发生例外的情况。 头文件signal.h 函数列表 函数类别函数用途详细说明 指定信号处理函数signal 发送信号raise 可变参数处理 本类函数用于实现诸如printf,scanf等参数数量可变底函数。 头文件stdarg.h 函数列表

Js字符串操作函数大全

Js字符串操作函数大全 /* ****************************************** 字符串函数扩充 ****************************************** */ /* =========================================== //去除左边的空格 =========================================== */ String.prototype.LTrim = function() { return this.replace(/(^\s*)/g, ""); } /* =========================================== //去除右边的空格 =========================================== */ String.prototype.Rtrim = function() { return this.replace(/(\s*$)/g, ""); } /* =========================================== //去除前后空格 =========================================== */ String.prototype.Trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); } /* ===========================================

(完整版)vb_字符串处理函数大全

mid(字符串,从第几个开始,长度)ByRef 在[字符串]中[从第几个开始]取出[长度个字符串] 例如mid("坦然面对",1,3) 则返回"坦然面" instr(从第几个开始,字符串1,字符串2)ByVal 从规定的位置开始查找,返回字符串2在字符串1中的位置 例如instr(1,"坦然面对","坦") 则返回1,instr(2,"坦然面对","坦"),则返回0 。0 表示未找到 InStrRev(字符串1,字符串2,从第几个开始) ByVal 从规定的位置开始,从后住前查找,返回字符串2在字符串1中的位置,此处注意,虽是从后住前查找,但是返回的值还是从前往后算的。 例如instrRev("坦然面对","坦",2) 则返回2 ; instrRev("坦然面对","然",1) 则返回0 ,因为它从"坦然面对"的第1个字开始往前查找,所以找不到。0 表示未找到 left(字符串,长度) ByVal 从[字符串]的左边开始返回[长度]个字符 例如Left("坦然面对",3) 则返回"坦然面" right(字符串,长度) ByVal 从[字符串]的右边开始返回[长度]个字符 例如Right("坦然面对",3) 则返回"然面对" ucase(字符串) ByVal 返回[字符串]的大写形式,只对英文字符有效 例如ucase("tanRANmiAnDui") 则返回"TANRANMIANDUI" lcase(字符串) ByVal 返回[字符串]的小写形式,只对英文字符有效 例如lcase("tanRANmiAnDui") 则返回"tanranmiandui" asc(字符) Byval返回[字符]的ascii编码,若有多个字符,则只返回首字符的ascii编码,和Chr()函数是一个可逆的过程 例如asc("坦") 则返回-13127; asc("坦然面对") 也返回-13127 chr(ASCii编码) Byval 返回[Ascii]编码所代表的字符,和Chr()函数是一个可逆的过程 例如chr(-13127) 则返回"坦" ;chr(asc("坦")) 则返回"坦"(这里是为了说明asc和chr的可逆性,例用此特性可以加密文本) trim(字符串) Byval 返回去掉了前、后之后的[字符串] 例如trim("坦然面对") 则返回"坦然面对" ,中间的空格不受任何影响 string(个数,字符) Byval 返回[个数]个[字符] 例如string(3,"坦") 则返回"坦坦坦" , 而string(3,"坦然面对") 也返回"坦坦坦",只有首字符才有效 space(个数) Byval 返回[个数]个空格 例如space(5) 则返回""

字符串函数解析

函数名: strcpy(字符串复制函数) 功能:将一个字符串复制到另一个字符串中 表头文件#include 定义函数char *strcpy(char *dest,const char *src); 函数说明strcpy()会将参数src字符串拷贝至参数dest所指的地址。 返回值返回参数dest的字符串起始地址。 附加说明如果参数dest所指的内存空间不够大,可能会造成缓冲溢出(buffer Overflow)的错误情况,在编写程序时 请特别留意,或者用strncpy()来取代。 范例#include main() { char a[30]="string(1)"; char b[]="string(2)"; printf("before strcpy() :%s\n",a); printf("after strcpy() :%s\n",strcpy(a,b)); } 执行before strcpy() :string(1) after strcpy() :string(2)

函数名:strncpy(字符串复制函数) 表头文件#include 定义函数char * strncpy(char *dest,const char *src,size_t n); 函数说明strncpy()会将参数src字符串拷贝前n个字符至参数dest所指的地址。 返回值返回参数dest的字符串起始地址。 范例#inclue main() { char a[30]="string(1)"; char b[]="STRING(2)"; printf("before strncpy() : %s\n",a); printf("after strncpy() : %s\n",strncpy(a,b,6)); } 执行before strncpy() : string(1) after strncpy() : STRING(1) 函数名: strcat(字符串连接函数)

C 中的string常用函数用法总结.

C++中的string常用函数用法总结首先,为了在我们的程序中使用string类型,我们必须包含头文件。 如下: #include //注意这里不是string.h string.h是C字符串头文件 #include using namespace std; 1.声明一个C++字符串 声明一个字符串变量很简单: string Str; 这样我们就声明了一个字符串变量,但既然是一个类,就有构造函数和析构函数。上面的声明没有传入参数,所以就直接使用了string的默认的构造函数,这个函数所作的就是把Str 初始化为一个空字符串。String类的构造函数和析构函数如下: a) string s; //生成一个空字符串s b) string s(str) //拷贝构造函数生成str的复制品 c) string s(str,stridx) //将字符串str内“始于位置stridx”的部分当作字符串的初值 d) string s(str,stridx,strlen) //将字符串str内“始于stridx且长度顶多st rlen”的部分作为字符串的初值 e) string s(cstr) //将C字符串作为s的初值 f) string s(chars,chars_len) //将C字符串前chars_len个字符作为字符串s的初值。 g) string s(num,c) //生成一个字符串,包含num个c字符 h) string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值 i) s.~string() //销毁所有字符,释放内存 都很简单,我就不解释了。

字符串操作函数

字符串操作函数及内存操作函数实现 1. 求字符串长度(不含\0)----------------------------------------------------------------------------- int strlen(const char *str) { int len = 0; assert(str != NULL); while(*str++) len++; return len; } 2. 字符串大小比较------------------------------------------------------------------------------------------- int strcmp (const char *str1,const char *str2) { int len = 0; assert((str1 != '/0') && (str2 != '/0')); while(*str1 && *str2 && (*str1 == *str2)) { str1++; str2++; } return *str1-*str2; } 3. (1)字符串拼接------------------------------------------------------------------------------------------------ char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数{ char * address = strDest; //该语句若放在assert之后,编译出错 assert((strDest != NULL) && (strScr != NULL)); //对源地址和目的地址加非0断言 //是while(*strDest!=’/0’)的简化形式.若使用while(*strDest++),则会出错,因为++是不受循环约束的。所以要在循环体内++;因为要是*strDest最后指向该字符串的结束标志’/0’while(*strDest) strDest++; // 移到末尾 while(*strDest++ = *strScr++) //该循环条件内可以用++, NULL; *strDest=’/0 ‘; //此处可以加语句*strDest=’/0’;有无必要? return address; //为了实现链式操作,将目的地址返回 } 3. (2)拼接count个字符----------------------------------------------------------------------------------- char * strncat (char * dst,const char * src, size_t count) { char * tmp = dst; while( *dst ) dst ++; while( count-- ) // 先返回,后自增.count到1,则count个 if( !( *dst++ = *src++ ) ) return tmp; // 已经发现'\0',直接返回,不要再加'\0' *dst = '\0'; return tmp; }

相关文档
最新文档