通过编写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 }
复制代码

执行结果如下:

posted @   杨来  阅读(1084)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示