#include #include #include #define MaxLinhas 100 #define MaxColunas 80 FILE *Arq; char NomArq[50]; char Texto[MaxLinhas][MaxColunas]; int TotLin; int main(int argc, char *argv[]) { int i; int opcao; int lini,lfim; printf("\n"); printf(">> mEditor - Micro editor de textos by F.S.O. <<\n"); printf("\n"); /* Abre o arquivo texto e le o texto inicial */ printf("Nome do arquivo de entrada: "); scanf ("%s",NomArq); Arq=fopen(NomArq,"rt"); if (Arq==NULL) { printf("# Erro: Arquivo nao encontrado!\n"); printf("# Editando um texto vazio...\n"); TotLin=0; } else { TotLin=0; while (!feof(Arq)) { fgets(Texto[TotLin],MaxColunas,Arq); printf("%3d: ",TotLin); fputs(Texto[TotLin],stdout); TotLin=TotLin+1; if (TotLin == MaxLinhas) { printf("# Erro: Arquivo maior que o tamanho maximo suportado!\n"); system("pause"); exit(0); } } printf("\n\n"); fclose(Arq); } /* Laco principal do programa com as opcoes */ while (1) { printf("Escolha uma opcao: \n"); printf("1 - Listar \n"); printf("2 - Editar \n"); printf("3 - Inserir Linha\n"); printf("4 - Apagar Linha\n"); printf("5 - Adicionar texto no final \n"); printf("6 - Procurar texto \n"); printf("7 - Procurar e Substituir texto \n"); printf("8 - Abandonar \n"); printf("9 - Sair \n"); printf ("> "); scanf ("%d",&opcao); if (opcao==1) { printf("\n>> Listar <<\n"); printf("Linha inicial: "); scanf ("%d",&lini); printf("Linha final : "); scanf ("%d",&lfim); if (lini < 0) lini=0; if (lfim >= TotLin) lfim=TotLin-1; for (i=lini; i <= lfim; i++) { printf("%3d: ",i); fputs (Texto[i],stdout); } printf("\n\n"); system("pause"); } else if (opcao==2) { printf("\n>> Editar <<\n"); printf("Linha: "); scanf ("%d",&lini); printf("%3d: ",lini); fputs (Texto[lini],stdout); printf("Novo Texto: \n"); fflush(stdin); fgets (Texto[lini],MaxColunas,stdin); printf("\n\n"); system("pause"); } else if (opcao==3) { printf("\n>> Inserir Linha <<\n"); printf("Linha: "); scanf ("%d",&lini); if ((lini > 0) && (lini < TotLin)) { for (i=TotLin; i > lini; i--) strcpy(Texto[i],Texto[i-1]); TotLin=TotLin+1; strcpy(Texto[lini],"\n"); printf(">> Linha inserida <<"); } else printf("# Linha inválida"); printf("\n\n"); system("pause"); } else if (opcao==4) { printf("\n>> Apagar Linha <<\n"); printf("Linha: "); scanf ("%d",&lini); for (i=lini; i < TotLin-1; i++) strcpy(Texto[i],Texto[i+1]); TotLin=TotLin-1; printf(">> Linha apagada <<"); printf("\n\n"); system("pause"); } else if (opcao==8) { printf("\n>> Abandonar <<\n"); break; } else if (opcao==9) { printf("\n>> Sair <<\n"); printf("Nome do arquivo de saida: "); scanf ("%s",NomArq); Arq=fopen(NomArq,"wt"); if (Arq==NULL) { printf("# Erro na gravacao do arquivo!\n"); printf("# PANIC!!!\n\n"); exit(0); } for (i=0; i < TotLin; i++) fputs(Texto[i],Arq); fclose(Arq); printf(">> Arquivo gravado <<\n\n"); break; } else printf("\n# Opcao nao disponivel #\n"); } system("PAUSE"); return 0; }