oi tenho aqui um exercicio para fazer:
Faça um programa que inverta uma string: leia a string com gets e armazene-a invertida noutra string. Use o comando for para varrer a string até ao seu final.
O que já fiz foi
#include <stdio.h>
int main()
{
char string[100];
char stringalt[100];
int i;
gets(string);
for (i=0;string[i]!='\0';i++)
{
}
}
arconada
17-06-2008, 21:34
Não era suposto colocares a duvida? do estilo: Não sei fazer isto podiam me ajudar... ou queres que coloquem o código?
Mr. Brightside
17-06-2008, 21:39
A forma mais simples é percorreres do fim para o início e ires colocando o que encontras na nova string. (Não te esqueceas de adicionar depois o NUL no fim.)
Mais simples que isto não estou a ver.
int i=strlen(string),x;
for(x=0; x<=strlen(string); x++) {
stringalt[x] = string[i];
i--;
}
o teu codigo nao funciona aparece-me isto:
Escreve uma frase: frase exemplo
A frase que escreves-te foi: frase exemplo
Frase alterada: f Æ|└õÿ|Á!Ç|◄ Ç| ▓
arconada
18-06-2008, 21:51
o teu codigo nao funciona aparece-me isto:
onde é que colocaste o codigo que ele te deu?
int i=strlen(string),x;
for(x=0; x<=strlen(string); x++) {
stringalt[x] = string[i];
i--;
}
duas correcções:
int x, i=strlen(string)-1; //se a string tiver 10 chars, vai de 9 a 0, senão começava logo por escrever o caracter nulo
for (x=0; x<strlen(string); x++) {
stringalt[x] = string[i];
i--;
}
stringalt[x]='\0'; //caracter nulo no final da nova string
Rui_Carlos
19-06-2008, 01:14
Meter um strlen no for não é lá muito inteligente, pois a cada iteração vai ter que calcular o tamanho da string...
nada que também não se corriga facilmente. isso também já são optimizações
Obrigado ja consegui e já percebi o que é que tinha mal:
No codigo do MPAlhas:
int x, i=strlen(string)-1; //se a string tiver 10 chars, vai de 9 a 0, senão começava logo por escrever o caracter nulo
for (x=0; x<strlen(string); x++) {
stringalt[x] = string[i];
i--;
}
stringalt[x]='\0'; //caracter nulo no final da nova string
tinha-mos que primeiro usar o gets e depois é declarava-mos a variavel i.