通过编写c语言程序,运行时实现打印另一个程序的源代码和行号

时间:2021-06-11 03:57:24

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 }

执行结果如下:

通过编写c语言程序,运行时实现打印另一个程序的源代码和行号