狐狸梦见乌鸦

当坚持成为一种习惯,目标将不在遥远```
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

字符串的拷贝

Posted on 2011-10-27 19:30  灬啊U  阅读(272)  评论(0编辑  收藏  举报

1.地址访问方法:

#include<stdio.h>

int main()

{

  char str1[] = "I love china",str2[20];

  int i;

  for (i = 0;*(a+i) != '\0';i++)

  {

    *(b+i) = *(a+i);

  }

  *(b+i) = '\0';

  printf("The string str1 are :\n",a);

  printf("The string str2 are:");

  for (i = 0;*(b+i) != '\0';i++)

  {

    printf("%c",b[i]);

  }

  printf("\n");

}

分析:首先上面的程序是通过地址访问其数组元素。第一个for循环语句中的条件检查a[i]或(*(a+i))是否是'\0',如果不是则说明字符串尚未处理完,就将a[i]赋值给b[i],实现复制一个字符串。最后for循环之外给b[i] = '\0'结束符。需要注意的是:第2个for循环中的printf("%c",b[i]),而当%s输出时,会出现不止一个字符串。

2.指针变量处理

#include <stdio.h>

int main()

{

  char a[] = "I love china",b[20];

  char *p1,*p2;

  int i;

  p1 = a;//使用指针时,必须先使p1和p2的值分别为字符串a和b第1个字符的地址

  p2 = b;

  for (;*p1 != '\0';p1++,p2++) // p1和p2的值不断改变,必须保证p1和p2同步移动

  {

    *p2 = *p1;

  }

  *p2 = '\0';

  for (i = 0;b[i] != '\0';i++)

  {

    printf("%c",b[i]);  

  }

  printf("\n");

}