「基本プログラムソース」の編集履歴(バックアップ)一覧はこちら

基本プログラムソース」(2007/06/21 (木) 18:01:20) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

//c #include <stdio.h> #include <stdlib.h> #include <string.h> #define LINE_SIZE 256 #define CMD_SIZE 156 void execmd(FILE *temp_file, char *temp_cmd, int *p); void display_all(FILE *temp_file); void save_end(int *p); int main(int argc, char *argv[]){ FILE *txtfile; int start = 0; int coe = 1;//終了条件(Condition Of End) int *p_coe = &coe; //coeへのポインタ char cmd[CMD_SIZE]; //コマンド //ファイルの引数を調べる。 if(argc != 2){ printf("引数にはファイルのパスを指定してください\n"); exit(1); } //終了するまで無限ループ while(coe){ //ファイルが開けるかどうかを調べる。 if((txtfile = fopen(argv[1], "r")) == NULL){ printf("ファイルを開くことが出来ません"); exit(1); } //*を表示する if(start) printf("*"); else{ printf("ファイルを終わりまで読み込みました\n*"); start++; } //コマンドを入力 gets(cmd); execmd(txtfile, cmd, p_coe); //ファイルを閉じる fclose(txtfile); } return 0; } //機能はここに追加 void execmd(FILE *temp_file, char *temp_cmd, int *p){ if(strcmp(temp_cmd, "l") == 0 || strcmp(temp_cmd, "L") == 0) display_all(temp_file); if(strcmp(temp_cmd, "e") == 0 || strcmp(temp_cmd, "E") == 0) save_end(p); return; } //以下は拡張した関数群 //すべての行を表示 void display_all(FILE *temp_file){ char str[LINE_SIZE]; int i = 1; while(!feof(temp_file)){ if(fgets(str, LINE_SIZE - 1, temp_file) == NULL) strcpy(str, "\n"); if(ferror(temp_file)){ printf("ファイルエラー\n"); break; } if(!feof(temp_file)) printf("%8d: %s", i, str); else{ if(strcmp(str, "\n") != 0) printf("%8d: %s\n", i, str); } i++; } return; } //セーブして終了 void save_end(int *p){ *p = 0; return; }
//c #include <stdio.h> #include <stdlib.h> #include <string.h> #define LINE_SIZE 256 #define CMD_SIZE 100 void execmd(FILE *temp_file, char *temp_cmd, int *p); void display_all(FILE *temp_file); void save_end(int *p); int main(int argc, char *argv[]){ FILE *txtfile; int start = 0; int coe = 1;//終了条件(Condition Of End) int *p_coe = &coe; //coeへのポインタ char cmd[CMD_SIZE]; //コマンド //ファイルの引数を調べる。 if(argc != 2){ printf("引数にはファイルのパスを指定してください\n"); exit(1); } //終了するまで無限ループ while(coe){ //ファイルが開けるかどうかを調べる。 if((txtfile = fopen(argv[1], "r")) == NULL){ printf("ファイルを開くことが出来ません"); exit(1); } //*を表示する if(start) printf("*"); else{ printf("ファイルを終わりまで読み込みました\n*"); start++; } //コマンドを入力 fgets(cmd, CMD_SIZE, stdin); execmd(txtfile, cmd, p_coe); //ファイルを閉じる fclose(txtfile); } return 0; } //機能はここに追加 void execmd(FILE *temp_file, char *temp_cmd, int *p){ if(strcmp(temp_cmd, "l\n") == 0 || strcmp(temp_cmd, "L\n") == 0) display_all(temp_file); if(strcmp(temp_cmd, "e\n") == 0 || strcmp(temp_cmd, "E\n") == 0) save_end(p); return; } //以下は拡張した関数群 //すべての行を表示 void display_all(FILE *temp_file){ char str[LINE_SIZE]; int i = 1; while(!feof(temp_file)){ if(fgets(str, LINE_SIZE - 1, temp_file) == NULL) strcpy(str, "\n"); if(ferror(temp_file)){ printf("ファイルエラー\n"); break; } if(!feof(temp_file)) printf("%8d: %s", i, str); else{ if(strcmp(str, "\n") != 0) printf("%8d: %s\n", i, str); } i++; } return; } //セーブして終了 void save_end(int *p){ *p = 0; return; }

表示オプション

横に並べて表示:
変化行の前後のみ表示: