用指針進行字符串的復制,大小比較,長度運算


一、有一個字符串,從第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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM