1、使用指针实现 strcpy、strcat 函数的功能
#include <stdio.h>
#include<string.h>
int main(int argc, const char *argv[])
{
char a[50]="";
char b[50]="";
int i=0;
printf("请输入a:\n");
gets(a);
printf("请输入b:\n");
gets(b);
char *p=&b;
for (i=0;i<=strlen(b);i++)
{
a[i]=p[i];
/* a[i]=*(p+i);
a[i]=*(b+i);
a[i]=b(i); */
}
printf("输出a:\n");
puts(a);
printf("输出b:\n");
puts(b);
return 0;
}
#include <stdio.h>
#include<string.h>
int main(int argc, const char *argv[])
{
char a[99]="";
char b[99]="";
char *p=&a;
char *p1=&b;
int i=0;
printf("请输入a:\n");
gets(a);
printf("请输入b:\n");
gets(b);
int k=strlen(a);
int h=strlen(b);
for (i=0;i<h+1;i++)
{
*(p+k+i)=*(p1+i);
}
printf("输出a:\n");
puts(a);
return 0;
}
2、设计一个程序,判断操作系统是大端存储还是小端存储
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i=0;
char b[]="asb";
char *p=&b;
int h,l=0;
for (i=0;i<3;i++)
{
if (p[i]=='a')
{
h=&p[i];
// printf("%p\n",&p[i]);
// printf("%x\n",h);
}
else if(p[i]=='b')
{
l= &p[i];
// printf("%p\n",&p[i]);
}
}
if(h>l)
{
printf("小端存储\n");
}
else
{
printf("大端存储\n");
}
return 0;
}
3、指针实现冒泡排序
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a[10]={0};
int i=0;
int j=0;
int temp=0;
int *p=&a;
printf("请输入待排序数组:\n");
for (i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
putchar(10);
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if (*(p+i)>*(p+j))
{
temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
}
for(i=0;i<10;i++)
{
printf("%d ",*(p+i));
}
putchar(10);
return 0;
}
4、用指针的方式进行字符串倒叙。"abcdef" ==> "fedcba"
#include <stdio.h>
#include<string.h>
int main(int argc, const char *argv[])
{
int i=0;
int j=0;
char temp;
char a[99]="";
char *p=&a;
gets(a);
for (i=0;i<(strlen(a)/2);i++)
{
temp=*(p+i);
*(p+i)=*(p+strlen(a)-i-1);
*(p+strlen(a)-i-1)=temp;
}
puts(a);
return 0;
}
5、终端获取字符串删除空格,用指针方式实现
#include <stdio.h>
#include<string.h>
int main(int argc, const char *argv[])
{
int i=0;
int j=0;
int k=0;
char a[999]="";
gets(a);
char *p=&a;
int b=strlen(a);
for (i=0;i<b-k;i++)
{
if (*(p+i)==' ')
{
for(j=i;j<b-k;j++)
{
*(p+j)=*(p+j+1);
}
k++;
i--;
}
}
puts(a);
return 0;
}