「基本プログラムソース」の編集履歴(バックアップ)一覧はこちら
「基本プログラムソース」(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;
}