用指针进行字符串的复制,大小比较,长度运算

一、有一个字符串,从第n个开始复制成为另一个字符串

1、用数组的方法

#include<stdio.h>
int main()
{   void copy(char from[],char to[]);
    char a[20],b[20];
    gets(a);
    copy(a,b);
    printf("%s\n",b);
    return 0;
}
void copy(char from[],char to[])
{   int n=2,m=0;
    for(; from[n-1]!='\0'; n++,m++)
        to[m]=from[n-1];
    to[m]='\0';
}

运行结果:

aboy

boy

2、用指针的方法

#include<stdio.h>
int main()
{   char a[20],b[20];
    int n=2;
    gets(a);
    char *from=&a[n-1],*to=b;
    for(; *from!='\0'; from++,to++)
        *to=*from;
    *to='\0';
    printf("%s",b);
    return 0;
}

运行结果:

aboy

boy

 二、比较字符串的大小

#include<stdio.h>
#include<string.h>
int main()
{   void sort(char *name[],int n);
    void print(char *name[],int n);
    char *name[]= {"bHBUYj","HKUBjhbk","hvk","dBGGF","abcd"};
    int n=5;
    sort(name,n);
    print(name,n);
    return 0;
}
void sort(char *name[],int n)
{   char *t;
    int i,j,k;
    for(i=0; i<n-1; i++)      //选择法排序
    {   k=i;
        for(j=i+1; j<n; j++)
            if(strcmp(name[k],name[j])>0)k=j;
        if(k!=i)
        {
            t=name[i];
            name[i]=name[k];
            name[k]=t;
        }
    }
}
void print(char *name[],int n)
{   int i;
    for(i=0; i<n; i++)
        printf("%s\n",name[i]);
}

运行结果:

HKUBjhbk

abcd

bHBUYj

dBGGF

hvk

 三、有一字符串,写一函数,求字符串的长度,要求函数形参用指针变量

#include<stdio.h>
int main()
{   int lengh(char *p);
    int len;
    char str[20];
    scanf("%s",str);
    len=length(str);
    printf("%d",len);
    return 0;

}
int length(char *p)
{   int n=0;
    for(n=0; *p!='\0'; p++,n++)
        return(n);
}

运行结果:

China

0

运行出错,需将for语句改为for(n=0;*p!='\0';p++)n++;

才能得到正确的结果 5

 

posted @ 2018-12-27 11:10  YTHLW  阅读(2180)  评论(0编辑  收藏  举报