c语言打开外部doc文件,C语言-内部函和外部函数.doc
C语言-内部函和外部函数
8.10 内部函数和外部函数?函数本质上是全局的,因为一个函数要被另外的函数调用,但是,也可以指定函数根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数。
8.10.1 内部函数
如果一个函数只能被本文件中其他函数所调用,它称为内部函数。
在定义内部函数时,在函数名和函数类型的前面加static。即static 类型标识符函数名(形参表)如 static int fun(int a,int b)
内部函数又称静态函数。
使用内部函数,可以使函数只局限于所在文件,如果在不同的文件中有同名的内部函数,互不干扰。这样不同的人可以分别编写不同的函数,而不必担心所用函数是否会与其他文件中函数同名,通常把只能由同一文件使用的函数和外部变量放在一个文件中,在它们前面都static使之局部化,其他文件不能引用。
8.10.2外部函数
(1) 在定义函数时,如果在函数首部的最左端冠以关键字extern,则表示此函数是外部函数,可供其他文件调用。
如函数首部可以写为extern int fun (int a, int b)这样,函数fun就可以为其他文件调用。C语言规定,如果在定义函数时省略extern,则隐含为外部函数。本书前面所用的函数都是外部函数。
(2) 在需要调用此函数的文件中,用extern声明所用的函数是外部函数。
例8.22有一个字符串,内有若干个字符,今输入一个字符,要求程序将字符串中该字符删去。
用外部函数实现。file1.c(文件1)
main() { extern enter-string(char str[80]);extern delete-strin g(char str[ ],char ch);extern print-string(char str[]); /以上3行声明在本函数中将要调用的在其他文件中定义的3个函数 char c; char str[80]; enter-string(str); scanf("%c",&c);
delete-string(str,c); print-string(str);}file2.c(文件2) #include enter-string(char str[80])/定义外部函数enter-string*/{gets(str);} /读入字符串str*/file3.c(文件3)
delete-string(char str[],char ch) /定义外部函数delete-string { int i,j; for(i=j=0;str[i]!=′\0′;i++)if(str[i]!=ch) str[j++]=str[i]; str[j]=′\0′; }file4.c(文件4) print-string(char str[])/定义外部函数print-string/
{ printf("%s",str); } 运行情况如下:abcdefgc(输入str) c (输入要删去的字符) abdefg (输出已删去指定字符的字符串)整个程序由4个文件组成。每个文件包含一个函数。主函数是主控函数,除声明部分外,由4个函数调用语句组成。其中scanf是库函数,另外3个是用户自己定义的函数。函数delete-string的作用是根据
给定的字符串str和要删除的字符ch,对str作删除处理。算法是这样的:对str数组的字符逐个检查,如果不是被删除的字符就将它存放在数组中,见图8.21(设删除空格)。从str[0]开始逐个检查数组元素值是否等于指定要删除的字符,若不是就留在数组中,若是就不保留。从图中可以看到,应该使str[0]赋给str[0],str[1][1],str[2][2],str[3][3],然后str[5][4]……请读者注意分析如何控制i和j的变化,以便使被删除的字符不保留在原数组中。这个题目当然可以设两个数组,把不删除的字符一一赋给新数组。但我们只用一个数组,只把不被删除的字符保留下来。由于i总是大于或等于j,因此最后保留下来的字符不会覆盖未被检测处理的字符。最后将结束符‘\0’也复制到被保留的字符后面。
程序中3个函数都定义为外部函数。在main函数中用extern声明在main函数中用到的enter-string、delete-string、print-string是在其他文件中定义的外部函数。通过此例可知:使用extern声明就能够在一个文件中调用其他文件中定义的函数,或者说把该函数的作用域扩展到本文件。extern声明
c语言打开外部doc文件,C语言-内部函和外部函数.doc相关推荐
- 易语言打开C盘文件,易语言教程磁盘操作目录相关
目录操作是我们常常用到的命令:包括取运行目录,创建目录,取当前目录,改变目录,删除目录,浏览文件夹. 目录操作是我们常常用到的命令 系统核心支持库---磁盘操作(目录) 新命令 1.取运行目录()-- ...
- 【C】C语言打开,读取文件
文章目录 C语言打开,读取文件 一.明明白白我的心 二.代码飞起来 三.过程不重要,重点看结果 C语言打开,读取文件 一.明明白白我的心 1.gcc编译C语言代码 2.winds10操作 ...
- C语言打开中文路径文件
如何用C语言打开Windows下中文路径文件? 虽然不清楚原理,但我今天确实找到一种方法. 1.先编写C语言程序,里面有你的想要打开的带中文路径的文件的逻辑,fopen函数的字符串中就直接用你想要打开 ...
- c语言的所有头文件,C语言所有头文件.doc
C语言所有头文件 C语言所有头文件 stdlib.h包含了很多标准函数和标准宏定义,比如NULL, EXIT_SUCCESS等. ctype.h包含了很多类型定义 string.h包含了字符串操作相关 ...
- c语言打开一个html文件路径,C语言文件处理
-C语言文件的打开和关闭
C语言中,打开文件就是将其从外部存储器调入内存,并定义一个文件指针指向该文件,进而实现用指针对文件的读写操作(见图 1a) ). 图 1:文件的打开与关闭 使用 fopen( ) 函数打开文件的格式如 ...
- c语言程序设计实验13文件,C语言程序设计实验指导书
C语言程序设计实验指导书 C 语言程序设计实验指导书 C 语言程序设计实验指导书 实验一:C语言的运行环境及运行 C 程序的方法(2 学时) 一.实验目的和要求:一.实验目的和要求: (1)了解所用的 ...
- r语言x%3c-读取文件,R语言读写最灵活的文件——txt文件
星爷 R语言可以读取很多文件,其中以txt文本文件最为灵活,为什么呢,txt文件可以以任意符号作为分隔符,比如",","\t",空格,甚至`"--&a ...
- c语言处理单色bmp文件,C语言处理单色BMP文件
使用C 语言获得黑白BMP文档的参数而不使用其他函数. 使用C处理单色BMP照片 首先要了解BMP文件的格式: BMP图片的扫描方式 是从左到右,从下至上,对每个像素取值.一个扫描行所占的字节数为4的 ...
- android获取内部存储卡里的文件,获取Android内部存储(外部SD卡)和扩展存储卡(TF卡)的路径...
获取Android内部存储(外部SD卡)和扩展存储卡(TF卡)的路径 获取Android内部存储(外部SD卡)和扩展存储卡(TF卡)的路径 sd卡存储外部存储卡路径外部存储卡外部存储卡路径内置存储卡外 ...
最新文章
- windows优化大师怎么用_怎么在电脑上添加一款好用的提醒便签软件?
- 从概念到应用,终于有人把数据挖掘讲明白了
- python语言做法_python学习笔记(十六)
- maven引用公共包_Maven项目怎样引用其他项目/或者jar包-阿里云开发者社区
- javascript 查看变量类型
- 颜宁问4对科研夫妻:男科学家怎样平衡事业家庭?
- WinForms和XNA
- PD快充协议JD6606S资料
- 优化iphone存储空间,以及优化iphone内存。
- 关于echart 饼图显示不出来 挖坑总结
- 在64位ubuntu gcc 编译 -m32报错
- “OXO”历史上最早开发的电子游戏——游戏编年史
- 赛迪顾问看好中国信息安全市场稳步发展
- 第5次作业+160+曾元鹏
- 01_行销(Marketing)里的有用的KPI-转换率 (Conversion Rate)
- C#桌面办公应用-工资管理系统系列五
- Unity台北場優化分享 达哥 讲 Unity优化
- 团队建设管理培训 (2)PPT模板
- Xshell与Xftp链接
- 神经网络结构搜索NAS简述
热门文章
- OData metadata 定义中,entity type key 的作用是什么
- 关于 Node.js 应用里使用 winston 进行日志记录的最佳实践
- SAP Spartacus b2b 页面 popover append to body与否的不同行为
- SAP Spartacus lock focus Directive的工作原理示意图
- SAP Spartacus默认的货币列表currency是从源代码什么地方读取的
- Angular里的购物车页面实现
- 使用SAP WebIDE开发SAP Fiori Worklist应用消费OData服务
- 使用SAP CRM中间件XIF(External Interface)一步步创建服务订单
- why we see different http status code like 404, 500. where are they handled
- SAP Fiori launchpad的PageChipInstance实现