c语言补充内容

上传人:bin****86 文档编号:57236183 上传时间:2018-10-20 格式:PPT 页数:138 大小:528.50KB
返回 下载 相关 举报
c语言补充内容_第1页
第1页 / 共138页
c语言补充内容_第2页
第2页 / 共138页
c语言补充内容_第3页
第3页 / 共138页
c语言补充内容_第4页
第4页 / 共138页
c语言补充内容_第5页
第5页 / 共138页
点击查看更多>>
资源描述

《c语言补充内容》由会员分享,可在线阅读,更多相关《c语言补充内容(138页珍藏版)》请在金锄头文库上搜索。

1、C语言补充内容,内容,命令行参数 可变长的实参列表 输入输出重定向 动态内存分配 c预处理 gcc编译参数 编程中的注意事项 编程举例:事务处理程序,内容,命令行参数 可变长的实参列表 输入输出重定向 动态内存分配 c预处理 gcc编译参数 编程中的注意事项 编程举例:事务处理程序,命令行参数,以命令行运行程序时所带的参数 int main( int argc, char*argv ); int main( int argc, char *argv); 几乎所有的实际应用程序都需要处理命令行参数 举例: notepad.exe a.txt 7z,命令行参数(2),int main( int a

2、rgc, int *argv ); argc:正整数,表示命令行参数的个数。注意:可执行文件名本身也是一个参数 argv:指针数组,数组中的元素分别指向一个字符串,即命令行参数的各个字段 例如在命令行终端下输入:notepad.exe a.txtargc的值是2,argv0, argv1的值分别是“notepad.exe”和“a.txt”,/* Fig. 14.3: fig14_03.c Using command-line arguments */ #include int main( int argc, char *argv ) FILE *inFilePtr; /* input file

3、 pointer */FILE *outFilePtr; /* output file pointer */int c; /* define c to hold characters input by user */* check number of command-line arguments */if ( argc != 3 ) printf( “Usage: mycopy infile outfilen“ ); /* end if */else /* if input file can be opened */if ( ( inFilePtr = fopen( argv 1 , “r“

4、) ) != NULL ) /* if output file can be opened */if ( ( outFilePtr = fopen( argv 2 , “w“ ) ) != NULL ) ,下面的程序将一个文件中的内容逐字符的复制到另一个文件中 假如这个程序的可执行文件是mycopy,运行:mycopy input.txt output.txt,/* read and output characters */while ( ( c = fgetc( inFilePtr ) ) != EOF ) fputc( c, outFilePtr ); /* end while */ /*

5、 end if */ else /* output file could not be opened */printf( “File “%s“ could not be openedn“, argv 2 ); /* end else */ /* end if */else /* input file could not be opened */printf( “File “%s“ could not be openedn“, argv 1 ); /* end else */ /* end else */return 0; /* indicates successful termination

6、*/ /* end main */,内容,命令行参数 可变长的实参列表 输入输出重定向 动态内存分配 c预处理 gcc编译参数 编程中的注意事项 编程举例:事务处理程序,可变长的实参列表,函数接受的实参个数可以是不确定的 例:int printf( const char * format, ); 其中表示这个函数可以接受可变数目的实参,省略号必须放在形参列表的末尾 include stdarg.h中的宏和定义 va_list: 为了访问可变长实参列表中的实参必须声明一个类型为va_list的对象 va_start: 在一个可变长实参列表中的实参被访问前,先要调用这个宏。其功能:初始化用va_l

7、ist声明的对象,以便让宏va_arg和va_end来使用 va_arg: 宏,展开成一个表示可变长实参列表中下一个实参的值和类型的表达式。 va_end: 正常返回,/* Fig. 14.2: fig14_02.c Using variable-length argument lists */ #include #include double average( int i, . ); /* prototype */int main( void ) double w = 37.5; double x = 22.5; double y = 1.7; double z = 10.2; printf

8、( “%s%.1fn%s%.1fn%s%.1fn%s%.1fnn“,“w = “, w, “x = “, x, “y = “, y, “z = “, z );printf( “%s%.3fn%s%.3fn%s%.3fn“,“The average of w and x is “, average( 2, w, x ),“The average of w, x, and y is “, average( 3, w, x, y ),“The average of w, x, y, and z is “, average( 4, w, x, y, z ) );return 0; /* indicat

9、es successful termination */ /* end main */,/* calculate average */ double average( int i, . ) double total = 0; /* initialize total */int j; /* counter for selecting arguments */va_list ap; /* stores information needed by va_start and va_end */va_start( ap, i ); /* initializes the va_list object */

10、* process variable length argument list */for ( j = 1; j : 输出重定向符 cmd data.out : 输入重定向符 cmd 、: 原文件会被删除,重新生成新的文件 它以追加的方式,将命令的输出写入文件的末尾,原文件内容会被保留,新的内容会添加到原文件内容的后面,输入重定向,输入重定向使输入信息来自文件 小于号是输入重定向操作符,在 file 把 stdout 重定向到 file 文件中(追加) cmd 1 file 把 stdout 重定向到 file 文件中 cmd 2 file 把 stderr 重定向到 file 文件中 cmd

11、 2 file 把 stderr 重定向到 file 文件中(追加) cmd file2 cmd 命令以 file 文件作为 stdin,以 file2 文件作为 stdout,prog.c #include int main(void) char c;while(scanf(“%c, 尝试一下命令 cmd cmd outfile.txt cmd outfile.txt,输出重定向的一个应用,如在批处理命令执行期间为了禁止命令或程序执行后输出信息而扰乱屏幕, 可用DOS重定向功能把输出改向NUL设备(NUL不指向任何实际设备) 例如:C:copy a.txt b.txt NUL命令执行结束不显

12、示“1 file(s) copied“的信息。,输入重定向的一个应用,有的交互程序在执行时要求很多键盘输入, 但有时输入是固定不变的, 为加快运行速度, 可预先建立一个输入文件,此文件的内容为程序的键盘输入项, 每个输入项占一行。 假如有一个程序cx 其输入项全部包括在文件in.dat中, 执行 C:cx NUL 程序就自动执行。,管道,进程从“管道”的一端发送另一端接收,也就是说将若干命令用输入输出“管道”串接在一起,这就是管道;管道在某种程度上是输入和输出重定向的结合,前一个命 令的输出,作为下一个命令的输入,而不需要经过任何中间文件。 竖线字符”|”是管道操作符,管道命令经常与一些过滤命

13、令联合使用。DOS的管道功能是使一个程序或命令的标准输出用做另一个程序或命令的标准输入。,type aaa|DEBUG bbb 如把DEBUG的输入命令写入文件aaa, 用type命令通过管道功能将aaa的内容传输给DEBUG, 在DEBUG执行期间不再从控制台索取命令参数, 从而提高了机器效率。dir|more 使得当前目录列表在屏幕上逐屏 显示。dir的输出是整个目录列表,它不出现在屏幕上而是由于符号“|”的规定,成为下一个命令more的输入,more命令则将其输入,more命令则 将其输入一屏一屏地显示,成为命令行的输出。,dir|find”hello”file 其中dir的输出是当前目

14、录列表,不出现在屏幕上而是成为find命令的输入。find命令在输入文件中寻找指定字符串“hello”并输出包含这个字符串的行,由于输出重定向符号的规定,最后的输出已存入文件file,不出现在屏幕上。dir|find“file则是将当前目录项中的子目录项寻找出来并存入文件file中。,内容,命令行参数 可变长的实参列表 输入输出重定向 动态内存分配 c预处理 gcc编译参数 编程中的注意事项 编程举例:事务处理程序,动态内存分配,静态内存分配 在编译时完成分配,自动释放方便、效率高 栈空间,大小有限制(默认情况下,windows系统1M,Linux下8M) 动态内存分配 数据结构的存储空间不是在程序运行前事先分好,而是在程序运行中根据需要临时分配 程序员自己申请并指明大小,自己释放灵活 堆空间,空间大小几乎没有什么限制(只受到计算平台存储空间资源和操作系统对存储空间资源分配策略的限制),

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号