用指针进行字符串的复制,大小比较,长度运算
一、有一个字符串,从第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