字符数组的定义
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例题
编写函数返回字符串t在字符串s 中出现的起始位置或索引
定位t串首字符在s中的位置i 从第i个字符开始按位比较,全串符合, r s[],char t[]) { int i,j,k; for(i=0;s[i]!='\0' ;i++) { if( s[i]==t[0]) { for(j=i,k=0;s[j]!='\0' ;j++,k++) if(s[j]!=t[k]) break; if(t[k]=='\0') return i; } } if(s[i]=='\0') return -1; }
a b a c b d c \0 \0
用字符串初始化字符数组时系统在串尾加’\0’作为串结束标志! 字符串长度和数组长度的区别。
字符数组的定义(注意点)
(1)仅列出数组的前一部分的元素值时,其余元素的值 由系统自动置为0;若大于数组维数时,会引起不可知的 系统逻辑出错: 例: char c[4]=“abcd”; 或者 char c[3]={‘a’,’b’,’c’,’d’};都是应该避免的! (2)字符的值可作为整数处理,整数也可作为字符处理。
P59
练习
编写函数返回字符串t在字符串s 中最右边出现的起始位置或索引 (P60练习4-1)
定位t串________字符在s中的位置i 从第 i 个字符开始向 _______ 按位比较, 全串符合,返回__________ 没有完全匹配,返回-1
P50/atof扩展
例题
编写函数将整数转换为对应的 字符串。P53 ?能不能正序取数字进行转换 P53 练习3-5,3-6
int getLine(char s[],int lim) { int c,i; for(i=0;i<lim-1 && (c=getchar())!=EOF && c!='\n';++i) s[i]=c; if(c=='\n'){ s[i]=c; ++i; } s[i]='\0'; return i; } P58比较
字符数组的定义
用来存放字符数据的数组是字符数组,字符数组的 每一个元素存放一个字符。
定义:
(1) char c[4];
c[0]=‘a’; c[1]=‘b’; c[2]=‘c’, c[3]=‘d’; (2) char c[ ]={‘a’, ‘b’, ‘c’, ‘d’}; (3) char c[4]= {“abc”}; (4) char c[ ]=“abcd”;
(ab)
字符数组(串)作参数
与普通数组作参数类似,用数 组名(字符串名)作实参,按地址 传递。 字符串有结尾标记’\0’,所以, 数组长度不一定需要作为参数传入 被调函数。 P20
例题
编写函数将字符串转换为对应 的整数。
如果是空白符,跳过 如果有符号,读取符号
取整数部分,并执行转换,直到遇到第一 个非数字字符
char str2[10]={48,49,50,0}; 等价于
char str2[10]={‘0’,’1’,’2’,’\0’};
字符数组的输入与输出
(1)逐个字符的输入/输出,采用循环语句来实现; (2)把字符数组作为字符串输入/输出,对于一维字符数组只 需给出数组名即可; 例如: char str[80];
scanf("%s",&str); //遇到空格或回车键时,认为一个字符串
输入结束,接着的非空格字符作为一个新字 符串的开始
printf(“%s”,str); //输出时,遇到字符串的结束标志停止
课堂练习
【例】下列程序段的运行结果是: char a[5]={‘a’,’b’, ’\0’,’d’,’\0’}; printf(“%s”, a);