一:strcat函数
原型: char *strcat(char *dest, const char *src);
作用:连接两个字符串
//strcat函数的实现
#include <stdio.h>
#include <string.h>
int main( void )
{
int i;
int j;
char buf[100]="mao maochong"; //buf数组必须保证足够大,能容的下这两个数组
char tmp[]="hello cat";
for(i=0;buf[i]!=0;i++)
;
for(j=0;tmp[j]!=0;j++)
buf[i++]=tmp[j];
buf[i]=0; //给最后字符串后面加一个'\0',这为了方便,我就都写为0了;
// strcat(buf,tmp);
printf("%s\n",buf);
return 0;
}
二:strncmp函数
原型: int strcmp(const char *s1, const char *s2);
作用:比较两个字符串大小。s1等于s2返回0,s1大于s2返回大于0的数,s1小于s2返回小于0的数
//字符串比较函数
#include <stdio.h>
#include <string.h>
int main( void )
{
int i;
char buf1[]="this is maomaochong";
char buf2[]="this is maomaochong";
for(i=0;buf1[i]==buf2[i] && buf1[i]!=0 && buf2[i]!=0;i++)
;
if(buf1[i]==0 && buf2[i]==0)
printf("相等!\n");
else
printf("不相等!\n");
/*
if(strcmp(buf1,buf2)==0)
printf("相等!\n");
else
printf("不相等!\n");
*/
return 0;
}
三:strncmp函数
原型:int strncmp(const char *s1, const char *s2, size_t n);
作用:和strcmp类似,只不过它只比较字符串s1,s2的前n个字符。
//比较俩个字符串的前n个字符
#include <stdio.h>
#include <string.h>
int main( void )
{
int i;
char buf1[]="this is maomaoyu";
char buf2[]="this is maomaochong";
if(strncmp(buf1,buf2,15)==0)
printf("相等!\n");
else
printf("不相等!\n");
return 0;
}
4.strcmp函数
原型: char *strcpy(char *dest, const char *src);
作用:拷贝字符串,把字符串src拷贝到字符串dest中,应该保证dest字符串可以能容的下src字符串
//字符串拷贝函数
#include <stdio.h>
#include <string.h>
int main( void )
{
int i;
char buf[100]="she is a girl"; //应该保证buf数组大于tmp数组,能容的下
char tmp[]="thank you";
for(i=0;buf[i]!=0;i++)
buf[i]=tmp[i];
buf[i]=0;
// strcpy(buf,tmp);
printf("%s\n",buf);
return 0;
}
5.strlen函数
原型:size_t strlen(const char *s);
作用:计算字符串的长度
#include <stdio.h>
#include <string.h>
int main ( void )
{
char buf[100]={"mao mao chong"};
int i=0;
/*
for(i=0;buf[i]!='\0';i++) //for循环计算字符串长度。
;
*/
while(buf[i++]) //如果要用while的话,输出的时候要减去一,因为不管buf[i++]是真是假,每次执行完后i都加1;
;
// i=strlen(buf);
printf("%d\n",i-1);
return 0;
}
6.strchr函数
原型:char *strchr(const char *s, int c);
作用:在字符串s中查找字符c第一次出现的位置,并返回所在位置。
//查找字符的函数
#include <stdio.h>
int main( void )
{
int i;
int idx=-1;
char string[]="this is maomaochong";
char ch='s';
for(i=1;string[i]!='\0';i++)
{
if(string[i]==ch)
{
idx=i;
break;
}
}
if(idx==-1)
{
printf("没找到!\n");
}
else
{
printf("位置是:%d\n",idx);
}
return 0;
}
7.strstr函数
原型: char *strstr(const char *haystack, const char *needle);
作用:在字符串haystack中查找字符串needle,并返回位置
#include <stdio.h>
int main( void )
{
int i;
int j;
int idx=-1;
char string[]="this is maomaochong";
char substr[]="mao";
for(i=0;string[i]!=0;i++)
{
for(j=0;substr[j]!=0;j++)
{
if(string[i+j]!=substr[j])
break;
}
if(substr[j]==0)
{
idx=i;
break;
}
}
printf("%d\n",idx);
return 0;
}
8.利用指针求字符串长度
注意:++和的优先级是一样的,但是,这个是从右至左结合的,所以str先和++结合计算,然后在和结合,不过*str还是取的是没有++以前的值。
#include <stdio.h>
int strlen(const char *str)
{
int i=0;
while(*str++) //注意这个的优先级
i++;
return i;
}
int main( void )
{
char buf[]="cao lao shi zhao shang hao";
printf("%d\n",strlen(buf));
}
9.利用指针实现字符串的拷贝
#include <stdio.h>
void strCpy(char *dst,const char *src)
{
while (*dst++ = *src++)
;
}
int main( void )
{
char buf[]="shell";
strCpy(buf,"cao lao shi");
puts(buf);
}