Ir ao conteúdo

Posts recomendados

Postado
vota(){
	char texto_str[50];
	int votop;
	int dep[4];
	scanf("%d", &votop);
	switch (votop){
		case 1:
			FILE votosread=fopen("C:\\Users\\User\\Documents\\Faculdade\\PRC\\CadCandidato v2.0 - Copia\\Votos\\dep1.txt", "r");
			FILE votosdep=fopen("C:\\Users\\User\\Documents\\Faculdade\\PRC\\CadCandidato v2.0 - Copia\\Votos\\dep1.txt", "w");
			fscanf(votosread,"%i", &dep[1]);
			dep[1]++;
			fprintf(votosdep,"%i",dep[1]++);
			printf("%i", dep[1]);
			
	}

Fala galera, nessa função a idea era o programa pegar o valor 1 existente dentro do arquivo dep1.txt, somar 1, totalizando 2,e sobreescrever esse valor dentro do arquivo novamente(tirar o 1 e por o 2)  e sempre que o usuário escolhesse a opção 1 isso iria acontecer de novo(pegar o 2 somar 1 e substituir no arquivo por 3 e assim vai). O problema é que ele não está gravando no arquivo e sempre me retorna o valor 1. Se puderem me ajudar eu agradeço :)

  • Obrigado 1
Postado

@João Vitor Pelison   a função SEEK consegue posicionar o ponteiro do arquivo no local que quiser , e ali gravar , mas isso não gosto de usar é difícil , então o que faço é fazer um backup do arquivo todo menos o tal número  1  que você disse , assim cria se outro arquivo que irá receber todos os dados desse primeiro arquivo , fazendo a leitura de cada palavra nele , e compara com o que você quer modificar , e encontrando você faz essa modificação , que seria 

se atoi( palavra pegada do arquivo ) for igual a 1 então
    num = atoi(palavra);
    num = num + 1    
fimse
//gravar o num no novo arquivo ;

mas aí ele vai modificar todos os números um encontrados ,  então você precisar identificar o que vem antes ou depois desse número , para saber que seja esse mesmo , e continua a gravar todos os outros dados até o final , depois fecha os dois arquivos e deleta o primeiro arquivo , com o comando remove(arquivo);  , e em seguida renomeia o segundo arquivo com o mesmo nome do primeiro , com o comando rename(nome_arquivo_novo,nome_arquivo_antigo); , assim no final de tudo , você terá o mesmo arquivo com o número 1 modificado para o valor dois .

Postado

@João Vitor Pelison      realmente , não tinha observado ,  estava no final da linha escondida na janela e não puxei para ver o restante da linha ,  mas ali você colocou o FILE votosread e FILE votosdep e não tem aquele Asterisco tradicional , creio que assim ele não vai abrir o arquivo e reseta-lo para uma nova gravação , e agora é que vi que você já está fazendo do jeito que te falei , então experimente colocar um astrerisco no votoread e no votosdep .  e na hora de gravar não coloque dep++,  remova esse ++  .

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