specian 0 Denunciar post Postado Janeiro 27, 2009 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
quitZAUMMM 18 Denunciar post Postado Janeiro 27, 2009 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
specian 0 Denunciar post Postado Janeiro 27, 2009 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
quitZAUMMM 18 Denunciar post Postado Janeiro 27, 2009 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
specian 0 Denunciar post Postado Janeiro 28, 2009 entendi!!! muito obrigado pela ajuda!!!! sei q sou novato aqui, mas no que eu puder ajudar, fiquem a vontade!!!! []s Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Janeiro 28, 2009 ok! no q precisar (e eu souber) poste ae! []s Compartilhar este post Link para o post Compartilhar em outros sites