Dificuldade para apagar caracteres.

1. Dificuldade para apagar caracteres.

Leandro Medeiros
doctorx777

(usa Ubuntu)

Enviado em 11/09/2008 - 15:22h

Olá pessoal....
depois de muito sofrer aqui, recorro aos senhores.. eheh
seguinte, tenho um arquivo txt salvo com os seguintes dados dentro:

Nome:Maria:idade:23:rua_5_quadra_12
Nome:joao:idade:31:profissão:professor:rua_9_quadra_17_lote21
Nome:Antonio:idade:18:profissão:estudante:avenida_9_esquina_17_lote21

bom, tenho um arquivo q segue o modelo acima, só que com várias linhas, e preciso deixa-lo da seguinte forma:

Nome:Maria:idade:23:
Nome:joao:idade:31:profissão:
Nome:Antonio:idade:18:profissão:estudante:

bom, como os ":" nao seguem um padrão entre as linhas, nao da pra percorrer a linha do inicio pro fim e apagar tudo após o 3º ":" encontrado encontrado por exemplo...

então eu consegui raciocinar um algoritimo, porém como to começando a mexer agora com arquivo, fseeks e companhia, to apanhando muito aqui....

seria algo do tipo:

posicione na primeira linha, percorra a string ate encontrar o [enter] (o que indicará que a primeira linha acabou) e começe a apagar caractere por caractere ate que seja encontrado o primeiro ":", interrompa e passe para a segunda linha e repita o processo...
salve o arquivo com outro nome, por exemplo corrigido.txt.

lembrando que o arquivo com os dados está em C:\dados.txt

entao o programa precisa carrega-lo, executar as açoes, e salvar com outro nome..
bom, acho que consegui explicar...
agradeço desde ja quem puder ajudar com algum codigo...

vlw pessoal.




  


2. Viva o Linux

Pedro
javamizer

(usa Suse)

Enviado em 11/09/2008 - 17:01h

Amigo, esse site é sobre Linux.
Se seu arquivo tivesse em "/" em vez de "c:\" eu te ajudaria.


3. putz...

Leandro Medeiros
doctorx777

(usa Ubuntu)

Enviado em 11/09/2008 - 17:45h

Orra, amigo... que isso...
q superficial vc é...
é claro que vou programar isso no linux, mas eu preciso disso pra usar no meu serviço, nao sei se vc percebeu mas é um arquivo contendo dados de clientes, que precisam ser feitas algumas alteraçoes...

negar ajuda por causa de um detalhe pífio desse foi triste...


4. Re: Dificuldade para apagar caracteres.

Sergio Teixeira - Linux User # 499126
Teixeira

(usa Linux Mint)

Enviado em 11/09/2008 - 18:42h

Seja benvindo, amigo!

Seu raciocínio está correto. Em termos.

Note que na primeira linha os campos já são diferentes.
Não foi portanto levado em consideração que haja campos heterogêneos, ou se falta ou sobra alguma informação.
Isso poderá eventualmente dar algum resultado inesperado.
Também o amigo terá de certificar-se de que o CR permanecerá (único) ao final da linha.

Mas é por aí.

Boa sorte!

PS:
Tive de me ausentar por alguns instantes.
O que existe em comum é que todas as linhas começam com "Nome:" e que, a partir da segunda linha, esse "Nome:" estará sempre após o CR.
Talvez pensando por aí o amigo encontre sua solução.




5. Re: Dificuldade para apagar caracteres.

Geraldo José Ferreira Chagas Júnior
gjr_rj

(usa Debian)

Enviado em 11/09/2008 - 19:09h

rsrsrsrsrs

liga não cara, é assim mesmo. Você vai encontrar várias opiniões diferentes aqui. Liberdade/Democracia é assim.

Eu como penso diferente, vou te dar uma mão. Primeiro você vai ter que definir a linguagem. Se for C/C++ esse código não faz isso, mas irá te mostrar como trabalhar pois tem tudo que você vai precisar.

http://www.vivaolinux.com.br/script/Ajustando-o-sincronismo-da-legenda-com-o-filme

Se tiver alguma dúvida no código é só postar.

abraço.




6. Re: Dificuldade para apagar caracteres.

Geraldo José Ferreira Chagas Júnior
gjr_rj

(usa Debian)

Enviado em 11/09/2008 - 19:17h

você já definiu o algoritmo, mas não precisa ler caracter por caracter até encontrar \n (linux) ou \r\n (windows) o fgets já lê uma linha.

Pega o tamanho da linha e percorre de forma decrescente for (i=tam; i>=0; i--)

encontrou o caracter if (linha [i] = ':')

é só colocar um final de string nesta posição
linha[i]='\ 0';

e usar o strcopy
strcpy (novalinha, linha);

na realidade, como finalizou a "string" linha com o \ 0, você pode até gravar no arquivo direto, sem precisar copiar o valor para outra variável como fiz acima.

espero ter ajudado.




7. Re: Dificuldade para apagar caracteres.

Geraldo José Ferreira Chagas Júnior
gjr_rj

(usa Debian)

Enviado em 11/09/2008 - 19:26h

Por último, o Teixeira está certo

O que você quer ? nome, idade e profissão ?!

então acho que você deveria procurar na linha por nome:, idade: e profissão: e pegar o conteúdo da que vem depois dessas palavras.

Assim, pode vir na ordem que for e ter o lixo que for, você não terá problema. Desde que seja ...nome:<nome>:...

Sacou ?!


8. Re: Dificuldade para apagar caracteres.

Leandro Medeiros
doctorx777

(usa Ubuntu)

Enviado em 12/09/2008 - 02:08h

hohoho... que beleza!!
era isso q precisava nobres senhores, Informação!!
Bem mais elegante mostrar os caminhos e dicas do que ficar emburradinho por causa de um C:\ rs...

Bom, eis-me q vou começar a implementar algo... provavelmte nao conseguirei 100% do q preciso, então logo voltarei aqui, e mais dicas são bem vindas...

até +
=)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts