题:
//封装strlen,strcmp,strcat,strcpy
#include <stdio.h>
#include <string.h>
#define N 100
//封装strlen:
void S_l(char a[]){
int sum=0;
for(int i=0;a[i]!='\0';i++){
sum++;
}
printf("长度为:%d,strlen为:%d",sum,strlen(a));
}
//封装strlen(指针法):
int S_l_p(char* a){
int sum=0;
while(*a != '\0'){
sum++;
a++;
}
return sum;
}
//封装strcmp:
int com(char a[],char b[]){
int sum = 0;
for(int i=0;a[i]!='\0'||b[i]!='\0';i++){
if(a[i]>b[i])
return 1;
else if(a[i]<b[i])
return -1;
else{
sum++;
}
}
if(sum == strlen(a) && sum == strlen(b)){
return 0;
}
}
//封装strcmp(指针法):
int com_p(char* a,char* b){
int sum = 0;
while(*a!='\0'||*b!='\0'){
if(*a>*b)
return 1;
else if(*a<*b)
return -1;
else{
sum++;
a++;
b++;
}
}
if(sum == strlen(a) && sum == strlen(b)){
return 0;
}
}
//封装strcat:
void S_cat(char a[],char b[]){
int l = strlen(a)+strlen(b);
int j=0;
for(int i=strlen(a);i<l;i++){
a[i]=b[j++];
}
a[l]='\0';
}
//封装strcat(指针法):
void S_cat_p(char* a,char* b){
int l = S_l_p(a);
char* tail =a+l;
while(*b != '\0'){
int t=*tail;
*tail = *b;
*b = t;
tail++;
b++;
}
}
//封装strcpy:
void S_copy(char a[],char b[]){
int l=strlen(b);
int j=0;
for(int i=0;i<l;i++){
a[j++] = b[i];
}
a[j] = '\0';
}
//封装strcpy(指针法):
void S_copy_p(char* a,char* b){
while(*b != '\0'){
*a = *b;
a++;
b++;
}
*a = '\0';
}
int main(int argc, const char *argv[])
{
char a[N]="abcde";
char b[N]="edcba";
//strlen:
//S_l(a);
//printf("%d",S_l_p(a));
//strcmp:
//printf("%d",com(a,b));
//printf("%d",com_p(a,b));
//strcat:
// S_cat(a,b);
// S_cat_p(a,b);
// puts(a);
//strcpy:
// S_copy(a,b);
// S_copy_p(a,b);
// puts(a);
return 0;
}
运行结果:
(1)strlen封装:
(2)strcmp封装:
char a[N]="abcde"; char b[N]="edcba";时:
char a[N]="sbacd"; char b[N]="edcba";时:
char a[N]="abcde"; char b[N]="abcde";时:
(3)strcat封装:
(4)strcpy 封装:
OK,that's all for today.