字符串与指针{学习笔记}

<<用字符指针指向一个字符串:

#include <studio.h>
void main()
{
char *string="hello,world!";
printf("%s\n",string );
return;
}

例子:将字符串a复制成字符串b

#include <studio.h>
void main()
{
char a[]="i am a boy",b[20];
int i;
for (i=0;*(a+i)!='\0';i++)
{
*(b+i)=*(a+i);
*(b+i)='\0';
printf("string a is :%s\n",a);
printf("string b is :");
for (i=0;b[i]!='\0';i++)
{
printf("%c",b[i]);
printf("\n");
}
}
}

>>使用指针变量;

#include <studio.h>
void main()
{
char a[]="i am a boy",b[20],*p1,*p2;
int i;
p1=a;p2=b;
for (;*p1!='\0';p1++,p2++)
{
*p2=*p1;
*p2='\0';
printf("string a is :%s\n",a);
printf("string b is :");
}
for (i=0;b[i]!='\0';i++)
{
printf("%c",b[i]);
printf("\n");
}
return 0;
}

程序必须保证使p1和p2同步移动;

字符指针作函数参数

将一个字符串从一个函数传递到另一个函数,可以用地址传递的方法,即用字符数组名作参数,也可以用指向字符的指针变量做参数,在被调用的函数中可以改变字符串的内容,在主调函数中可以得到改变了的字符串。

用函数调用实现字符串的复制

(1)用字符数组作参数

#include <studio.h>
void main()
{
void copy_string(char from[],char to[]);
char a[]="i am a teacher.";
char b[]="you are a student";
printf("string a=%s\nstring b=%s\n",a,b);
printf("copy string a to string b:\n");
copy_string(a,b);
printf("\nstring a=%s\nstring b=%s\n",a,b );
return;
}

void copy_string(char from[],char to[])
{
int i=0;
while (from[i]!='\0')
{
to[i]=from[i];
i++;
to[i]='\0';
}
}

>>用字符指针变量作实参,先使指针变量a和b分别指向两个字符串;

#include <studio.h>
void main()
{
void copy_string(char from[],char to[]);
char from[]="i am a teacher";
char to[]="you are a student.";
char *a=from;
char *b=to;
printf("string a=%s\nstring b=%s\n",a,b);
printf("copy string a to string b:\n");
copy_string(a,b);
printf("\nstring a=%s\nstring b=%s\n",a,b );
return;
}
void copy_string(char from[],char to[])
{
int i=0;
while(from[i]!='\0')
to[i]=from[i];
i++;
to[i]='\0';
}

>>形参用字符指针变量

#include <studio.h>
void main()
{
void copy_string(char *from,char *to);
char from[]="i am a teacher";
char to[]="you are a student.";
char *a=from;
char *b=to;
printf("string a=%s\nstring b=%s\n",a,b);
printf("copy string a to string b:\n");
copy_string(a,b);
printf("\nstring a=%s\nstring b=%s\n",a,b );
return;
}
void copy_string(char *from,char *to)
{
for (;*from!='\0';from++;to++)
{
*to=*from;
*to='\0';
}
}

 

posted @ 2014-11-27 15:10  echo1006  阅读(175)  评论(0编辑  收藏  举报