Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

specian

[Resolvido] problemas com arquivos - C

Recommended Posts

Boa tarde,

estou com um problema para alterar alguns arq txt, tenho que ler um determinado aquivo contendo a instrução.

 

 

dn: CN=krbtgt,CN=Users,DC=tivit,DC=corp

changetype: add

 

ai preciso mudar o changetype: add por changetype: modify e inserir a linha add: msExchHide

entao na verdade o arq teria q ficar assim

 

dn: CN=krbtgt,CN=Users,DC=tivit,DC=corp

changetype: modify

add: msExchHide

 

eu consegui gerar um programa q le o arq e copia em outro, mas nao estou conseguindo fazer essas alterações. pesquisei algumas coisas na net mas nada satisfatorio.

Poderiam me dar uma forca por favor.

segue abaixo o codigo

abraços

 

 

#include<stdio.h>
#include<stdlib.h>
 
main(){
 
	   char str[255];
		FILE *arq1;
		 FILE *arq2;  
 
	   arq1 = fopen("desabilitados.txt","r");
 
	   arq2 = fopen("teste.txt","w");
 
		while(!feof(arq1))
  {
 
	 fgets(str,255,arq1); 
	 fprintf(arq2,"%s",str);
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode até sobreescrever o txt..

+ como é pequeno o txt eu usario o fseek

assim:

fseek(*FILE_alguma_coisa, 0, SEEK_CUR);

você tem q posicionar onde qr alterar e pode usar o fprintf q ele escreverá por cima..

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade ele nao e tao pequeno assim, isso é um arquivo q sera gerado de mes em mes e nao existe um tamanho especifico e sempre preciso fazer essas alterações e por isso devo usar como parametro o final do arq, acredito eu, eu escervi o seguinte em uma outra tentativa

existem algumas coisas desnecessarias no meio, é q estou fazendo alguns testes, entao nao considerar ao pe da letra rs

main(){
	   
	 typedef char tdados;
	   
	  tdados str[tb];
	   char x;
		FILE *arq1;
		 FILE *arq2;  
		  FILE *arq3; 
	   
	   arq1 = fopen("desabilitados.txt","r");
	   
	   arq2 = fopen("teste.txt","w");
	   
	   
   
	   while(!feof(arq1))
	   {
		 x = getc(arq1);
	  
		
		
		 if(x == 100)
		 {
		  
		   fgets(str,512,arq1);   
			   
		   fprintf(arq2,"%s",str);
		 }
		   else if (x == '\n')
		   {
		   fprintf(arq2,"");
		   } 
		   
}
	 fclose(arq1);
	 fclose(arq2);

printf("%d\n\n",x);
printf("%d\n\n",tb);

}

e como a linha q preciso capturar sempre comeca com DN, coloquei o caratcter ascii do d para pega-lo, so q ele esta engolindo o D e imprimindo na outra linha.

poderia me ajudar por favor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos lah, você pode fazer algo assim:

vai lendo linha a linha e comparando com [ dn: changetype: add ] para isso um strcmp resolve...

ai nesse ponto use o fseek para escrever

[ changetype: modify

add: msExchHide ]

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.