quarta-feira, 12 de novembro de 2014

Renomeando arquivos em C

Este programa vai além de seu título: "Renomeando arquivos em C".
Porque na verdade ele possui muitos outros recursos da linguagem,
Neste programa o estudante iniciante aprende a criar um arquivo binário,
E gravar no arquivo o conteúdo de uma matriz de string previamente declarada
usando a função fwrite();
Aprende abrir o arquivo criado, e fazer leitura usando a função fread();
E ainda mostra como imprimir o conteúdo do arquivo que foi armazenado numa
outra matriz do tipo char declarada vazia para isto.
Tendo mostrado a matriz imprimida com o arquivo, o programa chama na próxima tela
um simples menu de duas opões numéricas, onde só os números um e dois são aceitos,
caracteres, simples ou compostos jamais são passarão neste menu, o programa mostra uma
mensagem de advertência e retorna a sua posição original aguardando uma entrada correta.
Escolhendo a primeira opção,  programa já pede que se digite o nome de um arquivo
com sua extensão, em seguida pede que se digite um novo nome para o arquivo com sua extesão
Más se o arquivo que se pede pra renomear não for encontrado, ou se for digitado um nome errado,
o programa reprova mostrando mensagens de advertência ao usuário, e retorna, pra sua posição
aguardando que se digite um nome válido ou que encerre sua execução.
Digitando um nome de arquivo válido, o programa renomeia e mostra o novo nome
em seguida, encerra sua operação agradecendo o seu uso.

Veja abaixo imagens do programa em execução:





Veja abaixo o código do programa:

