Ir ao conteúdo
  • Cadastre-se

aabb1498

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

1
  1. Boa tarde, gente. Estou começando a programar em C e preciso mesmo de ajuda para identificar os motivos que impedem a execução do programa. O objetivo dele é o seguinte: ler uma mensagem do teclado, passar para o arquivo de saída, daí ele deve pegar essa mesma mensagem e armazenar em uma string que deve ser gravada no arquivo enviadas, ao identificar uma nova mensagem no arquivo enviadas, o sistema deve escrever no arquivo recebidas confirmando. Eu uso a contagem de linhas para definir se há novas mensagens. Sei que o código não é nada elegante, mas é que eu realmente estou começando. Ele não está nem escrevendo a string "mensagem" no arquivo de saída, mas não ocorre nenhum erro na compilação. Eu coloquei algumas funções para indicar se deu erro na leitura da string, mas nunca resultou em erro. #include <stdio.h> #include <stdlib.h> #include<string.h> struct pacote{ int npac; char msg[130]; }; int linhas(FILE *fp){ int nlinhas=0; char c; while ((c=fgetc(fp))!=EOF){ if (c=='\n') nlinhas++; } return nlinhas; } int main() { char mensagem[130], conf[20]="Mensagem recebida"; FILE *fsaida,*fenv,*frec; int nlinhas=0, n=0; struct pacote pac; if ((fsaida= fopen("saida.txt", "w+"))==NULL){ perror("erro arq saida "); return 1; } if ((fenv= fopen("enviadas.txt", "a+"))==NULL){ perror("erro arq enviadas "); return 1; } if ((frec= fopen("recebidas.txt", "a+"))==NULL){ perror("erro arq recebidas "); return 1; } //pega mensagem do teclado printf("Entre com a mensagem: "); gets(mensagem); //escreve mensagem no arquivo de saída if((fputs(mensagem, fsaida))==EOF) printf("erro saida"); printf("%d",ferror(fsaida)); //número do pacote nlinhas=linhas(frec); pac.npac=nlinhas+1; memset(pac.msg,0,sizeof(pac.msg)); fgets(pac.msg, sizeof(pac.msg), fsaida); printf("%d",ferror(fsaida)); printf("%s",pac.msg); if(fgets(pac.msg, sizeof(pac.msg), fsaida)==NULL) printf("erro fgets\n"); //envio de pacote fprintf(fenv, "%d. %s\n", pac.npac, pac.msg); //checar se há novas mensagens do { nlinhas=linhas(fenv); } while(n<=nlinhas); printf("%d\n",n); if(n>nlinhas){ fprintf(frec, "%s\n", conf); printf("%s\n",conf);} fclose(fsaida); fclose(frec); fclose(fenv); system("pause"); return 0; }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...