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

Posted 杨来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过编写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 }

执行结果如下:

以上是关于通过编写c语言程序,运行时实现打印另一个程序的源代码和行号的主要内容,如果未能解决你的问题,请参考以下文章

Python语言编写程序,将两个整数a和b合并成一个整数放到c里面,并打印出来?

linux怎么运行c程序

请求分页管理模拟实现的C语言源代码

用c语言写二叉树,源代码。

收集启动函数

JDK 怎么重新安装是提示啥DLL不能运行?