-
1.strlen(求字符串长度):long len = strlen(数组名);
功能:计算字符串长度,遇‘\0’停止计算,‘\0’不被计算入内;
#include <stdio.h>
#include <string.h>
/*strlen函数*/
int main()
{
char buf[20]={"abcdefg"};
int i=0,a=0;
long n=strlen(buf);
for(i=0;i<20;i++)//for循环替代
{
if(buf[i]=='\0')
{
break;
}
}
printf("buf=%ld\n",n);
printf("i=%d\n",i);
return 0;
}
for改良后:
for(i=0;buf[i]!='\0';i++);
其它替代写法:
int i = 0;
while(buf[i++]!='\0');
//buf[0] 'h' i=1
//buf[1] 'e' i=2
//buf[2] 'l' i=3
//buf[3] '\0' i=4
i--;
//改良后
int i = -1;
while(buf[++i]!='\0');
结果:
buf=7
i=7
-
2.strcpy(复制字符串):strcpy(s1,s2);
功能:将s2里面的内容,复制到s1里面,遇到s2的‘\0’的时候,停止复制,‘\0’也要复制过去;
#include <stdio.h>
#include <string.h>
/*strcpy字符串拷贝*/
int main()
{
char s1[10]={"abcdef"};
char s2[10]={"123"};
strcpy(s1,s2);
printf("s2=%s\n",s2);
printf("s1=%s\n",s1);
return 0;
}
运行结果:
s2=123
s1=123
代替函数:
int i=0;
for(i;s2[i]!='\0';i++)
{
s1[i]=s2[i];
}
s1[i]='\0';
-
3.strcat(拼接字符串):strcat(s1,s2);
功能:先找数组名s1的‘\0’位置,s2的第一个字符覆盖 s1 的‘\0’,并将s2的其余字符依次拼接到s1的后面,s2的‘\0’也拼接过去。
#include <stdio.h>
#include <string.h>
/*strcat字符串拼接函数*/
int main()
{
char s1[64]={"abcdefg"};
char s2[32]={"123"};
strcat(s1,s2);
printf("s1=%s\n",s1);
return 0;
}
替代函数:
int i=0,j=0;
while(s1[i]!='\0')
{
i++;
}
while(s2[j]!='\0')
{
s1[j+i] = s2[j];
j++;
}
s1[j+i] = '\0';
运行结果:
s1=abcdefg123
-
4.strcmp(比较字符串):int a=strcmp(s1,s2);
功能:两个数组的对应元素依次比较,直到出现不同的元素,结束;此时a的值就是比较之后的差值;当s1和s2同时遇到‘\0’也停止比较,结果为0,0表示相同。(相同返回0,不相同返回非0)
#include <stdio.h>
#include <string.h>
/*strcmp字符串比较函数*/
int main()
{
char s1[10]={"123456"};
char s2[10]={0};
printf("输入s2:\n");
scanf("%s",s2);
int a=strcmp(s1,s2);
if(a==0)
{
printf("ture\n");
}
else
{
printf("worng\n");
}
return 0;
}
替代函数:
int i=0,a=0;
for(i=0;i<10;i++)
{
a=s1[i]-s2[i];
if(a!=0||(s1[i]=='\0'&&s2[i]=='\0'))
{
break;
}
}
if(a==0)
{
printf("ture\n");
}
else
{
printf("worng\n");
}
运行结果: