第十二章编写大程序_第1页
第十二章编写大程序_第2页
第十二章编写大程序_第3页
第十二章编写大程序_第4页
第十二章编写大程序_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、整理ppt1编写大程序第十二章:编写大型程序整理ppt2qC C程序结构程序结构l常见的常见的C C程序由多个源文件组成;还有一些头文件。程序由多个源文件组成;还有一些头文件。l源文件:源文件: 函数的定义和外部变量函数的定义和外部变量l头文件头文件: : 可以在源文件直接共享的信息可以在源文件直接共享的信息C程序程序源程序文件源程序文件1源程序文件源程序文件2源程序文件源程序文件n预编译命令预编译命令函数函数1函数函数m说明部分说明部分执行部分执行部分第十二章:编写大型程序整理ppt3把程序分成多个源文件有许多显著的特点把程序分成多个源文件有许多显著的特点n把相关的函数和变量分组放在同一个文

2、件中可以使程序的结构清晰n可以分别对每一个源文件进行编译,单独修改,单独编译;n把函数归类分组放在不同的源文件中更利于复用第十二章:编写大型程序整理ppt4把程序分成多个源文件把程序分成多个源文件引发的问题引发的问题n某个文件中的函数如何调用定义在其他文件中的函数呢?n函数如何访问其他文件的外部变量?n2个文件如何共享一个宏定义或类型定义?答案:答案: #include指令指令第十二章:编写大型程序整理ppt5#include指令的使用指令的使用n#include 引用引用C语言自身库的头文件语言自身库的头文件 搜寻:系统头文件所在的目录搜寻:系统头文件所在的目录n#include “ 文件名

3、文件名” 引用所有的头文件,包含自己编写的头文件引用所有的头文件,包含自己编写的头文件 搜寻:先搜寻当前目录,然后搜寻系统头文件搜寻:先搜寻当前目录,然后搜寻系统头文件所在的目录所在的目录 也可指定目录:也可指定目录: #include “c:*.h”第十二章:编写大型程序整理ppt6共享类型定义共享类型定义n在程序中有2个文件 #include boolean.h:第十二章:编写大型程序整理ppt7共享函数原型共享函数原型第十二章:编写大型程序整理ppt8当当 prog.c 被编译时被编译时, 将被编译将被编译2次,导致重定义错误次,导致重定义错误.8保护头文件保护头文件第十二章:编写大型程

4、序整理ppt9 为了保护头文件,用为了保护头文件,用 #ifndef-#endif来封来封闭文件的内容。闭文件的内容。 #ifndef BOOLEAN_H#define BOOLEAN_H#define TRUE 1#define FALSE 0typedef int Bool;#endif9保护头文件保护头文件-解决办法解决办法第十二章:编写大型程序整理ppt10完整案例分析-文本格式程序n这个程序分成3个文件qword.c: 读单词的相关函数qline.c: 行缓冲相关的函数qjustify.c: 主调函数n对应3个头文件:qword.h: word.c中的函数原型qline.h: lin

5、e.c中的函数原型第十二章:编写大型程序整理ppt11word.h#ifndef WORD_H#define WORD_H /* * read_word: Reads the next word from the input and * * stores it in word. Makes word empty if no * * word could be read because of end-of-file. * * Truncates the word if its length exceeds * * len. * */void read_word(char *word, int l

6、en); #endif第十二章:编写大型程序整理ppt12line.h#ifndef LINE_H#define LINE_H /* * clear_line: Clears the current line. * */void clear_line(void); /* * add_word: Adds word to the end of the current line. * * If this is not the first word on the line, * * puts one space before word. * */void add_word(const char *w

7、ord);第十二章:编写大型程序整理ppt13/* * space_remaining: Returns the number of characters left * * in the current line. * */int space_remaining(void); /* * write_line: Writes the current line with * * justification. * */void write_line(void); /* * flush_line: Writes the current line without * * justification. I

8、f the line is empty, does * * nothing. * */void flush_line(void); #endif第十二章:编写大型程序整理ppt14justify.c/* Formats a text */ #include #include line.h#include word.h #define MAX_WORD_LEN 20 int main(void) char wordMAX_WORD_LEN+2; int word_len; 第十二章:编写大型程序整理ppt15 clear_line(); for (;) read_word(word, MAX_W

9、ORD_LEN+1); word_len = strlen(word); if (word_len = 0) flush_line(); return 0; if (word_len MAX_WORD_LEN) wordMAX_WORD_LEN = *; if (word_len + 1 space_remaining() write_line(); clear_line(); add_word(word); 第十二章:编写大型程序整理ppt16word.c#include #include word.h int read_char(void) int ch = getchar(); if (

10、ch = n | ch = t) return ; return ch;第十二章:编写大型程序整理ppt17void read_word(char *word, int len) int ch, pos = 0; while (ch = read_char() = ) ; while (ch != & ch != EOF) if (pos len) wordpos+ = ch; ch = read_char(); wordpos = 0;第十二章:编写大型程序整理ppt18line.c#include #include #include line.h#define MAX_LINE_L

11、EN 60 char lineMAX_LINE_LEN+1;int line_len = 0;int num_words = 0; void clear_line(void) line0 = 0; line_len = 0; num_words = 0;第十二章:编写大型程序整理ppt19void add_word(const char *word) if (num_words 0) lineline_len = ; lineline_len+1 = 0; line_len+; strcat(line, word); line_len += strlen(word); num_words+;

12、int space_remaining(void) return MAX_LINE_LEN - line_len;第十二章:编写大型程序整理ppt20void write_line(void) int extra_spaces, spaces_to_insert, i, j; extra_spaces = MAX_LINE_LEN - line_len; for (i = 0; i line_len; i+) if (linei != ) putchar(linei); else spaces_to_insert = extra_spaces / (num_words - 1); for (j = 1; j 0) puts(line);第十二章:编写大型程序整理ppt21构建包含多文件的大型程序的步骤:构建包含多文件的大型程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论