Yuizi Posted May 2, 2017 at 10:23 AM Report Share #603902 Posted May 2, 2017 at 10:23 AM Ora bom dia a todos os programados do P@P. Sendo a minha primeira vez a postar algo aqui peço que me informer antes de mais anda se o posto está no seu devido sitio. Falando agora da minha duvida eu estou a desenvolver uma especie de diário em c armazenando mensagens porem elas só sao armazenadas enquanto o programa estiver aberto a solução que arranjei foi a manipulação de ficheiros armazenando as mensagem em um ficheiro .txt. o codigo esta aqui: #include <stdio.h> #include <string.h> main() { //Variaveis globais char regdata[100][15]; //datas das mensagens char regmsg[100][100]; // mensagens char d[15]; //data auxiliar, usada para comparar com as datas dos registos int reg=0; //indice dos registos int op = 0; //opçao int i,j; //variaveis de controlo dos ciclos for int e = 0; //permite saber se alguns if foram executados while(1==1){ //cilco infinito for( j = 0;j<80;j++){ //print separador putchar('*'); } //print menu printf("\n\t\t\tMenu"); printf("\n\t\t\t1 - Adicionar registo"); printf("\n\t\t\t2 - Ver registo por data"); printf("\n\t\t\t3 - Eliminar registo"); printf("\n\t\t\t4 - Ver datas de registo"); printf("\n\t\t\t0 - Sair\n\nEscolha a op??o que desejar: "); //leitura da op??o do{ scanf("%d", &op); if(op < 0 || op > 4){ printf("opcao invalida!"); } }while(op < 0 || op > 4); for( j = 0;j<80;j++){ putchar('*'); } switch(op) { //adicionar registo atraves da fun?ao add case 1: //if(reg < 100){ //add(regdata[reg],regmsg[reg]); //reg++; //} if(reg < 100){ FILE *fp; fp = fopen ("Mensagem.txt", "w"); if (fp == NULL) { printf ("Houve um erro ao abrir o arquivo.\n"); return 1; } printf ("Arquivo Mensagem criado com sucesso.\n"); fclose (fp); return 0; } else{ printf("\nNao e possivel adicionar mais registos!!!\n"); } break; case 2: printf("Data do registo:"); fgets(d,15, stdin); fgets(d,15, stdin); for(i = 0;i<reg;i++ ){ if(existe(d,regdata[i])!= 0){ printf("Mensagem:"); printf("%s",regmsg[i]); e = 1; } } if(e == 0){ printf("Registo nao existe!!!\n"); } e = 0; break; case 3: printf("\nData do registo:"); fgets(d,15, stdin); fgets(d,15, stdin); for(i = 0;i<reg;i++ ){ if(existe(d,regdata[i])!= 0){ for(;i<reg;i++){ strcpy(regdata[i], regdata[i+1]); strcpy(regmsg[i], regmsg[i+1]); } reg--; e = 1; printf("Registo eliminado com sucesso!!!\n"); } if(e == 0){ printf("Registo n?o existe!!!\n"); } e = 0; } break; case 4: printf("As datas disponiveis sao:\n"); for(i = 0;i<reg;i++){ printf("%s",regdata[i]); printf("\n"); } break; case 0: system("pause"); return(0); } } } add(char rd[], char rm[]) { printf("\n Data:"); fgets(rd,15, stdin); fgets(rd,15, stdin); printf(" Mensagem:"); fgets(rm,100, stdin); return(0); } int existe(char t[],char rd[]){ int r = 0; if(strcmp(t,rd)==0){ r = 1; } return(r); } até agora so consegui abrir o arquivo nao consigo escrever nada nele. Queria que me ajudassem a abrir o arquivo corretamente e de maneira a que o utilizador pudesse escrever o que bem entendesse. Tenho outras duvidas mas vamos a uma coisa de cada vez. Com os melhores cumprimentos. ~Yuizi Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted May 2, 2017 at 11:46 AM Report Share #603905 Posted May 2, 2017 at 11:46 AM vou responder sem perceber realmente qual é o problema, nem lendo a descricao do mesmo ou o código apresentado. vê a documentacao da funcao fprintf IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now