Ir ao conteúdo
  • Cadastre-se

C Arquivo txt apagando sem intenção ao iniciar compilação! <CODE>


Braga0Lufe
Ir à solução Resolvido por arfneto,

Posts recomendados

#include<stdio.h>
#include <locale.h>
#include <cstring>
#include <stdlib.h>

int numero;
int main(int argc, char*argv[])
{
	setlocale(LC_ALL, "Portuguese");

FILE * p_au;//variável ponteiro para o arquivo
FILE * p_as;
FILE * p_aus;
//FILE
char usuario_c[20];
char c_usuario[20];
char senha_c[20];
char c_senha[20];
p_au = fopen("email_cadastro.txt", "w"); //abrindo o arquivo com tipo de abertura w
p_as = fopen("senha_cadastro.txt", "w");
p_aus = fopen("email_cadastro.txt", "r");
int usuario, senha,usuario_i,i_usuario, senha_i, i_senha;
char sinco[] = "Senha incorreta, tente novamente!";
char csenha[] = {0};
char clogin [] = {0};
char p_aul[]={0};
int senha1, i, t, r, s,ilogin, ip_aul;
	
	
	
	printf("Já possui login?\n\n");
	printf("1 - Não\n");
	printf("2 - Sim");
	printf("\nEscolha a opção desejada: \n");
	scanf("%d", &numero);
	
	switch(numero){
		case 1:
		printf("Insira os dados para cadastro");
		  
		  	if(p_au ==NULL && p_as ==NULL){
			printf("Erro na abertura do arquivo!");
			return 1;
		} 		
			else{	
			fflush(stdin);
			printf("\nEscreva um email para cadastro: ");
			scanf("%s", &usuario_c);
			i_usuario = strtol(usuario_c, NULL, 10);
			printf("\nCódigo %i\n", &i_usuario);
			printf("Confirme seu email");
			s=3;
			fflush(stdin);
			for (i=0; i<3; i++){
  					printf("\nVocê só terá %i chances", s);
  					s--;
  					printf("\nInsira o email novamente: \n");
  					scanf("%s*%c", &c_usuario); //usuario teste
  					usuario_i= strtol(c_usuario, NULL, 10);//transformando string em int
  					printf("\nCódigo rastreio %i\n", &usuario_i);
  					fflush(stdin);
  					if (i_usuario != usuario_i){
  					printf("\nO email está incorreto, por favor tente novamente!");
  					}
				  		else{
				  		printf("\nEmail correto.\n");
				  			fprintf(p_au, "%s", usuario_c); //usando fprintf para armazernar string no arquivo
							fclose(p_au); //usando fclose para fechar o arquivo
							fflush(stdin);
						printf("\nDados gravados com sucesso!");
  						break;}
  			}
			
						
		  	//DEU CERTO *****, so não sei como, fazer o mesmo para senha
			printf("\nEscreva uma senha para cadastro: ");
			scanf("%s", senha_c);
			i_senha = strtol(senha_c, NULL, 10);
			printf("Confirme sua senha");
			r=3;
			for (i=0; i<3; i++){
  					printf("\nVocê só terá %i chances", r);
  					r--;
  					printf("\nInsira a senha novamente: \n");
  					scanf("%s*%c", c_senha); //usuario teste
  					senha_i= strtol (c_senha, NULL, 10);//transformando string em int
  					if (i_senha != senha_i){
  					printf("\nA senha está incorreta, por favor tente novamente!");
  					}
				  		else{
				  		printf("\nSenha correta.\n");
				  			fprintf(p_as, "%s", c_senha); //usando fprintf para armazernar string no arquivo
							fclose(p_as); //usando fclose para fechar o arquivo
							printf("\nDados gravados com sucesso!");
						//printf("\nDados gravados com sucesso!");
  						break;}
  			}
		  }
		  
			break;
		
case 2: 
			p_aus = fopen("email_cadastro.txt", "r"); //abrindo o arquivo com tipo de abertura w
			//p_as = fopen("senha_cadastro.txt", "r");
			
			fprintf(p_aus, "email_cadastro");
			if (p_aus == NULL){
				printf("Não há login cadastrado");
			}else{
			
			fscanf(p_aus, "email_cadastro.txt", &p_aul);
			printf("Insira o login: ");
			scanf("%s*%c", &clogin);
			ilogin= strtol(clogin, NULL, 10);
			ip_aul= strtol(p_aul, NULL, 10);
			}	if (ilogin !=ip_aul){
					printf("Login incorreto");
				}}}

Boa tarde, estou fazendo um menu de cadastro de usuário e toda vez que o Dev compila o código, ele acaba apagando os arquivo txt gravados no endereço! Como posso resolver? Pois em determinada parte do programa, eu quero pegar estes dados e após compilar novamente, eu gostaria de resgatar os mesmo! A última parte ainda está em fase de construção, então há erros de sintaxe, mas o maior problema é que mesmo retirando ela, o Dev ainda exclui o que foi escrito em txt. (O código está horrivelmente feio para visualizar, mas está funcionando).

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução
39 minutos atrás, Braga0Lufe disse:

Boa tarde, estou fazendo um menu de cadastro de usuário e toda vez que o Dev compila o código, ele acaba apagando os arquivo txt gravados no endereço! Como posso resolver? Pois em determinada parte do programa, eu quero pegar estes dados e após compilar novamente, eu gostaria de resgatar os mesmo! A última parte ainda está em fase de construção, então há erros de sintaxe, mas o maior problema é que mesmo retirando ela, o Dev ainda exclui o que foi escrito em txt.

 

Dev-C++ é um IDE, um ambiente de desenvolvimento escrito em torno de um editor de texto.

 

Nem compila programas, mas a partir do código do programa digitado no editor ele chama o compilador para compilar o programa e o linker para gerar o executável. 

 

Nenhum desses passos vai apagar arquivos txt

 

Logo no início do programa você abre os arquivos para gravação, e assim claro que o conteúdo anterior vai sumir...

 

Não escreva um programa interativo antes dele estar pronto em termos de funções. Só vai perder muito tempo.

 

Não precisa de um arquivo para cada coisa. Basta um. Abra para leitura. Depois gere outro na saída com o que mudou e salve. E depois mude o nome. É o comum.

 

Sobre o formato

 

Vário IDE formatam arquivos fonte, e tem muitos formatadores, inclusive online, que pode usar. Abaixo, seu programa formatado por um desses, clang-format, a partir do Visual Studio.

 

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

#include <cstring>

int numero;
int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "Portuguese");

    FILE* p_au;  // variável ponteiro para o arquivo
    FILE* p_as;
    FILE* p_aus;
    // FILE
    char usuario_c[20];
    char c_usuario[20];
    char senha_c[20];
    char c_senha[20];
    p_au = fopen(
        "email_cadastro.txt",
        "w");  // abrindo o arquivo com tipo de abertura w
    p_as  = fopen("senha_cadastro.txt", "w");
    p_aus = fopen("email_cadastro.txt", "r");
    int  usuario, senha, usuario_i, i_usuario, senha_i, i_senha;
    char sinco[]  = "Senha incorreta, tente novamente!";
    char csenha[] = {0};
    char clogin[] = {0};
    char p_aul[]  = {0};
    int  senha1, i, t, r, s, ilogin, ip_aul;

    printf("Já possui login?\n\n");
    printf("1 - Não\n");
    printf("2 - Sim");
    printf("\nEscolha a opção desejada: \n");
    scanf("%d", &numero);

    switch (numero)
    {
        case 1:
            printf("Insira os dados para cadastro");

            if (p_au == NULL && p_as == NULL)
            {
                printf("Erro na abertura do arquivo!");
                return 1;
            }
            else
            {
                fflush(stdin);
                printf("\nEscreva um email para cadastro: ");
                scanf("%s", &usuario_c);
                i_usuario = strtol(usuario_c, NULL, 10);
                printf("\nCódigo %i\n", &i_usuario);
                printf("Confirme seu email");
                s = 3;
                fflush(stdin);
                for (i = 0; i < 3; i++)
                {
                    printf("\nVocê só terá %i chances", s);
                    s--;
                    printf("\nInsira o email novamente: \n");
                    scanf("%s*%c", &c_usuario);  // usuario teste
                    usuario_i = strtol(
                        c_usuario, NULL,
                        10);  // transformando string em int
                    printf("\nCódigo rastreio %i\n", &usuario_i);
                    fflush(stdin);
                    if (i_usuario != usuario_i)
                    {
                        printf(
                            "\nO email está incorreto, por favor tente "
                            "novamente!");
                    }
                    else
                    {
                        printf("\nEmail correto.\n");
                        fprintf(
                            p_au, "%s",
                            usuario_c);  // usando fprintf para
                                         // armazernar string no arquivo
                        fclose(p_au);    // usando fclose para fechar o
                                         // arquivo
                        fflush(stdin);
                        printf("\nDados gravados com sucesso!");
                        break;
                    }
                }

                // DEU CERTO *****, so não sei como, fazer o mesmo para
                // senha
                printf("\nEscreva uma senha para cadastro: ");
                scanf("%s", senha_c);
                i_senha = strtol(senha_c, NULL, 10);
                printf("Confirme sua senha");
                r = 3;
                for (i = 0; i < 3; i++)
                {
                    printf("\nVocê só terá %i chances", r);
                    r--;
                    printf("\nInsira a senha novamente: \n");
                    scanf("%s*%c", c_senha);  // usuario teste
                    senha_i = strtol(
                        c_senha, NULL,
                        10);  // transformando string em int
                    if (i_senha != senha_i)
                    {
                        printf(
                            "\nA senha está incorreta, por favor tente "
                            "novamente!");
                    }
                    else
                    {
                        printf("\nSenha correta.\n");
                        fprintf(
                            p_as, "%s",
                            c_senha);  // usando fprintf para armazernar
                                       // string no arquivo
                        fclose(p_as);  // usando fclose para fechar o
                                       // arquivo
                        printf("\nDados gravados com sucesso!");
                        // printf("\nDados gravados com sucesso!");
                        break;
                    }
                }
            }

            break;

        case 2:
            p_aus = fopen(
                "email_cadastro.txt",
                "r");  // abrindo o arquivo com tipo de abertura w
            // p_as = fopen("senha_cadastro.txt", "r");

            fprintf(p_aus, "email_cadastro");
            if (p_aus == NULL) { printf("Não há login cadastrado"); }
            else
            {
                fscanf(p_aus, "email_cadastro.txt", &p_aul);
                printf("Insira o login: ");
                scanf("%s*%c", &clogin);
                ilogin = strtol(clogin, NULL, 10);
                ip_aul = strtol(p_aul, NULL, 10);
            }
            if (ilogin != ip_aul) { printf("Login incorreto"); }
    }
}

 

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!