Jump to content
miskmar

Como guardar varias informações num só ficheiro

Recommended Posts

miskmar

Estou a tentar guardar estas informações e não consigo, apresenta-me na 1º linha, na 2ºlinha só me apresenta o utilizador e a data

ajudem se faz favor

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
 int i;


 printf("Benvindo\n 1-registar\n");

 scanf("%d", &i);
 switch (i)
  {
    case 1 : reg();
   }

   }

int reg() 
{
int Numero;
char Name[30], Password[10], Nome[30], Pass1[20], Pass2[20], Data[40];
FILE *fp;
fp = fopen("registo.txt", "a+");

printf("Introduza o seu numero de Utilizador:\n");
scanf ("%s", &Numuero);   
printf("Introduza o seu Nome de Utilizador:\n");
scanf ("%s", &Nome);
printf("Introduza a password:\n");
scanf("%s", &Pass1);
printf("Introduza a password:\n");
scanf("%s", &Pass2);

if(strcmp(Pass1,Pass2) != 0) 
{  
   printf("Passwords nao são iguais!Repita!\n");  
 } 
 else
 {
  printf("Passwors iguais\n");
 }


while(fscanf(fp, "%d %s %s %s",Numero, Name, Pass1, Data) !=EOF)
       {
           if (strcmp(Name, Nome)==0) {printf("Utilizador ja registado com esse nome escolha outro\n\n"); fclose(fp); return(registo(Nome, Pass1, 0));}
       }

return(registo(Nome, Pass1, 1));
}

registo (int Numero, char Nome[30],char Pass1[10], int num) 
{
FILE *fp;
fp = fopen("registo.txt", "a+");
if (num ==0) reg();
if (num ==1) {fprintf(fp, "%d %s %s  %s\n",Numero, Nome, Pass1, __DATE__ ); printf("Registo Efectuado com Sucesso\n\n");
fclose(fp);
main();}
}

Edited by thoga31
Tags CODE + GeSHi

Share this post


Link to post
Share on other sites
thoga31

Bem-vindo. Vê aqui como colocar correctamente o código ;)

Tens de ser mais explícito na tua dúvida e no que o que pretendes fazer com esse código.

Mas antes de mais, alguns pontos a frisar:

  • O código não está bem indentado.
  • A tua main não retorna nenhum valor, e devia.
  • reg é uma função que retorna int, e retorna o valor de registo, mas registo não tem nenhum tipo definido, e também vai sempre para a main - tens noção da confusão que este código é? A main, excepto em casos raros, não deve ser chamada.
  • Deves verificar sempre se o ficheiro teve sucesso aquando do fopen.
  • Tu verificas se as passwords são iguais, mas no caso de serem diferentes não as voltas a pedir - vais à mesma verificar o ficheiro.

Basicamente tens um código esparguete. As funções devem ter objectivos bem definidos e métodos internos de controlar as várias situações. Tu estás a fazer depender de várias funções o sucesso da operação. Repara, estás a fazer depender de registo o novo pedido de dados caso encontres o nome no ficheiro, entre outras.

O meu primeiro conselho é repensares esse código e organizá-lo como deve ser, sem esse cruzamento de chamadas de funções.


Knowledge is free!

Share this post


Link to post
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.