Tratamento de strings [RESOLVIDO]

1. Tratamento de strings [RESOLVIDO]

Lucas jose Pereia de Araujo
LucasJPA

(usa Debian)

Enviado em 24/09/2017 - 00:02h

Boa noites. Colegas estou em duvida em uma questao sobre strings, quero desenvolver um algoritmo que "pegue parte de uma string" e armazene em um novo vetor, ou fazer isso de um jeito que não seja preciso outro vetor, ou que gaste menos recurso.

pensei neste codigo agora e para mim deveria funcionar:

//programa que pega parte de uma string

#include <stdio.h>

int main() {

char string[] = "palavra";
char novo[6];
int i;

printf("\n\nString: %s", string);

for( i = 0; i == 'v'; i++) {

novo[i] = string[i];
}



printf("\n\nNovo: %s\n\n", novo);


return 0;
}


Qual o erro ? Pois ao executar esta e a saída:

String: palavra

Novo: 0@




  


2. Re: Tratamento de strings

Paulo Dias
p4ulodi4s

(usa XUbuntu)

Enviado em 24/09/2017 - 01:12h

Oi, tudo bem?

A implementação está equivocada...

Veja,

a condição i == 'v' , garante que o for vai ser executado enquanto o valor da variável i for igual a 'v'. Como 'v' é do tipo char, é usado seu valor na tabela ascii.

Assim, na primeira vez, é comparado se i é igual a 118 . Como o resultado dessa comparação é false, a execução sai sem passar nenhuma vez pelo corpo do for.

Se não entender essa comparação entre int e char, tente compilar e executar esse código:


#include <stdio.h>

int main() {

char string[] = "palavra";
char novo[6];
int i;

//printf("\n\nString: %s", string);

for( i = 0; i != 'v'; i++ ) {

//novo[i] = string[i];
printf("i = %d \n", i );
}

//printf("\n\nNovo: %s\n\n", novo);

return 0;
}


Para resolver o problema com o seu código, tente fazer a comparação entre a letra que está na posição i da variável string com o char 'v'.

Outra coisa, para ser usada como string, a variável novo precisa de um nulo no final.

Linux Professional Institute - LPIC-1
Novell Certified Linux Administrator - CLA
Oracle Certified Associate, Java SE Programmer - OCA

http://twitter.com/p4ulodi4s
http://www.prminformatica.com.br/


3. Re: Tratamento de strings [RESOLVIDO]

Lucas jose Pereia de Araujo
LucasJPA

(usa Debian)

Enviado em 24/09/2017 - 02:09h

Eu entendi o meu erro, agora vou pensar em como ir ate o caracter especifico. Estava tantando usar esse exemplo para treinar para algo maior.
Obrigado !!
Mas poderia me dar uma dica, desculpe por perturbar tanto.


4. Re: Tratamento de strings [RESOLVIDO]

Lucas jose Pereia de Araujo
LucasJPA

(usa Debian)

Enviado em 24/09/2017 - 11:55h

Eu pensei em um codigo que não use o FOR
//programa que pega parte de uma string

#include <stdio.h>


int main() {

char string[] = "palavra";
char novo[7];
int i;

printf("\n\nString: %s", string);

while(string[i] != 'v') {

i = 0;
novo[i] = string[i];
i++;
}


printf("\n\nNovo: %s\n\n", novo);


return 0;
}


Mas ainda continua não dando certo. E quando ao caractere nulo, seria necessario colocar o comando:
novo[i] = '\0';
abaixo do while ?


5. Re: Tratamento de strings [RESOLVIDO]

Lucas jose Pereia de Araujo
LucasJPA

(usa Debian)

Enviado em 24/09/2017 - 11:58h

LucasJPA escreveu:

Eu pensei em um codigo que não use o FOR
//programa que pega parte de uma string

#include <stdio.h>


int main() {

char string[] = "palavra";
char novo[7];
int i;

printf("\n\nString: %s", string);

while(string[i] != 'v') {

i = 0;
novo[i] = string[i];
i++;
}


printf("\n\nNovo: %s\n\n", novo);


return 0;
}


Mas ainda continua não dando certo. E quando ao caractere nulo, seria necessario colocar o comando:
novo[i] = '\0';
abaixo do while ?


Codigo mais coerente
//programa que pega parte de uma string

#include <stdio.h>


int main() {

char string[] = "palavra";
char novo[7];
int i;

printf("\n\nString: %s", string);

while(string[i] != 'v') {

i = 0;
novo[i] = string[i];
i++;

if(string[i] == 'v')
break;

novo[i] = '\0';
}

printf("\n\nNovo: %s\n\n", novo);


return 0;
}



6. Re: Tratamento de strings [RESOLVIDO]

Paulo Dias
p4ulodi4s

(usa XUbuntu)

Enviado em 24/09/2017 - 16:49h

Oi.
o seu segundo código está quase fazendo o que você precisa...


#include <stdio.h>

int main() {

char string[] = "palavra";
char novo[7];
int i;

printf("\n\nString: %s", string);

while(string[i] != 'v') {

i = 0;
novo[i] = string[i];
i++;
}

printf("\n\nNovo: %s\n\n", novo);

return 0;
}


Por que i = 0; está no corpo do while?


Linux Professional Institute - LPIC-1
Novell Certified Linux Administrator - CLA
Oracle Certified Associate, Java SE Programmer - OCA

http://twitter.com/p4ulodi4s
http://www.prminformatica.com.br/


7. Re: Tratamento de strings [RESOLVIDO]

Lucas jose Pereia de Araujo
LucasJPA

(usa Debian)

Enviado em 24/09/2017 - 21:44h

Acho que foi falta de atenção, mas tirei e deu certo, obrigado. Mais uma duvida, ao usar o codigo a nova string coipiou ate o 'a' ficando: "pala", como posso copiar ate o 'v' ?



8. Re: Tratamento de strings [RESOLVIDO]

Lucas jose Pereia de Araujo
LucasJPA

(usa Debian)

Enviado em 24/09/2017 - 21:46h

LucasJPA escreveu:

Acho que foi falta de atenção, mas tirei e deu certo, obrigado. Mais uma duvida, ao usar o codigo a nova string coipiou ate o 'a' ficando: "pala", como posso copiar ate o 'v' ?

Eu tirei o if do codigo, pois pensei que ajudaria, mas nao deu certo.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts