1. 程式人生 > >通過編寫c語言程序,運行時實現打印另一個程序的源代碼和行號

通過編寫c語言程序,運行時實現打印另一個程序的源代碼和行號

clas 行號 意義 spa clu 可執行 stdlib.h 讀取 進行

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語言程序,運行時實現打印另一個程序的源代碼和行號