通过编写c语言程序,运行时实现打印另一个程序的源代码和行号
2017年6月1日程序编写说明:
1.实现行号的打印,实现代码的读取和输出,理解主函数中的参数含义。
2.对fgets函数理解不够
3.对return(1); return 0的含义理解不够
4.未实现页码的打印
1 /************************************************************************* 2 > File Name: my_print_program.c 3 > Author: Mr.Yang 4 > Purpose:自己编写程序实现打印一个程序的源代码和行号(即运行./my_print_program my_print_program.c即可打印源代码和行号,实现 5 功能和Linux中cat my_print_program.c功能类似) 6 > Created Time: 2017年06月01日 星期四 15时38分33秒 7 ************************************************************************/ 8 9 #include <stdio.h> 10 #include <stdlib.h> 11 12 /*实现从命令行读取可执行程序的路径和相关参数*/ 13 int main(int argc,char *argv[]) 14 { 15 char buffer[256]; 16 FILE *fp; 17 18 /*进行argc判断*/ 19 if(argc < 2) 20 { 21 puts("\n请按照标准命令输入,例如:\"./my_print_program test.c\",其中test.c为你需要打印的源代码!\n"); 22 return(1);//思考return (1) return 0有什么区别,它们实现的意义是什么?此处用return (1)可以实现程序执行if语句时不报段错误 23 } 24 25 /*打开代码文件*/ 26 fp = fopen(argv[1],"r"); 27 28 /*读取源代码*/ 29 int line = 1; 30 31 /*思考为什么fgets中中间参数为256,使用其它值可否,它代表着什么实际的意义?*/ 32 while(fgets(buffer,256,fp) != NULL) 33 { 34 /*调试能打印*/ 35 //puts("1"); 36 fprintf(stdout,"%4d:%s",line++,buffer); 37 } 38 39 fclose(fp); 40 41 return 0; 42 }
执行结果如下: