Jump to content

Ajuda com registo de mensagem em ficheiros


Yuizi

Recommended Posts

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.