C语言程序的设计学习教程.pptVIP

  • 0
  • 0
  • 约1.8万字
  • 约 79页
  • 2019-11-06 发布于广东
  • 举报
for (;*p!=\0;p++,q++) *q=*p; *q=\0; /* 字符串以’\0’ 结尾 */ printf(String a : %s\n,a); printf(String b : %s\n,b); } 输入: 3↙ 输出: computer mputer 考虑一下,若输出语句改为如下语句会如何? printf(“string a is :%s\n”,p); printf(“string b is %s\n”,q); 8.4.2 字符串数组 字符串数组:是指数组中的每个元素都是一个存 放字符串的数组。 字符串数组可以用一个二维字符数组来存储。 例如:char languge[3] [10]; 数组的第一个下标决定字符串的个数,第二个下标是字符串的最大长度(实际最多9个字符,‘\0’占一位置)。 可以对字符串数组赋初值。例如: char languge[3] [10];={“Basic”, “c++”, “pascal”} 8.5 指针数组与命令行参数 8.5.1 指针数组 指针数组:是指针变量的集合。即它的每一个元素都是指针变量,且都具有相同的存储类别和指向相同的数据类型。 指针数组的定义形式为: 类型标识符 *数组名[数组长度说明]; 例如: int *p[10]; 由于[ ]比*的优先级高,因此p先与 [10]结合成p[10],而p[10]正是数组的定义形式,共有10个元素。最后p[10]与*结合,表示它的各元素可以指向一个整型变量。 指针数组广泛应用于对字符串的处理 例如有定义: char *p[3]; 定义了一个具有三个元素p[0],p[1],p[2]的指针数组。每个元素都可以指向一个字符数组,或字符串。 若利用数组初始化,则: char *p[3]= {“Basic”, “c++”, “pascal”}; P[0]指向字符串“Basic”; P[0]指向字符串“c++”; P[0]指向字符串“pascal” ; 例8.9 字符指针数组的赋值 #define NULL 0 main( ) {static char a[ ]=“Fortran”; static char b[ ]=“COBOL”; static char c[ ]=“Pascal”; int i; char *p[4]; p[0]=a; p[1]=b; p[2]=c; p[3]=NULL; for (i=0;p[i]!=NULL;i++) printf(“Language %d is %s\n”,i+1,p[i]); } 例8.10 有若干本书,将书名按字典顺序排序 #includestdio.h #includestring.h main() { char *bname[]={Programming in ANSI C,BASIC,Visual C++ 6.0 Programming ,TRUBO C 2.0}; int i,m; void sort(char *name[],int); m=sizeof(bname)/sizeof(char *); /*字符串个数*/ sort(bname,m); /* 排序,改变指针的连接关系*/ printf(\n); for (i=0;im;i++) /* 输出排序结果*/ printf(%8s,bname[i]); } void sort(char *name[], int n) /*选择排序*/ {char *t; int i,j,k; /* k记录每趟最小值下标 */ for (i=0;in-1;i++) {k=i; for (j=i+1;jn;j++) if (strcmp(name[k],name[j])0) k=j; /* 第j个元素更小*/ if (k!=i) /* 最小元素是该趟的第一个元素 则不需交换 */ { t=name[i];name[i]=name[k];name[k]=t;} } } 输出结果为: BASIC Programming in ANSI C TRUBO

文档评论(0)

1亿VIP精品文档

相关文档