View Full Version : apagar string em C


magikRing
20-12-2007, 22:33
boas..eu estou a fazer um trabalho em c que trabalha apenas com memoria virtualmente, nada de ficheiros. quando fecho o prog a memoria vai.se toda.
bom...a minha duvida e a seguinte. eu tenho uma estrutura quem tem um titulo e um conteudo o que eu quero fazer e quando escolho o comando 'del <nome do texto> apagar o conteudo do texto e o titulo tabem, ou seja, eliminar tudo.

a quem puder ajudar muito obrigado


a unica maneira que estou a ver seria atraves do strdelc, mas este so apaga as as letreas que eu disser e nao o texto todo. havera alguma forma de o trasnformar?

char strdelc (char<nome da string>, char<letras que quero apagar>
{
int i,j;
for(i=j=0;<nome da string>[i]!='\0\;i++)
if (<nome da string>[i]!=<letras que quero apagar>)
<nome da string>[j++] = <nome da string>[i];
<nome da string>='\0'
return<nome da string>
}

Baderous
20-12-2007, 22:51
Se o que pretendes é apenas apagar o "conteúdo" da estrutura, deixando-a presente, o que tens de fazer é uma função que torne uma string vazia e depois aplicas aos campos da estrutura.

char * init_str(char *s) {
s[0]='\0';
return s;
}

magikRing
20-12-2007, 22:55
mas nao ha maneira de remover mesmo?

ja agora. eu posso apagar os campos da estrutura com ose fossem strings normais?
a minha estrutura e:

typedef struct
{
char conteudo[25][80];
char title[80];
}texto;


fazendo conteudo[0]='\0\ e o mesmo para o title elas vao ser apagadas?

Baderous
20-12-2007, 23:01
mas nao ha maneira de remover mesmo?

Fazes free ao apontador para a estrutura.

free(*texto)

ja agora. eu posso apagar os campos da estrutura com ose fossem strings normais?
a minha estrutura e:

typedef struct
{
char conteudo[25][80];
char title[80];
}texto;


fazendo conteudo[0]='\0\ e o mesmo para o title elas vao ser apagadas?

Sim, penso que sim.

magikRing
20-12-2007, 23:10
vou tentar fazer isso entao. obrigado

Demio
21-12-2007, 12:57
Não se pode fazer free a coisas que não foram alocadas dinamicamente.

Onde é que guardas estas estruturas de dados, lista ligada, vector..?

Xikinho90
21-12-2007, 13:46
boas..eu estou a fazer um trabalho em c que trabalha apenas com memoria virtualmente, nada de ficheiros. quando fecho o prog a memoria vai.se toda.
bom...a minha duvida e a seguinte. eu tenho uma estrutura quem tem um titulo e um conteudo o que eu quero fazer e quando escolho o comando 'del <nome do texto> apagar o conteudo do texto e o titulo tabem, ou seja, eliminar tudo.

a quem puder ajudar muito obrigado


a unica maneira que estou a ver seria atraves do strdelc, mas este so apaga as as letreas que eu disser e nao o texto todo. havera alguma forma de o trasnformar?

char strdelc (char<nome da string>, char<letras que quero apagar>
{
int i,j;
for(i=j=0;<nome da string>[i]!='\0\;i++)
if (<nome da string>[i]!=<letras que quero apagar>)
<nome da string>[j++] = <nome da string>[i];
<nome da string>='\0'
return<nome da string>
}


Para comparar strings tens de usar o strcmp, depois para a string ficar vazia fazes strcpy(nome_da_string, ' ') qualquer coisa do genero, mas na net existem montes de documentos sobre strings em c...