第八周任务

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本周任务

一、阅读并运行下列程序,注意字符数组和字符指针的用法.

#include

int main()

{ char *str =“I love China!”;

char string[]=“I love China!”;

printf(“%s\n”,string);

printf(“%c\n”,string[7]);

printf(“%s\n”,str);

str=”I am a student.”;

printf(“%s\n”,s tr);

/*

string=”I am a student.”;//这样可以吗?

printf(“%s\n”,string);

*/

return 0;

}

例8.18 将字符串a复制为字符串b,然后输出字符串b。

方法一:数组元素实现

#include

int main()

{ char a[ ]=“I am a student.”,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");

return 0;

}

方法二:用指针变量实现

#include

int main()

{char a[]="I am a boy.",b[20],*p1,*p2;

p1=a; p2=b;

for( ; *p1!=…\0‟; p1++,p2++)

*p2=*p1;

*p2=…\0‟;

printf(“string a is:%s\n”,a);

printf(“string b is:%s\n”,b);

return 0;

}

例8.20 用函数调用实现字符串的复制。方法一:用字符数组名作为函数参数void copy_string(char from[], char to[]) { int i=0;

while(from[i]!='\0')

{ to[i]=from[i];

i++;

}

to[i]='\0';

}

#include

int main()

{ char a[]="I am a teacher.";

char b[]="you are a student.";

printf(“a=%s\nb=%s\n",a,b);

printf("copy string a to string b:\n"); copy_string(a,b);

printf(“a=%s\nb=%s\n",a,b);

return 0;

}

方法二:用字符型指针变量作实参

#include

int main()

{void copy_string(char from[], char to[]); char a[]=“I am a teacher.”;

char b[]=“you are a student.”;

char *from=a,*to=b;

printf(“a=%s\nb=%s\n",a,b);

printf("\ncopy string a to string b:\n"); copy_string(from,to);

printf(“a=%s\nb=%s\n",a,b);

return 0;

}

方法三:用字符指针变量作形参和实参void copy_string(char *from, char *to)

{ for( ;*from!='\0'; from++,to++)

{ *to=*from; }

*to='\0';

}

函数体有多种简化写法,请见主教材

字符指针变量和字符数组注意事项

(1)字符数组由若干个元素组成,存放每个字符,而字符指针变量中存放的是地址(字符串

第1个字符的地址)。

(2)赋值方式。可以对字符指针变量赋值,但不能对数组名赋值。

char *a; a=”I love China!”; 对

char str[14];str[0]=‟I‟; 对

char str[14]; str=”I love China!”; 错

(3)初始化的含义

char *a=”I love China!”;与char *a; a=”I love China!”;等价

char str[14]= ”I love China!”;与

char str[14]; str[]=”I love China!”; 不等价

(4)存储单元的内容

char *a; scnaf(“%s”,a); 错

char *a,str[10];

a=str;

scanf (“%s”,a); 对

(5)字符数组中各元素的值是可以改变的,但字符指针变量指向的字符串常量中的内容是不

可以被取代的。

char a[]=”House”,*b=” House”;

a[2]=‟r‟; 对

char a[]=”House”,*b=”House”;

b[2]=‟r‟; 错

(6)用指针变量指向一个格式字符串

char *format;

format=”a=%d,b=%f\n”;

printf(format,a,b);

相当于

printf(“a=%d,b=%f\n”,a,b);

练习

一、选择

1.有以下定义

char a[10],*b=a;

不能给数组a输入字符串的语句是()

A)gets(a) B)gets(a[0]) C)gets(&a[0]); D)gets(b);

2.下面程序段的运行结果是_________.

char *s="abcde";

相关文档
最新文档