1.封装strcpy
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char str1[32]="helloworld";
char str2[32]="hqyj";
int i=0;
for(i=0;str1[i]!='\0';i++){
str1[i]=str2[i];
}
puts(str1);
puts(str2);
return 0;
}
//strcpy(str1,str2);
//puts(str1);
2.封装strcpm
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char str1[32]="hello";
char str2[32]="world";
int i,count1=0,count2=0;
int max=0;
for(i=0;str1[i]!='\0';i++){
count1++;
}
for(i=0;str2[i]!='\0';i++){
count2++;
}
if(count1>count2)
max=count1;
else
max=count2;
for(i=0;i<count2;i++){
if(str1[i]==str2[i]){
if(str1=='\0'){
printf("0\n");
break;
}
continue;
}else if(str1[i]>str2[i]){
printf("%d\n",str1[i]-str2[i]);
break;
}else{
printf("%d\n",str2[i]-str1[i]);
break;
}
}
return 0;
}
3.封装strlen
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
int i=0;
char str[32]="hello world";
while(str[i]!='\0'){
i++;
}
printf("len=%d\n",i);
return 0;
}
4.封装stract
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
//字符拼接
char str1[30]="0";
char str2[30]="0";
int len1=0;
int len2=0;
int i=0;
printf("请输入字符串1\n");
gets(str1);
printf("请输入字符串2\n");
gets(str2);
for(i=0;str1[i]!='\0';i++){
len1++;
}
for(i=0;str2[i]!='\0';i++){
len2++;
}
for(i=0;str2[i]!='\0';i++){
str1[len1+i]=str2[i];
}
//将s2的'\0'追加到s1中
str1[len1+i]=str2[i];
printf("拼接之后:");
puts(str1);
return 0;
}
5.终端输入一个字符串,再输入一个字符a,判断这个字符在字符串有几个?
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
int i,count=0;
char str[32]="0";
printf("请输入字符\n");
gets(str);
for(i=0;str[i]!='\0';i++){
if(str[i]=='a')
count++;
}
printf("字符a在字符串中有%d个\n",count);
return 0;
}
重点:
1.strlen:不包括‘\0’,只计算有效字符长度
字符串的处理遇到'\0'就结束了
如果是字符数组就不要用strlen 例如str[30]={'h','e','l','l','o'};
while(str1[i]!='\0'){
i++;
}
2.stract:字符串的追加(将s1中的\0替代,且s1需要有足够的空间来接收s1+s2)
char s1[32]="123456\0"
char s2[32]="world\0";
stract(s1,s2);//s1="123456world\0"
3.strcpy:字符串的拷贝
strcpy(s1,s2)将s1拷贝到s2中,包括s2的'\0',且要保证s1足够大,防止越界访问
当s2比s1短的时候,s1剩余的部分还在数组中,只不过通过字符串的方式访问不到了
需要通过printf("%c\n,s1[7]);z
4.strcpm(依次按字符比较两个字符串的ASCII码)
>0 s1>s2
==0 s1=s2
<0 s1<s2
输出值为两者ASCII码值的差
strncmp(s1,s2,4):比较前四位
5.bzero(a,sizeof(a));//将字符串a置0
6.memset(str,0,sizeof(str));//将数组置0