网站大量收购闲置独家精品文档,联系QQ:2885784924

中国石油大学c语第8章_字符串.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中国石油大学c语第8章_字符串

第8章 字符串  回顾 一维数组的定义、初始化 一维数组元素输入/输出 二维数组的定义、初始化 二维数组元素的输入/输出 必须用数组处理的一些问题 教学目标 理解字符串常量 理解字符数组和字符串的异同 使用字符串输入/输出函数 使用字符串处理函数 理解指针与字符串的关系 使用字符指针数组 使用字符串作为函数参数 字符串简介 字符串常量 字符串常量是双引号括起的任意字符序列 字符串与字符数组 在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串 字符串 一串以\0结尾的字符在C语言中被看作字符串 用双引号括起的一串字符是字符串常量,C语言自动为其添加\0终结符 C语言并没有为字符串提供任何专门的表示法,完全使用字符数组和字符指针来处理 字符数组 每个元素都是字符类型的数组,如 char name[20]; 字符数组和字符串的区别是:字符串的末尾有一个空字符‘\0‘,没有结束符就不能按照字符串处理。 一维字符数组的初始化 一维字符数组的初始化 问题: char ch[6]=123456; char ch[6]=1234567; char ch[6]=123; 输出数组元素的结果是什么?(看示例) 字符串的输入输出 对于字符串(字符数组),在程序中既可以逐个引用字符串中的单个字符(数组元素) 也可以一次引用整个字符串(字符数组) (与数值型数组的区别) 对字符数组逐个元素输入/输出 for (i=0; i10; i++) { s[i]=getchar(); } 字符串I/0函数 字符串示例 字符串I/0函数 字符串I/0函数 字符串示例 字符串示例 scanf和gets使用注意事项 scanf和gets都可以给字符数组赋值,scanf不能读入带空格的字符串,gets可以。 但是scanf和gets两种用法都不安全,当用户输入的字符个数多于字符数组的维数时,数组将产生越界。 scanf被公认为最易遭到黑客攻击的函数之一 gets()也没有提供限制输入字符串长度的方法,容易引起缓冲区溢出,给黑客攻击以可乘之机 对输入字符串长度有限制的函数调用 fgets(buf, sizeof (buf), stdin); 一维字符数组举例 统计字符串中每个字符出现的次数。 一维字符数组举例 #include stdio.h int main ( ) { int count[128]={0*128}; /* 统计数组,初始化时全为 0 */ char line[200]; int k=0; printf (Enter String:); gets (line); while (line[k]!=\0) /* 对字符进行统计 */ count [line[k++]]++; /* 将字符作为下标*/ for(k=0;k128;k++) { if(count[k]0) printf(%c=%d\t,k,count[k]);} return 0; } 一维字符数组举例 输入一行字符,将其中的每个字符从小到大排列后输出。 二维字符数组 二维字符数组的定义和初始化 二维字符数组 二维字符数组的引用 二维字符数组举例 例:输入英文的星期几,确定对应的数字。 可以查星期表,若发现与表中某项相同(英文的星期几), 则输出该字符串在表中的位置(序号);若查到表尾仍不相同, 则输出错误信息。 可以建立如下星期表: 二维字符数组举例 #include stdio.h int main ( ) { int i,k; char id[10]; char w_day[ ][10]={Sunday,Monday,Tuesday,Wednesday,Thursday,Friday, Saturday }; printf(Enter a string:); scanf(%s,id); for (i=0; i7; i++) { for(k=0;id[k]!=\0;k++) { if(w_day[i][k]==id[k]) continue; else break; } if (id[k] ==\0) break; } if (i7) printf (%s is %d\n, id, i); else printf (Error !\n);

文档评论(0)

138****7331 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档