#include <stdio.h>
#include <string.h>
#include <conio.h>
void Janela5(){system("Color F0");
int lin, col;
for ( lin = 0; lin <= 25; lin++ ){
    for ( col = 0; col <= 80; col++ ){
        gotoxy( col, lin );
        if ( lin == 2 ){textbackground(LIGHTBLUE);printf( " ");}
        if ( col == 1 ){textbackground(LIGHTBLUE);printf(" ");}
        if ( lin == 25 ){textbackground(LIGHTBLUE);}
        if ( col == 80 ){textbackground(LIGHTBLUE);printf(" ");}
    }
}textbackground( BLACK );
}
void inicio( ){system ("title RENOMEANDO ARQUIVOS EM C");
int i;do{Janela5();textbackground(WHITE);
textcolor(LIGHTRED);gotoxy(31,7);printf("RENOMEANDO ARQUIVOS EM C");
textcolor(BROWN);gotoxy(25,10);printf("Programa desenvolvido por:");
textcolor(BLACK);gotoxy(52,10);printf("Samuel Lima");
textcolor(BLUE);gotoxy(34,12);printf("sa_sp10@hotmail.com");
textcolor(LIGHTBLUE);gotoxy(24,14);printf("DIGITE    PARA SAIR OU   PARA CONTINUAR  ");
textcolor(LIGHTRED);gotoxy(32,14);printf("1");textcolor(LIGHTRED);gotoxy(47,14);printf("2");
gotoxy(41,16);
scanf("%d",&i);fflush(stdin);
if( i == 1 ){textcolor(LIGHTRED);gotoxy(35,20);printf ("MUITO OBRIGADO");Sleep(1800);exit(0);}
if( i == 2 ){system("cls"); return;}
else {textcolor(LIGHTRED);gotoxy(37,20);printf ("\aOPÇÃO ERRADA");Sleep(1800);system("cls");}
}
while(i);
}
int Imp_Matr ( char *num ){
    unsigned int i;
    for( i = 0; i < strlen ( num ); i++ ){
        if ( num [ i ] < '0' || num [ i ] > '9' )
            return 0;
    }
    return 1;
}
int main(){
    inicio( );int i = 0, n;
    FILE *arq;char num [ 3 ];
    char  linha [ 11 ] [ 17 ] = { {"João Henrique"},
            {"Amanda Santos"},
            {"Patrícia Gomes"},
            {"Ricardo Souza"},
            {"Cláudia Ferraz"},
            {"Rafaela Pimentel"},
            {"Samuel Júnior"},
            {"Sandro Rúbens"},
            {"Lúcia Paola"},
            {"Luíz Manolo"},
            {"Estér Guimarães"}};
    if ( ( arq = fopen ("Arquivo.bin", "w+b" ) ) == NULL ){
        printf("Houve um erro na criação do arquivo");
        getche();exit(1);
    }
    if ( fwrite ( &linha, sizeof ( linha ), 1, arq ) != 1 ){
        printf("Houve um erro na gravação do arquivo");
        getche();exit(1);
    }
    fclose(arq);
    if ( ( arq = fopen("Arquivo.bin", "r+b" ) ) == NULL ){
        printf("Houve um erro na abertura do arquivo");
        getche();exit(1);
    }
    if ( fread ( &linha , sizeof ( linha ), 1, arq ) != 1 ){
        printf("Houve um erro na leitura do arquivo");
        getche();exit(1);
    }
    system("cls");Janela5();textbackground(WHITE);
    textcolor(LIGHTRED);gotoxy(31,3);printf("RENOMEANDO ARQUIVOS EM C");
    textcolor(LIGHTBLUE);gotoxy(26,5);printf( "Abaixo a leitura do arquivo aberto" );
    textcolor(BLACK);
    for( i = 0; i <= 10; i++ ){
        gotoxy(35,i + 7);
        printf("%s", linha [ i ] );
    }fclose( arq );
    Sleep(1000);textcolor(LIGHTRED);
    gotoxy(32,22);printf("PRESSIONE QUALQUER TECLA");getche();
    do{system("cls");Janela5();textbackground(WHITE);
    textcolor(LIGHTRED);gotoxy(31,3);printf("RENOMEANDO ARQUIVOS EM C");
    textcolor(LIGHTBLUE);gotoxy(31,5);printf("Deseja renomear o arquivo ?");
    textcolor(LIGHTBLUE);gotoxy(23,7);printf("Escolha ");
    textcolor(LIGHTRED);printf("[ 1 ] ");
    textcolor(LIGHTBLUE);printf("para sim ou ");
    textcolor(LIGHTRED);printf("[ 2 ] ");
    textcolor(LIGHTBLUE);printf("Para Sair " );
    textcolor(LIGHTRED);gets ( num );fflush(stdin);
    n =  atoi (num);
    if ( n < 1 || n > 2 ){
        textcolor(LIGHTRED);gotoxy(25,10);
        printf("\aNúmero Acima de 0 e menor que 2" );
        getche();continue;
    }
    if( n == 2 ){
        textcolor(LIGHTRED);gotoxy(35,21);printf("MUITO OBRIGADO");
        Sleep(1800);exit(0);
    }
    if ( Imp_Matr ( num ) == 0 || n == 0){
        textcolor(LIGHTGREEN);gotoxy(25,7);printf("\aVocê digitou : %s", num );
        Sleep(1800);textcolor(LIGHTGREEN);gotoxy(25,9); printf("\a%s Não é Válido !", num );
        Sleep(1800);continue;
    }
    int  ren;
    char Arq_ivo [ 10 ];
    char  Arquivo [ 10 ];
    textcolor(LIGHTBLUE);gotoxy(20,9);printf("Digite o nome de um arquivo com sua extensão");
    textcolor(LIGHTRED);gotoxy(20,11);scanf("%s", Arq_ivo);fflush ( stdin );
    textcolor(LIGHTBLUE);gotoxy(20,13);printf("Digite um novo nome para o arquivo com sua extensão");
    textcolor(LIGHTRED);gotoxy(20,15);scanf("%s", Arquivo);fflush ( stdin );
    ren = rename ( Arq_ivo, Arquivo );
    if( ren != 0 ){
        textcolor(LIGHTBLUE);gotoxy(20,17);printf( "Não foi posível renomear o arquivo ");
        textcolor(LIGHTRED);gotoxy(20,18);printf("%s ", Arq_ivo );Sleep(800);
        textcolor(LIGHTBLUE);gotoxy(20,19);printf("Talvez ele não exista");Sleep(800);
        textcolor(LIGHTBLUE);gotoxy(20,20);printf("Tente outra vez");Sleep(800);
        Sleep(2800);continue;
    }
    else{textcolor(LIGHTBLUE);gotoxy(20,17);printf( "O arquivo de nome " );
    textcolor(LIGHTRED);printf(" %s ", Arq_ivo );Sleep(1800);
    textcolor(LIGHTBLUE);gotoxy(20,18);printf( "foi  renomeado com sucesso para ");
    textcolor(LIGHTRED);gotoxy(20,19);printf("%s\n", Arquivo );
    }Sleep(2800);break;
    }while( 1 );
    textcolor(LIGHTRED);gotoxy(36,23);printf ("MUITO OBRIGADO");
    getche();exit(0);
}