1、使用指针实现 strcpy、strcat 函数的功能
#include <stdio.h>
int main(int argc, const char *argv[])
{
char s1[32]="abcdef";
char s2[32]="1234";
char s3[32]="abcdef";
char *p1=NULL,*p2=NULL;
printf("s1:%s\n",s1);
printf("s2:%s\n",s2);
printf("s3:%s\n",s3);
/*strcpy*/
printf("strcpy(s1,s2):");
p1=s1;p2=s2;
do{
*p1=*p2;
p1++;
}while(*p2++);
puts(s1);
/*strcat*/
printf("strcat(s3,s2):");
p1=s3;p2=s2;
while(*(++p1));
do{
*p1=*p2;
p1++;
}while(*p2++);
puts(s3);
return 0;
}
2、设计一个程序,判断操作系统是大端存储还是小端存储
#include <stdio.h>
int main(int argc, const char *argv[])
{
short a=0x1234;
char *p=(char *)&a;
if(*p==0x34){
printf("小段存储\n");
}else{
printf("大段存储\n");
}
return 0;
}
3、指针实现冒泡排序
#include <stdio.h>
int main(int argc, const char *argv[])
{
int arr[10]={5,5,46,48,4,16,11,56,84,68};
int *p1=arr,*p2=arr,i,j,temp;
for(i=0;i<10;i++){
p1=arr;p2=arr+1;
for(j=0;j<9-i;j++){
if(*(p1+j)>*(p2+j)){
temp=*(p1+j);
*(p1+j)=*(p2+j);
*(p2+j)=temp;
}
}
}
for(i=0;i<10;i++){
printf("%-3d",arr[i]);
}
putchar(10);
return 0;
}
4、用指针的方式进行字符串倒叙。"abcdef" ==> "fedcba"
#include <stdio.h>
int main(int argc, const char *argv[])
{
char s[]="abcdef";
char *p1=s,*p2=s,temp;
while(*++p2);
p2--;
while(p1<p2){
temp=*p1;
*p1=*p2;
*p2=temp;
p2--;
p1++;
}
puts(s);
return 0;
}
5、终端获取字符串删除空格,用指针方式实现
#include <stdio.h>
int main(int argc, const char *argv[])
{
char s[64];
char *p1=s,*p2=s;
printf(":");
gets(s);
do{
if(*p2!=' '){
*p1=*p2;
p1++;
}
}while(*p2++);
puts(s);
return 0;
}