——- android培训、java培训、期待与您交流! ———-
在string.h头文件中,包含了很多字符串函数。利用这些函数,可以帮我们方便的对字符串处理。下面,就对一些常用的字符串函数进行总结。
函数名称: strlen
函数原型: extern int strlen(char *s);
函数功能: 计算字符串s的(unsigned int型)长度
函数返回: 返回s的长度,不包括结束符NULL
所属文件: string.h
#include <syslib.h>
#include <string.h>
main()
{
char *s="nihao";
clrscr();
printf("%d",strlen(s)); //输出为5
getchar();
return 0;
}
函数名称: strcpy
函数原型: char* strcpy(char* str1,char* str2);
函数功能: 把str2指向的字符串拷贝到str1中去
函数返回: 返回str1,即指向str1的指针
参数说明:
所属文件: string.h
#include <stdio.h>
#include <string.h>
int main()
{
char string[10];
char *str1="abcdefghi";
strcpy(string,str1); //将字符串str1拷贝到字符串string
printf("the string is:%s\n",string);
return 0;
}
函数名称: strcat
函数原型: char* strcat(char * str1,char * str2);
函数功能: 把字符串str2接到str1后面,str1最后的’\0’被取消
函数返回: str1
所属文件: string.h
#include <stdio.h>
#include <string.h>
int main()
{
char buffer[80];
strcpy(buffer,"Hello "); //将"hello "宝贝到buffer中
strcat(buffer,"world"); //将"world"连接到buffer后边
printf("%s\n",buffer);
return 0;
}
函数名称: strcmp
函数原型: int strcmp(char * str1,char * str2);
函数功能: 比较两个字符串str1,str2.
函数返回: str1小于str2,返回负数;str1等于str2,返回 0;str1大于str2,返回正数.
所属文件: string.h
#include <string.h>
#include <stdio.h>
int main()
{
char *buf1="aaa", *buf2="bbb",*buf3="ccc";
int ptr;
ptr=strcmp(buf2, buf1);
// str1小于str2,返回负数;str1等于str2,返回 0;str1大于str2,返回正数.
if(ptr>0)
printf("buffer 2 is greater thanbuffer 1\n");
else
printf("buffer 2 is less thanbuffer 1\n");
ptr=strcmp(buf2, buf3);
if(ptr>0)
printf("buffer 2 is greater thanbuffer 3\n");
else
printf("buffer 2 is less thanbuffer 3\n");
return 0;
}
函数名称: strrev
函数原型: char *strrev(char *s)
函数功能: 将字符串中的所有字符颠倒次序排列
函数返回: 指向s的指针
所属文件: string.h
#include<string.h>
#include<stdio.h>
int main()
{
char forward[]="string"; //原文中定义为char*是不对的,指向代码段的指针内容是不可变的
printf("Before strrev():%s",forward);
//输出Beforestrrev():string
strrev(forward);
printf("Afterstrrev(): %s",forward);
//After strrev():gnirts
return 0;
}
函数名称: strtok
函数原型: char *strtok(char *s1, const char *s2)
函数功能: 分解s1字符串为用特定分隔符分隔的多个字符串(一般用于将英文句分解为单词)
函数返回: 字符串s1中首次出现s2中的字符前的子字符串指针
参数说明: s2一般设置为s1中的分隔字符.规定进行子调用时(即分割s1的第二、三及后续子串)第一参数必须是NULL .在每一次匹配成功后,将s1中分割出的子串位置替换为NULL(摘下链中第一个环),因此s1被破坏了.函数会记忆指针位置以供下一次调用
所属文件: string.h
#include<string.h>
#include<stdio.h>
int main()
{
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;
}//根据测试,可以随时给strtok的第一个参数输入一个新的字符串,开始新字符串的分隔
函数名称: strstr
函数原型: char* strstr(char* str1,char* str2);
函数功能: 找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)
函数返回: 返回该位置的指针,如找不到,返回空指针
参数说明:
所属文件: string.h
#include<stdio.h>
#include<string.h>
int main()
{
char*str1="Open Watcom C/C++",*str2="Watcom",*ptr;
ptr=strstr(str1,str2);
printf("The substring is:%s\n",ptr);
return 0;
}
以上就是常用的一些字符串函数,适当的运用这些函数,可以大大提高对字符串处理的速度。