Ir para conteúdo
Fórum Script Brasil

Paulo Jardim

Membros
  • Total de itens

    77
  • Registro em

  • Última visita

Tudo que Paulo Jardim postou

  1. http://scriptbrasil.com.br/forum/index.php?showtopic=167549 de uma oçhada, nesse exempl oele faz o que você quer. Agora precisa estudar bem algumas funções do C: é isso aqui que você vai precisar fazer while ( !feof(saida) && achou2 ==5) // mudar o status do arquivo saida { fscanf(saida, "%s", &banco2.nome2); fscanf(saida, "%s", &banco2.status2); fseek (saida, 0, SEEK_CUR); tamfile2=ftell (saida); fscanf(saida, "%s", &banco2.cliente2); fscanf(saida, "%d", &banco2.horas2); fscanf(saida, "%f", &banco2.valorhora2); if (strcmpi (nomegarota, banco2.nome2) == 0 ) // Caso já tenha no arquivo saida.txt o nome só mudar o status para A { fseek ( saida , tamfile2-1 , SEEK_SET ); // TAMFILE ARMAZENOU A POSIÇÃO DO STATUS NO TXT if (op6 == 1) //'TAMLIFE-1' É A POSIÇÃO EXATA ONDE FICA O STATUS fputs ( "A" , saida ); //ASSIM POSSO SUBSTITUIR O STATUS. if (op6 == 2) fputs ( "D" , saida ); if (op6 == 3) fputs ( "S" , saida ); achou2=3; fclose(saida); } precisa disso declarado tb. fpos_t position; // variavel necessária para uso de algumas funções stdio.h
  2. Não é pior ai. Se você só precisa saber qual é a última letrar é só você usar STRLEN que conta quantas letras tem e mandar dar um pint na ultima: OBS: um dos erros foi porque você usou = mo lugar de == EX: #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char nome[15]; int x; char u_letra; int contLetras; int i =0; printf("Digite o seu nome: "); gets(nome); contLetras = strlen(nome); for(i = 0; i < contLetras; i++) { if (nome[i] != ' ' ) u_letra = nome[i]; } printf ("A ultima letra do seu nome e : %c\n\n" , u_letra); system("pause"); return(0); }
  3. Galera, achei isso para o linux. Mais alguém sabe como posso usar isso no devc++ ou como posso utilizar isso pro windows? /* @file * --> Servidor <-- * * * Este programa implementa Servidor de arquivos que faz um Upload de * arquivos usando algumas chamadas de sockets. * * * $Revision: 1.10 $ $Date: 2005/11/21 19:24:22 $ * * (C) Copyright 2005 Vanderson Rodrigues * */ #include <getopt.h> #include <time.h> #include <sys/utsname.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/stat.h> #include <sys/types.h> #include <sys/fcntl.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <arpa/inet.h> #define BUF_SIZE 4096 #define QUEUE_SIZE 10 #define FILE_MODE 0664 void sistema(void) { struct utsname u; uname(&u); printf("Sistema Operacional : %s - Release %s\n", u.sysname, u.release); printf("Servidor: Rodando em %s\n", u.nodename); } void limpar(void) { printf("{FONTE}33[2J"); /* limpa a tela */ printf("{FONTE}33[1H"); /* poe o curso no topo */ } void fatal(char *string) { printf("%s", string); exit(EXIT_FAILURE); } void uso (char *prognome) { printf("Uso: %s [-p porta] [-h]\n", prognome); printf("\t porta - Porta TCP\n"); printf("\t h - Mostra Essa ajuda\n"); exit(EXIT_SUCCESS); } int main(int argc, char **argv) { int s, b, l, fd, sa, bytes, on = 1; char buf[BUF_SIZE]; /* buffer para saida do arquivo */ struct sockaddr_in local; /* Pega Endereco IP */ struct sockaddr_in remoto; /* Pega Endereco IP */ int sin_size, optch, porta; char *client_ip, stropts[] = "hp:"; char arq_nome[256], arq_tamanho[256]; time_t time1, time2; while ((optch = getopt(argc, argv, stropts)) != EOF) { switch (optch) { case 'h': uso(argv[0]); return 0; case 'p': porta = atoi(optarg); break; default: fprintf(stderr, "digite -h para ajuda\n"); exit(EXIT_FAILURE); } } if ( argc != 3) { fprintf(stderr,"Erro: Faltando Argumentos.\n"); fputs("Use -h para ajuda.\n",stderr); exit(EXIT_FAILURE); } /* Constroi a estrutura de endereco pra amarrar com Servidor. */ memset(&local, 0, sizeof(local)); /* zera local */ local.sin_family = AF_INET; local.sin_addr.s_addr = htonl(INADDR_ANY); local.sin_port = htons(porta); /* Cria socket */ if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0 ) fatal("Falha ao Cria Socket\n"); /* diz pra aceitar mais de uma conexao */ setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *) &on, sizeof(on)); if ((b = bind(s, (struct sockaddr *) &local, sizeof(local))) < 0) fatal("Bind Falhou\n"); /* Especifica o tamanho da fila */ if ((l = listen(s, QUEUE_SIZE)) < 0) fatal("listen failed"); limpar(); sistema(); /* Loop principal. Esperando por conexao */ while (1) { printf("Servidor: Aguardando Conexao.\n"); sin_size = sizeof(struct sockaddr_in); /* bloco para aceitar a requisicaoi */ if ((sa = accept(s,( struct sockaddr *)&remoto, &sin_size)) < 0) fatal("Falha no accept\n"); time(&time1); client_ip = inet_ntoa(remoto.sin_addr); printf(">>> Servidor: Conectado a %s Porta: %d\n", client_ip, remoto.sin_port); /* Recebe e imprime na tela o nome do Arquivo */ if ((bytes = recv(sa, buf, 256, 0)) < 0) fprintf(stderr, "Falha no recebimento de dados\n"); buf[bytes] = '{FONTE}'; strcpy(arq_nome, buf); printf(">>> Recebendo Arquivo: "); printf("\"%s\" --> ", buf); /* zera buf */ bzero(buf, BUF_SIZE); /* Recebe e imprime o tamanho do Arquivo */ if ((bytes = recv(sa, buf, 256, 0)) < 0) fprintf(stderr, "Falha no recebimento de dados\n"); buf[bytes] = '{FONTE}'; strcpy(arq_tamanho, buf); printf("%sK \n", buf); printf(">>> Aguarde...\n"); /* Cria diretorio com IP do cliente para amarmazenar o arquivo * recebido do cliente */ mkdir(client_ip, 0766); chdir(client_ip); /* cria o arquivo */ if((fd = open(arq_nome, O_RDWR | O_CREAT, FILE_MODE)) < 0) { fatal("não foi possivel abrir arquivo\n"); close(fd); close(sa); continue; } /* Recebe os dados do arquivo */ while ((bytes = recv(sa, buf, BUF_SIZE, 0)) > 0) { write(fd, buf, bytes); } time(&time2); /* Informa Na saida padrão o onde o arquivo foi armazenado */ printf(">>> Arquivo Recebido com Sucesso !\n"); printf(">>> Aviso:\n"); printf(">>>\tCheque o Arquivo \"%s\" no Diretorio .\"/%s\"\n>>>\n", arq_nome, client_ip); chdir(".."); /* Volta ao diretorio de origem */ close(fd); /* Fechar o arquivo */ close(sa); /* Encerra a conexao */ printf(">>> Dados Transferidos em : %d segundos\n", time2 - time1); printf(">>> Conexao Encerrada com %s\n\n", client_ip); } return 0; }
  4. Galera, Não sei por onde começar com isso, mas já andei pesquisando na internet e vi a possibilidade disso acontecer usando processos. Bom, vou explicar o que preciso fazer: Tenho de desenvolver um "file server" em c para armazenar arquivos que vão ser enviados por outros processos de outras linguagens, Java por exemplo, e também enviar os mesmos arquivos caso solciitado. Bom, esse serviço deve estar sempre ativo "escutando". Bom, o próximo passo é um pouco mais complexo: caso o servidor de arquaivos "caia" devo requisitar o arquivo solicitado pelo Outro processo aos processos ativos. Ou seja, caso o processo X solicite o arquivo Y e o servidor de arquivos esteja OFF, o processo X agora deve procurar procurar agora o arquivo Y nos processos ativos. claro que os mesmos devem ter cópia dos arquivos que estão nos processos. SImples não. Bom, para começar só preciso entender se isso será feito atravéz de Socket ou de alguma outra forma, e se existe exemplos disso na internet. Procurei galera, só achei voa socket.
  5. Essa questão de compilador é complicada mesmo, mas execute o código a seguir no seu Devc++ que não terá problema. #include<stdio.h> #include <stdlib.h> struct elemento { char dado; struct elemento *prox, *ant; }; void construir1(struct elemento **pinicio); int main () { struct elemento *pinicio; construir1(&pinicio); return 0; } void construir1(struct elemento **pinicio) { FILE *arq; struct elemento *p1; char c; arq = fopen ("t1.txt", "r+"); *pinicio = NULL; while ((c = getc (arq)) != EOF) { if (c != '\n'){ p1 =(struct elemento *) malloc (sizeof (struct elemento)); p1->dado = c; p1->prox = *pinicio; } if (*pinicio != NULL) { (*pinicio)->ant = p1; p1->ant = NULL; *pinicio = p1; } } fclose (arq); return; }
  6. arq = fopen ("t1.txt", "r+"); teste assim. Se você usar somente R ele espera que o arquivo já exista. se você coloca o + do lado, caso o arquivo nçao exista ele cria. O mesmo serve com o w, w+
  7. Paulo Jardim

    Repetição matriz

    Organize com funções fica melhor de ver e dar manutenção. #include <stdio.h> #include <stdlib.h> #include <time.h> #include <conio.h> void menu(); void gerarMatriz(); void imprimirMatriz(); int matriz[10][10]; int main() { gerarMatriz(); menu(); } void menu() { int opcao; system("cls"); printf("1 - Todos os numeros\n"); printf("2 - Pares\n"); printf("3 - Impares\n"); printf("4 - Menores que 20\n"); printf("5 - Maiores que 30\n"); printf("6 - Gerar Novamente\n"); printf("7 - Sair\n"); scanf("%d", &opcao); switch(opcao) { case 1: //aki vai a ultima matriz gerada imprimirMatriz(); break; case 2: break; case 3: break; case 4: break; case 5: break; case 6: break; case 7: exit(0); break; } menu(); } void gerarMatriz() { int n,x=0, y=0, a, b, opcao; srand(time(NULL)); for(x=0;x<10;x++) { for(y=0;y<10;y++) { a=rand()%40+5; matriz[x][y]=a*1; } } for(x=0;x<10;x++) { printf("\n%d", matriz[x][y]); for(y=0;y<10;y++) { printf("\%d - ",matriz[x][y]); } } } void imprimirMatriz() { int x,y; for(x=0;x<10;x++) { printf("\n%d", matriz[x][y]); for(y=0;y<10;y++) { printf("\%d - ",matriz[x][y]); } } getch(); }
  8. Olha uma das formas é essa que você fez, na hora que u usuário estiver digitando os números você compara para ver se é maior que o maior, se for você altera o maior: if(NumDigitado > maior) maior = NumDigitado; o mesmo você pode fazer para verificar o número menor: Segue o código abaixo como exemplo: Não aconselho utilizar o break; gostaria que pensasse e refizess eo código de forma mais organizada. #include <stdio.h> #include <stdlib.h> main() { int cont, soma, numDigitado, maior, menor, media; printf("Digite numeros:\n"); soma=0; cont = 0; while(numDigitado!=0) { scanf("%d",&numDigitado); if (numDigitado == 0) break; if (cont == 0) { maior = numDigitado; menor = numDigitado; } soma=soma+numDigitado; cont++; if(numDigitado > maior) maior = numDigitado; if( numDigitado < menor) menor=numDigitado; } printf("Soma = %d\n",soma); printf("Total Digitados = %d\n",cont); printf("Media = %d\n",media=soma/cont); printf("O maior numero digitado = %d\n", maior); printf("O menor numero digitado = %d\n", menor); system("pause"); }
  9. Maneira bem didatica. #include <stdio.h> #include <stdlib.h> #include <string.h> void Exercicio(); int calculaVoltas(int medida); int calculaAngulo(int medida); int main() { Exercicio(); } void Exercicio() { int medida=0; int voltas=0; int angulo=0; printf("Digite uma medida de um triangulo : "); scanf("%d",&medida); voltas = calculaVoltas(medida); angulo = calculaAngulo(medida); printf("%d ", voltas); printf("%d ", angulo); if(medida>0 && medida<=360) { if(medida>=0 && medida<=90) { printf("A medida \x82 do Primeiro quadrante"); } else if(medida>90 && medida<=180) { printf("A medida \x82 do Segundo quadrante"); } else if(medida>180 && medida<=270) { printf("A medida \x82 do Terceiro quadrante"); } else { printf("A medida \x82 do Quarto quadrante"); } } system("PAUSE"); } int calculaVoltas(int medida) { int voltas; voltas = medida / 360; return voltas; } int calculaAngulo(int medida) { int angulo; angulo = medida % 360; return angulo; }
  10. Trate esse inteiro como uma string... depois percorra o vetor transformando cada psição em inteiro e somando :P
  11. bom, na verdade você pode usar a função SYSTEM() para enviar linhas de comando como se estivesse dentro do promt de comando ( CMD ). Ou seja. Supondo que seu programa se chame "algo.exe" e esteja no mesmo diretório do nosso exe basta digitar #include <stdlib.h> int main() { system("algo.exe"); }
  12. Bom, a resposta para o seu exerciicio numero 1 esta errada. O exercicio pede que leia um número inteiro e não vários números. Eu fária da seguinte forma. Primeiro eu criaria um vetor de strings e faria a leitura através de string depois percorria o vetor transformando string em inteiro. já o segundo não sei se entendi bem mais pelo visto se você tiver 10 soldados então você terá 10 filas e o número de soldados será 10, no caso de 11 soldados serão 11 filas e 11 na última fila...etc... não tem muito segredo.
  13. procurar na net sobre Fopen e Fclose tem bastante coisa tb tenho um programa / tutorial mais é muito avancado no uso de files. http://scriptbrasil.com.br/forum/index.php?showtopic=167549
  14. Paulo Jardim

    Somatório

    Sim, tem sim. vou tentar fazer aqui. Envolve conceito de IA. vou gostar. vou gostar.
  15. è isso que precisa parceiro? #include <stdio.h> #include <stdlib.h> typedef struct Ponto { int x; int y; }Ponto; int main(void){ Ponto** p2; Ponto* p1; p2 = (Ponto**) malloc(sizeof(Ponto*)); p1 = (Ponto*) malloc(sizeof(Ponto)); p1->x=18; p1->y=20; *p2 = p1; p1->y =82; printf("\nxx: %d",p1->x); printf("\nyy: %d",p1->y); printf("\nmemoria p1->x: %p",p1->x); printf("\nmemoria p1->y: %p",p1->y); getchar(); free(p1); return 0; }
  16. Não tive tempo para comentar mais deixei o mais didático possivel. #include <stdio.h> #include <stdlib.h> int bubblesort(int *vetor, int tamanho); void trocaBolha( int v[], int i); int *juntarVetor(int *vet01, int *vet02, int countVet01, int countVet02 ); void imprimirVetor(int *vetorCompleto, int tamanho); int main(int argc, const char * argv[]) { int vetum[10], vetdois[10], i, sair; int countVet01 =0, countVet02=0; int *vetorCompleto= NULL; printf("\nFase 1 - Digite 10 numeros inteiros abaixo (OBS: Se pretende não informar o numero e pular o proximo passo, digite zero e depois ENTER):\n\n"); for (i = 0; i < 10; i++) { printf("Numero %d: ", i+1); scanf("%d", &vetum[i]); if (vetum[i]<0) break; countVet01++; } printf("\nFase 2 - Digite 10 numeros inteiros abaixo novamente:\n\n"); for (i = 0; i < 10; i++) { printf("Numero %d: ", i+1); scanf("%d", &vetdois[i]); if (vetdois[i]<0) break; countVet02++; } int somaCountVet = (countVet01 + countVet02); vetorCompleto = (int *) malloc ( somaCountVet * sizeof(int)); vetorCompleto = juntarVetor(vetum, vetdois, countVet01, countVet02); bubblesort( vetorCompleto, somaCountVet ); int tamanhoVetor = countVet01 + countVet02; imprimirVetor(vetorCompleto, tamanhoVetor); system("PAUSE"); return(0); } int *juntarVetor(int *vet01, int *vet02, int countVet01, int countVet02 ) { int *vetorCompleto = NULL; int tamanhoVetor = countVet01 + countVet02; int i =0, j =0; vetorCompleto = (int *) malloc ( tamanhoVetor * sizeof(int)); for (i = 0; i < countVet01; i++) { vetorCompleto[i] = vet01[i]; } for (j = 0; j < countVet02; j++) { vetorCompleto[i] = vet02[j]; i++; } return vetorCompleto; } int bubblesort (int *vetorCompleto, int tamanho) { int i; int trocou; do { tamanho--; trocou = 0; for(i = 0; i < tamanho; i++) { if(vetorCompleto[i] > vetorCompleto[i + 1]) { trocaBolha(vetorCompleto, i); trocou = 1; } } }while(trocou); } void imprimirVetor(int *vetorCompleto, int tamanho) { int i =0; for (i = 0; i < tamanho; i++) printf("%d \n", vetorCompleto[i]); } void trocaBolha( int v[], int i) { int aux=0; aux=v[i]; v[i] = v[i+1]; v[i+1] = aux; }
  17. Nada ainda galera? Já adnei vendo fork() waitpid(); mais parece que só funciona no Linux....
  18. Paulo Jardim

    Vetores

    Aqui ele me retorna 0.
  19. Prezados, Veja se podem me ajudar. no meio do meu código eu construi uma string e envio como parametro. //Enviar String de Envio como Parametro para o programa Java. system(stringEnvio); Entretato esse parametro chama um outro processe JAVA, só que logo me seguida precviso fazer uma modificação em um arquivo só que o java continua usando.. Como faço pra aguardar o processo terminar para poder continuar executante?
  20. Galera, para fins didáticos estou disponibilizando esse programa para controle de bordel. A idéia é cadastrar as garotas no sistema informando suas carecterisiticas fisicas e o valor cobrado por hora. Essas informações serão armazenadas em arquivos de texto. O sistema também permite dar "saida" nas garotas mudando seu estatus para "S" de saida. Os relatórios também permitem escolher as garotas por nome, caracteristicas fisicas etc. Além de mostrar todas as garotas que estão na rua e por quantas horas. PS.: Código bem comentado ( até demais ) /* Name: PEIXE XOTA V.1.0 Copyright: Epic Solutions Desenvolvedor : Paulo E.P. Jardim. E-mail : inf-paulo@bol.com.br Projeto Finalizado em 03/12/10 23:22 Description: Controle e Gerenciamento de Garotas Trabalho em C, 1 Semestre Faculdade FTC, Professor: Lúcio */ #include <stdio.h> #include <ctype.h> //Para usar o toupper() #include <string.h> #include <conio.h> //Para usar o getch() #include <stdlib.h> #include <windows.h> //Para poder mover o cursor com a função gotoxy() void gotoxy(int x, int y) { //Função para reposicionar o cursor COORD c; c.X = x - 1; c.Y = y - 1; SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c); } int main () { typedef struct //Criado typedef Struct ao invez de Struct para facilitar o código { char nome[26]; // Variavel para o nome da Garota char status; // estatus da garota char corcabelo[15]; // cor do cabelo da garota char cor_olho[15]; // cor do olho da garota float valor_hora; // valor por hora que a garota cobra }dados; //nome dado a minha estrutura typedef struct { char nome2[26]; char status2; char cliente2[13]; int horas2; float valorhora2; }dados2; dados banco; dados2 banco2; system("color 2F"); // mudança de cor do dos para verde FILE *garotas; // aponta para o arquivo garotas FILE *saida; fpos_t position; // variavel necessária para uso de algumas funções stdio.h //Variaveis int op=0, op2=0, op4=0, op5=0, op6=0; char op3, letra; // Dado o nome de banco a minha estrutura dados int n_garotas =0; // contador de garotas int i; // Usado como contador int qtd_letras; //Contador de Letras char cabelo, olho; char deletar; int tamfile, tamfile2; //Usado para mostrar o tamanho do arquivo char del[30]; char status; char cliente[13]; char nomegarota[26]; int achou=0; int horas=0; int total=0; float valorhora; int total_horas; float total_grana; int achou2; int horas2; do //Laço para teste condicional do MENU Principal { //Menu system("color 2F"); // Cor Verde do Menu Principal system("cls"); printf("\n\t\t\t PEIXE XOTA v.1.0\n\n\n\n"); printf("\n[1] Pesquisa e Relatorios"); printf("\n[2] Cadastro de Garotas"); printf("\n[3] Limpar Lista de Contatos"); printf("\n[4] DELETAR Lista de Contatos"); printf("\n[5] Alterar Status "); printf("\n[6] Entrada de Garotas"); printf("\n[7] Saida de Garotas"); printf("\n[0] Sair\n"); printf("\n\nDigite a opcao desejada -> "); //local para onde reposiciono o cursor printf("\n\n\n\n\n\t\t\t\t\t\t\t By Paulo Jardim"); fflush(stdin); gotoxy(28,17); //Reposicionar o Cursor no local certo scanf("%d", &op); }while(op != 1 && op != 2 && op != 3 && op != 4 && op != 5 && op != 6 && op!=7 && op !=0); //FIM LAÇO MENU switch (op) // Switch do MENU PRINCIPAL { case 1: do{ system("cls"); printf("\n\t\t\t Pesquisa e Relatorios\n\n\n"); printf("\n[1] Pesquisa Personalizada"); printf("\n[2] Listar todas as Meninas"); printf("\n[3] Listar Por Nome"); printf("\n[4] Garotas na Rua -> "); fflush(stdin); scanf("%d", &op4); }while (op4 != 1 && op4 !=2 && op4 !=3 && op4 !=4); switch (op4) { case 1 : garotas = fopen("garotas.txt", "a+"); //a+ cria o arquivo caso ele não exista, e adiciona a partir do final do arquivo. system("color 1F"); //Muda a cor pra azul system("cls"); //Limpa a tela fseek (garotas , 0 , SEEK_END); //Le o arquivo do 0 até o final tamfile = ftell (garotas); //armazena em tamfile o tamanho em bytes do arquivo. rewind (garotas); //volta pro começo do arquivo. if (tamfile == 0) //se o arquivo estiver vazio, ou seja, com 0 bits.. { printf ("\n\n\n\t\t\tVc não tem Garotas, favor cadastrar"); getche(); fclose(garotas); main(); } else //se tiver arquivos, ou seja, diferente de 0 bytes ele continua. { do{ //Teste condicional para cor de cabelo printf("Digite a cor do cabelo da mulher desejada\n\n"); printf("[1] Morena \n"); printf("[2] Loira \n"); printf("[3] Ruiva -> "); fflush(stdin); //Limpa o buffer para limpar a lixeira, uso para diminuir o risco de erros. scanf("%d", &op3); }while (op3 != 1 && op3 != 2 && op3 != 3); //se ele digitar algo diferente de 1 2 ou 3 irá repetir a msg switch (op3){ //Swtich para cabelo case 1 : cabelo = 'M'; break; case 2 : cabelo = 'L'; //caso ele digite opção 2 'loira' armazenará na variavel loira o caracter 'L' break; case 3 : cabelo = 'R'; break; } do { //Teste condicional para COr Olho printf("\nCordo Olho\n[1] CLaro [2] Escuro -> "); scanf("%d", &op5); }while (op5 != 1 && op5 != 2 && op5 != 3); switch (op5) { case 1 : olho = 'C'; break; case 2 : olho = 'E'; break; } op6=0; //Zerando váriavel já que vou utiliza-la do{ //Teste condicional do Status do Cliente printf("\n\nDigite o Status do Cliente"); printf("\n[1] Ativo"); printf("\n[2] Dasabilitado"); printf("\n[3] Saida -> "); fflush(stdin); scanf("%d", &op6); }while (op6 != 1 && op6 !=2 && op6 != 3); switch (op6){ case 1 : status = 'A'; break; case 2 : status = 'D'; //Armazenar em status o caracter 'D' break; case 3 : status = 'S'; break; } printf("\n\n\n"); while(!feof(garotas)) //Enquanto não for final do arquivo garotas. { fscanf(garotas, "%s", &banco.nome); //le o txt e armazena a primeira string em banco.nome for(i=0;banco.nome[i]!='\0'; i++) //enquanto não terminar a string if(banco.nome[i]=='_') //Verifica se a o caracter '_' banco.nome[i]=' '; //e substitui por ' ', que é espaço. fscanf(garotas, "%s", &banco.status); fscanf(garotas, "%s", &banco.corcabelo); for(i=0; banco.corcabelo[i]!='\0';i++) if (banco.corcabelo[i]== '_') banco.corcabelo[i]=' '; fscanf(garotas, "%s", &banco.cor_olho); for(i=0; banco.cor_olho[i]!='\0';i++) if (banco.cor_olho[i]== '_') banco.cor_olho[i]=' '; fscanf(garotas, "%f", &banco.valor_hora); if (banco.corcabelo[0] == cabelo) //Lembrem-se que a variavel cabelo, olho e status if (banco.cor_olho[6] == olho) //são caracteres e tem apenas uma letra cada if (banco.status == status) //então comparo apenas a primeira letra de cada { //e verifico se são iguais. //no caso do olho comparo a 6 string que pode ser 'C' = claro //ou pode ser 'E' = escuro printf("%s | %c | %s | %s | %.2f \n", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora); n_garotas++; //contador de registros } //Esse processo será repitido até o final do arquivo, graças ao laço while(!feof(garotas)) } printf("\n\n\nO numero de Garotas com essa caracteristica e de -> %d ", n_garotas); getch(); fclose(garotas); //Fechando arquivo. (Sempre que abrir feche) Não feche 2 vezes ou abra 2 vezes nunca.) main(); //Uma simples Recursividade, onde chamo a função main dentro da main. break; } // FIM CASE 1 (Procura Perssonalizada). case 2: garotas = fopen("garotas.txt", "a+"); //Abre o arquivo system("color 5F"); // Muda cor para roxo n_garotas=0; //zera contador de garotas system("cls"); printf("\n\t\t\tGarotas Cadastradas\n\n\n"); fseek (garotas , 0 , SEEK_END); tamfile = ftell (garotas); rewind (garotas); if (tamfile == 0) //Verifica se o arquivo esta vazio printf ("\n\n\t\tVc não tem Garotas Cadastradas, favor cadastrar"); else //se Não estiver vazio... while(!feof(garotas)) //Enquanto não for final de arquivo.... { fscanf(garotas, "%s", &banco.nome); //leio do texto e armazeno na struct for(i=0;banco.nome[i]!='\0';i++) if(banco.nome[i]=='_') banco.nome[i]=' '; fscanf(garotas, "%s", &banco.status); fscanf(garotas, "%s", &banco.corcabelo); for(i=0; banco.corcabelo[i]!='\0';i++) if (banco.corcabelo[i]== '_') banco.corcabelo[i]=' '; fscanf(garotas, "%s", &banco.cor_olho); for(i=0; banco.cor_olho[i]!='\0';i++) if (banco.cor_olho[i]== '_') banco.cor_olho[i]=' '; fscanf(garotas, "%f", &banco.valor_hora); printf("%s | %c | %s | %s | %.2f \n", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora); n_garotas++; //Cada vez que acha um nome e imprime ele conta } printf("\n\n\n\t\ttotal de: %d Garotas Cadastradas", n_garotas); // Imprime o total de garotas fclose(garotas); //fecha o arquivo getch(); //espera ser digitado algo main(); //chama o main break; //fim CASE 3 (listar todas as garotas) case 3 : garotas = fopen("garotas.txt", "a+"); //SUBMENU //Listar Meninas por Nome. system("color 6F"); //muda cor n_garotas=0; //zera variavel... system("cls"); fseek (garotas , 0 , SEEK_END); tamfile = ftell (garotas); rewind (garotas); if (tamfile == 0) //verifica se está vazio o arquivo. printf ("\n\n\n\t\tVc não tem Garotas, favor cadastrar"); else //caso não esteja vazio... { do{ //Laço para repetir se o usuário digitar enter system("cls"); printf("\n\nDigite a letra inicial do nome e aperte <ENTER> -> "); fflush(stdin); scanf("%c", &letra); } while ( letra == '\n'); //caso seja apertado enter repete a instrução printf("\n\n\n"); while(!feof(garotas)) { fscanf(garotas, "%s", &banco.nome); for(i=0;banco.nome[i]!='\0';i++) if(banco.nome[i]=='_') banco.nome[i]=' '; fscanf(garotas, "%s", &banco.status); fscanf(garotas, "%s", &banco.corcabelo); for(i=0; banco.corcabelo[i]!='\0';i++) if (banco.corcabelo[i]== '_') banco.corcabelo[i]=' '; fscanf(garotas, "%s", &banco.cor_olho); for(i=0; banco.cor_olho[i]!='\0';i++) if (banco.cor_olho[i]== '_') banco.cor_olho[i]=' '; fscanf(garotas, "%f", &banco.valor_hora); if(banco.nome[0]=='\0') printf ("\n\n\tVc não tem Garotas Cadastradas.\n"); else if(toupper(banco.nome[0]) == toupper(letra)) { printf("%s | %c | %s | %s | %.2f \n", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora); n_garotas++; } } printf("\n\n\nO numero de Garotas com a letra '%c' e %d", toupper(letra), n_garotas); } getch(); fclose(garotas); main(); break; case 4 : saida = fopen("saida.txt", "a+"); //Pesquisa de Garotas na RUA total_horas=0; total_grana =0; system("cls"); printf("\n\n\n\t\t\tPesquisa de Garotas na Rua\n\n\n\n"); fseek (saida , 0 , SEEK_END); //Le o arquivo do 0 até o final tamfile = ftell (saida); //armazena em tamfile o tamanho em bytes do arquivo. rewind (saida); //volta pro começo do arquivo. if (tamfile == 0) //se o arquivo estiver vazio, ou seja, com 0 bits.. { printf ("\n\n\n\t\t\tVc não tem Garotas na Rua"); getche(); fclose(saida); main(); } while(!feof(saida)) { fscanf(saida, "%s", &banco.nome); for(i=0;banco.nome[i]!='\0';i++) //enquanto não terminar a string if(banco.nome[i]=='_') //Verifica se a o caracter '_' banco.nome[i]=' '; fscanf(saida, "%s", &banco.status); fscanf(saida, "%s", &cliente); for(i=0;cliente[i]!='\0';i++) //enquanto não terminar a string if(cliente[i]=='_') //Verifica se a o caracter '_' cliente[i]=' '; fscanf(saida, "%d", &horas); fscanf(saida, "%f", &valorhora); if (banco.status == 'S') { printf("%s | %c | %s | %d | %.2f \n", banco.nome, banco.status, cliente, horas, valorhora); n_garotas++; total_grana += valorhora; total_horas += horas; } } printf("\n\n\n você tem %d garotas na rua", n_garotas); printf("\n\n\n\t Total de Horas da garotas e : %d", total_horas); printf("\n\n\n\t\t\t Total de arrecadacao e de : %.2f", total_grana); getch(); fclose(saida); main(); break; }// FIM SUBMENU RELATÒRIOS case 2: garotas = fopen("garotas.txt", "a+"); // Abrindo arquivo garotas novamente system("color 3F"); //Mudando cor para Roxa system("cls"); do //Laco usado para se o usuário quiser cadastrar mais de uma garota { qtd_letras = 0; //Zerando contador de letras system("cls"); printf("\n\t\t\tCadastro de Garotas\n"); printf("\n\nDigite o Nome da Garota ou Aperte <ENTER> pra voltar: -> "); fflush(stdin); //sempre limpando o buffer antes de pegar algo da memória gets(banco.nome); if (banco.nome[0] == ' ' || banco.nome[0] =='\0' || banco.nome[0] == '\n') // Verifica s digitou alguma coisa { fclose(garotas); main(); } //caso deixe o nome em branco, else qtd_letras = (strlen(banco.nome)); //conta quantas letras tem no nome digitado for(qtd_letras+1; qtd_letras < 25; qtd_letras++) // laço para adicionar '_', banco.nome[qtd_letras] = ('_'); //a partir do fim do nome até a 24 posição banco.nome[25] ='\0'; //Determinar que o fim do nome é na 25 posição for(i=0; banco.nome[i] !='\0'; i++) //Enquanto for diferente de fim de string if (banco.nome[i] == ' ') //preencho com '_' o espaço vazio. banco.nome[i] = '_'; banco.status = 'A'; //Toda garota cadastrada entrará como Ativa do { //Teste condição do Cor cabelo op3=0; printf("\n\nDigite a Cor do cabelolo: \n"); printf("[1] Morena \n"); printf("[2] Loira \n"); printf("[3] Ruiva -> "); fflush(stdin); scanf("%d", &op3); }while (op3 != 1 && op3 !=2 && op3 != 3); // transformar o inteiro na String Respectiva. switch (op3){ case 1 : strcpy(banco.corcabelo, "Morena"); // break; case 2 : strcpy(banco.corcabelo, "Loira_"); break; case 3 : strcpy(banco.corcabelo, "Ruiva_"); break; } op5 = 0; do { //teste condição de cor de olho printf("\n\nCor do Olho\n[1] Claro [2] Escuro -> "); fflush(stdin); scanf("%d", &op5); switch (op5) { case 1 : strcpy(banco.cor_olho, "Olhos_Claros_"); break; case 2 : strcpy(banco.cor_olho, "Olhos_Escuros"); break; } }while (op5 != 1 && op5 !=2); printf("\n\nValor Cobrado por Hora (em reais) -> "); fflush(stdin); scanf("%f", &banco.valor_hora); //A LINHA SEGUINTE INSERE DADOS NO TXT fprintf(garotas, "\n%s %c %s %s %.2f", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora); printf("\nDeseja Cadastrar outra Garota? [1] Sim e [2] não\n"); fflush(stdin); scanf("%d", &op2); }while (op2 == 1); // fim do laço para continuar cadastrando. fclose(garotas); //Fechando arquivo main(); //chama a função main break; // fim do case 2 (cadastro de garotas) case 3 : //Deletar Cadastros printf("\n\n\n\n\n\nTem certeza que deseja limpar sua lista de Garotas? (S/N) -> "); system("color 4F"); fflush(stdin); scanf("%c", &deletar); if(toupper(deletar)=='S') //Toupper transforma a variavel deletar em maiscula { //ou seja, caso digite 'S' ou 's' faça... garotas = fopen("garotas.txt", "w"); //abre o arquivo em modo gravação banco.nome[0]='\0'; //zera o conteudo banco.corcabelo[0] ='\0'; banco.cor_olho[0] ='\0'; banco.valor_hora ='\0'; fclose(garotas); saida = fopen("saida.txt", "w"); banco.nome[0] ='\0'; cliente[0] ='\0'; horas ='\0'; banco.valor_hora ='\0'; fclose(saida); puts("\n\nPronto, Sua garotas foram removidos!"); getch(); } main(); // Fim case 5 ( deletar cadastros ) break; case 4 : //Deletar o arquivo. system("color 4f"); printf("\b\n\n\n\n\n\nTem Certeza que deseja deletar o arquivo Garotas.txt? (S/N) -> "); fflush(stdin); scanf("%c", &deletar); if(toupper(deletar)=='S') { if( remove( "garotas.txt" ) != 0 ) //Caso seja possivel deleta o arquivo. perror( "\n\n\nErro ao deletar Arquivo" );//caso não informa o motivo. else puts( "\n\nArquivo deletado com Sucesso" ); getch(); if( remove( "saida.txt" ) != 0 ) //Caso seja possivel deleta o arquivo. perror( "\n\n\nErro ao deletar Arquivo" );//caso não informa o motivo. else puts( "\n\nArquivo deletado com Sucesso" ); getch(); } main(); //Fim menu 6 ( Deletar arquivo ) break; case 5 : garotas = fopen("garotas.txt", "r+"); //r+ abre o arquivo em modo edição op6=0; //permitindo o uso de funções para localização tamfile=0; //Zerando variaveis system("color 0F"); n_garotas=0; achou=0; system("cls"); printf("\n\t\t\tAlterar Status das Garotas\n\n\n"); fseek (garotas , 0 , SEEK_END); tamfile = ftell (garotas); rewind (garotas); if (tamfile == 0) printf ("\n\n\t\tNão existem cadastros, favor cadastrar"); else { printf("\nDigite o nome da Garota que desja alterar o status -> "); fflush(stdin); gets(nomegarota); qtd_letras = (strlen(nomegarota)); //conta quantos caracteres tem a palavra digitada for(qtd_letras+1; qtd_letras < 25; qtd_letras++) //adiciona '_" ao final da palavra nomegarota[qtd_letras] = ('_'); //até a 24 posção nomegarota[25] ='\0'; //fecha a string na 25 posição //Nada bom caso deixe aberto for(i=0; nomegarota[i] !='\0'; i++) if (nomegarota[i] == ' ') nomegarota[i] = '_'; for(i=0; nomegarota[i] !='\0'; i++) if (nomegarota[i] == '_') nomegarota[i] = ' '; printf("\n\n\n"); achou=0; while( !feof(garotas) && achou ==0) //repete até achar o nome digitado ou o final do arquivo { fscanf(garotas, "%s", &banco.nome); for(i=0;banco.nome[i]!='\0';i++) if(banco.nome[i]=='_') banco.nome[i]=' '; fscanf(garotas, "%s", &banco.status); fseek (garotas, 0, SEEK_CUR); tamfile=ftell (garotas); //ESSE COMANDO LOCALIZA A POSIÇÃO EM BYTS DO TEXTO //ASSIM É POSSÍVEL SABER ONDE ESTA LOCALIZADO O BANCO.STATUS fscanf(garotas, "%s", &banco.corcabelo); for(i=0; banco.corcabelo[i]!='\0';i++) if (banco.corcabelo[i]== '_') banco.corcabelo[i]=' '; fscanf(garotas, "%s", &banco.cor_olho); for(i=0; banco.cor_olho[i]!='\0';i++) if (banco.cor_olho[i]== '_') banco.cor_olho[i]=' '; fscanf(garotas, "%f", &banco.valor_hora); if (strcmpi (banco.nome, nomegarota) == 0 ) //compara o nome digtado com o nome no txt { achou=1; printf("%s | %c | %s | %s | %.2f \n", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora); } }// fim while if (achou ==1) do { printf("\n\nDigite o novo Status da Garota"); printf("\n[1] Ativo"); printf("\n[2] Dasabilitado"); printf("\n[3] Saida -> "); fflush(stdin); scanf("%d", &op6); }while (op6 != 1 && op6 !=2 && op6 != 3); //teste de condição 1 2 ou 3 fseek ( garotas , tamfile-1 , SEEK_SET ); // TAMFILE ARMAZENOU A POSIÇÃO DO STATUS NO TXT if (op6 == 1) //'TAMLIFE-1' É A POSIÇÃO EXATA ONDE FICA O STATUS fputs ( "A" , garotas ); //ASSIM POSSO SUBSTITUIR O STATUS. if (op6 == 2) fputs ( "D" , garotas ); if (op6 == 3) fputs ( "S" , garotas ); }// FIM IF GAROTAS fclose(garotas); //INICIO PROCEDIMENTO PARA ALTERAR NO SAIDA for(i=0;banco.nome[i]!='\0';i++) if(banco.nome[i]==' ') banco.nome[i]='_'; for(i=0;nomegarota[i]!='\0';i++) if(nomegarota[i]==' ') nomegarota[i]='_'; saida = fopen("saida.txt", "r+"); achou2=5; while ( !feof(saida) && achou2 ==5) // mudar o status do arquivo saida { fscanf(saida, "%s", &banco2.nome2); fscanf(saida, "%s", &banco2.status2); fseek (saida, 0, SEEK_CUR); tamfile2=ftell (saida); fscanf(saida, "%s", &banco2.cliente2); fscanf(saida, "%d", &banco2.horas2); fscanf(saida, "%f", &banco2.valorhora2); if (strcmpi (nomegarota, banco2.nome2) == 0 ) // Caso já tenha no arquivo saida.txt o nome só mudar o status para A { fseek ( saida , tamfile2-1 , SEEK_SET ); // TAMFILE ARMAZENOU A POSIÇÃO DO STATUS NO TXT if (op6 == 1) //'TAMLIFE-1' É A POSIÇÃO EXATA ONDE FICA O STATUS fputs ( "A" , saida ); //ASSIM POSSO SUBSTITUIR O STATUS. if (op6 == 2) fputs ( "D" , saida ); if (op6 == 3) fputs ( "S" , saida ); achou2=3; fclose(saida); } }// fim while if (achou == 1 || achou2 ==3) printf("\n\n\nStatus Alterado com Sucesso"); if (achou == 0 && achou2 ==5) printf("Nennhuma garota encontrada com este nome"); getch(); main(); break; //Fim do MENU 7 ( ALteração de Status) case 6 : garotas = fopen("garotas.txt", "r+"); //abrindo arquivo em modo de adição op2=0; tamfile=0; system("color 3F"); n_garotas=0; system("cls"); printf("\n\t\t\tEntrada De Garotas\n\n\n"); fseek (garotas , 0 , SEEK_END); tamfile = ftell (garotas); rewind (garotas); if (tamfile == 0) printf ("\n\n\t\tVc não tem Garotas na rua"); else { printf("\nDigite o nome da Garota para dar entrada -> "); fflush(stdin); gets(nomegarota); qtd_letras = (strlen(nomegarota)); for(qtd_letras+1; qtd_letras < 25; qtd_letras++) nomegarota[qtd_letras] = ('_'); nomegarota[25] ='\0'; for(i=0; nomegarota[i] !='\0'; i++) if (nomegarota[i] == ' ') nomegarota[i] = '_'; for(i=0; nomegarota[i] !='\0'; i++) if (nomegarota[i] == '_') nomegarota[i] = ' '; printf("\n\n\n"); achou=0; while(!feof(garotas) && achou ==0) { fscanf(garotas, "%s", &banco.nome); for(i=0;banco.nome[i]!='\0';i++) if(banco.nome[i]=='_') banco.nome[i]=' '; fscanf(garotas, "%s", &banco.status); fseek (garotas, 0, SEEK_CUR); tamfile=ftell (garotas); fscanf(garotas, "%s", &banco.corcabelo); for(i=0; banco.corcabelo[i]!='\0';i++) if (banco.corcabelo[i]== '_') banco.corcabelo[i]=' '; fscanf(garotas, "%s", &banco.cor_olho); for(i=0; banco.cor_olho[i]!='\0';i++) if (banco.cor_olho[i]== '_') banco.cor_olho[i]=' '; fscanf(garotas, "%f", &banco.valor_hora); if (strcmpi(banco.nome, nomegarota) == 0 ) { printf("%s | %c | %s | %s | %.2f \n", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora); if (banco.status == 'S') { achou=1; do { printf("\n\n\nDeseja Confirmar a Entrada de %s", banco.nome); printf("\n[1] SIM"); printf("\n[2] não -> "); fflush(stdin); scanf("%d", &op2); }while (op2 !=1 && op2 !=2); if (op2 == 1) { garotas = fopen ("garotas.txt" , "r+"); fseek ( garotas , tamfile-1 , SEEK_SET ); fputs ( "A" , garotas ); fclose(garotas); //Fazer o mesmo com o arquivo txt saida achou=0; for(i=0;banco.nome[i]!='\0';i++) if(banco.nome[i]==' ') banco.nome[i]='_'; saida = fopen("saida.txt", "r+"); while (!feof(saida) && achou ==0) // mudar o status do arquivo saida { fscanf(saida, "%s", &banco2.nome2); fscanf(saida, "%s", &banco2.status2); fseek (saida, 0, SEEK_CUR); tamfile2=ftell (saida); fscanf(saida, "%s", &banco2.cliente2); fscanf(saida, "%d", &banco2.horas2); fscanf(saida, "%f", &banco2.valorhora2); if (strcmpi (banco.nome, banco2.nome2) == 0 ) // Caso já tenha no arquivo saida.txt o nome só mudar o status para A { fseek ( saida , tamfile2-1 , SEEK_SET ); fputs ( "A" , saida ); achou =1; fclose(saida); } }// fim while printf("\n\n Entrada efetuada com sucesso"); } }else { printf("\n\n\nEsta garota já esta Aativa ou se encontra Desligada"); achou=2; } } } if (achou == 0) printf("\n\n\nNennhuma Garota Encontrada com este nome"); } getch(); main(); break; case 7 : saida = fopen("saida.txt", "a+"); // apenas para criar o arquivo caso não exista fclose(saida); garotas = fopen("garotas.txt", "r+"); // Saida de Garotaas op2=0; tamfile=0; system("color 0F"); n_garotas=0; system("cls"); printf("\n\t\t\tSaida De Garotas\n\n\n"); fseek (garotas , 0 , SEEK_END); tamfile = ftell (garotas); rewind (garotas); if (tamfile == 0) { printf ("\n\n\t\tVc não tem Garotas Cadastradas"); getch(); main(); } printf("\n\nDigite o Nome do Cliente -> "); fflush(stdin); gets(cliente); if (cliente[0] == ' ' || cliente[0] == '\n' || cliente[0] =='\0') { fclose(garotas); main(); } qtd_letras = strlen(cliente); for(qtd_letras+1; qtd_letras < 13; qtd_letras++) // laço para adicionar '_', cliente[qtd_letras] = ('_'); //a partir do fim do nome até a 24 posição cliente[13] ='\0'; //Determinar que o fim do nome é na 25 posição for(i=0; cliente[i] !='\0'; i++) //Enquanto for diferente de fim de string if (cliente[i] == ' ') //preencho com '_' o espaço vazio. cliente[i] = '_'; printf("\nDigite o nome da Garota desejada -> "); fflush(stdin); gets(nomegarota); qtd_letras = (strlen(nomegarota)); for(qtd_letras+1; qtd_letras < 25; qtd_letras++) nomegarota[qtd_letras] = ('_'); nomegarota[25] ='\0'; for(i=0; nomegarota[i] !='\0'; i++) if (nomegarota[i] == ' ') nomegarota[i] = '_'; printf("\n\n\n"); achou=0; while(!feof(garotas) && achou ==0) { fscanf(garotas, "%s", &banco.nome); for(i=0;banco.nome[i]!='\0';i++) if(banco.nome[i]==' ') banco.nome[i]='_'; fscanf(garotas, "%s", &banco.status); fseek (garotas, 0, SEEK_CUR); tamfile=ftell (garotas); fscanf(garotas, "%s", &banco.corcabelo); for(i=0; banco.corcabelo[i]!='\0';i++) if (banco.corcabelo[i]== '_') banco.corcabelo[i]=' '; fscanf(garotas, "%s", &banco.cor_olho); for(i=0; banco.cor_olho[i]!='\0';i++) if (banco.cor_olho[i]== '_') banco.cor_olho[i]=' '; fscanf(garotas, "%f", &banco.valor_hora); if (strcmpi(banco.nome, nomegarota) == 0 ) { achou= 2; if (banco.status == 'A') { achou=1; } } }// fim while do arquivo garotas if (achou == 0) { printf("Nennhuma Garota Encontrada com este nome"); getch(); fclose(garotas); main(); } if (achou == 2) { for(i=0; cliente[i] !='\0'; i++) if (cliente[i] == '_') cliente[i] = ' '; for(i=0; banco.nome[i] !='\0'; i++) if (banco.nome[i] == '_') banco.nome[i] = ' '; printf("%s não se encontra disponivel %s", banco.nome, cliente); fclose(garotas); getch(); main(); } if (achou ==1) { for(i=0; banco.nome[i] !='\0'; i++) if (banco.nome[i] == '_') banco.nome[i] = ' '; printf("%s | %c | %s | %s | %.2f \n", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora); printf("\n\nPor quantas Horas deseja alugar %s", banco.nome); fflush(stdin); scanf("%d", &horas); do { printf("\n\n\nDeseja Confirmar o aluguel dessa garota por %d horas no valor de %.2f", horas, banco.valor_hora*horas); printf("\n[1] SIM"); printf("\n[2] não -> "); fflush(stdin); scanf("%d", &op2); }while (op2 != 1 && op2 != 2); if (op2 == 1) { fseek ( garotas , tamfile-1 , SEEK_SET ); fputs ( "S" , garotas ); fclose(garotas); for(i=0;banco.nome[i]!='\0';i++) //enquanto não terminar a string if(banco.nome[i]==' ') //Verifica se a 0 caracter '_' banco.nome[i]='_'; //Verificando se tem nome repetido no arquivo saida saida = fopen("saida.txt", "r+"); valorhora= banco.valor_hora* horas; achou2=0; if (achou== 1) while (!feof(saida) && achou2 ==0) { fscanf(saida, "%s", &banco2.nome2); fscanf(saida, "%s", &banco2.status2); fseek (saida, 0, SEEK_CUR); tamfile2=ftell (saida); fscanf(saida, "%s", &banco2.cliente2); fscanf(saida, "%d", &banco2.horas2); fscanf(saida, "%f", &banco2.valorhora2); if (strcmpi (banco.nome, banco2.nome2) == 0 ) // Caso já tenha no arquivo saida.txt o nome só mudar o status para A { fseek ( saida , tamfile2-1 , SEEK_SET ); fputs ( "S" , saida ); achou2 =1; } }// fim while if (achou2 ==0) { banco.status = 'S'; fprintf(saida, "\n%s %c %s %.2d %.2f", banco.nome, banco.status, cliente, horas, valorhora); } for(i=0; cliente[i] !='\0'; i++) //Enquanto for diferente de fim de string if (cliente[i] == '_') //preencho com '_' o espaço vazio. cliente[i] = ' '; printf("\n\n Muito Obrigado e Volte sempre %s", cliente); }// Fim Opção De confirmação de saida de garota }// fim if achou =1 getch(); fclose(garotas); main(); break; case 0 : exit(0); //Fecha o Programa }// FIM DO MENU printf("\n\n"); fclose(garotas); getchar(); return 0; } //FIM
  21. Até agora perfeito Muito obrigado mesmo XIstyle
  22. OPa descobri o problema da fata, estava passando '@data' era só @data vou implementar a tbaela agora :)
  23. Não xistyle ela não existe, mas parece que ela não esta morrendo após a execução... sei lá...
  24. Outra dúvida Estou enviando a data pro banco... mais ela taindo "dd/mm/aaaa" e tou vendo que no banco é ao contrário. ta gerando erro.. como faço pra converter?
×
×
  • Criar Novo...