Ir ao conteúdo

Copiar uma string de trás para a frente em outra string


lunalovegood

Posts recomendados

Postado

Boa tarde, inventei de fazer um programa simples aqui, é digitada uma palavra qualquer de 3 letras (string a), depois a copio de trás para frente numa outra string (string b ) tentei fazer isso usando o comando for, mas não deu certo, então fui atribuindo os caracteres em b manualmente, item por item já que a palavra é curta, mas tem algo errado pois no último print não aparece caractere algum na string b, é como se ela estivesse vazia. O que pode estar errado?

Agradeço desde já a quem puder ajudar.

#include<stdio.h>#include<string.h>int main(){    char a[3], b[3];    int i, j, n; //n = numero total de caracteres da string a        //limpar a string a e b    for (i=0; i<3; i++)    {        b[i]=' ';        a[i]=' ';    }        fflush(stdin);        printf ("Digite uma palavra de 3 letras: ");     scanf("%s", &a);            b[0] == a[2];    b[1] == a[1];    b[2] == a[0];                printf ("\n\nPalavra digitada: %s \n", a);    printf ("A palavra digitada anteriormente copiada de tras para frente em b: %s \n\n", ;        system("pause");    return 0;}    
Postado

Vamos lá...

Existem alguns errinhos de linguagem específicos do C.

 

1) Quando se trabalha com string, necessitamos de um terminador de string (definido como '\0'). Ele é um caracter no final da string.

Dessa forma, se quisermos uma string com 3 caracteres, precisamos declarar o vetor com 4 posições.

char vetor[4];vetor[0] = 'a';vetor[1] = 'b';vetor[2] = 'c';vetor[3] = '\0'; printf("vetor: %s", vetor);

2) Para declarar uma string como "limpa", deve-se colocar o terminador de string em todas as posições. Existem duas maneiras simples de fazer isso.

- Usando a forma como você fez, porém trocando o espaço pelo terminador (espaço é um caracter legível, por isso que não considera como limpeza)

- Usando a limpeza de maneira direta:

char vetor[10] = {'\0'}; // Inicia limpo o vetor

3) Você está utilizando o sinal de comparação (igualdade) quando vai atribuir o valor do vetor a em b. O sinal de atribuição é apenas um igual ("=").

 

 

Corrigi seu código para você comparar:

int main(void){    char a[4] = {'\0'};    char b[4] = {'\0'};    int i = 0;    int j = 0;    int n = 0;     printf ("Digite uma palavra de 3 letras: ");    scanf("%s", a);     for ( i = 2; i >= 0; i-- )        b[i] = a[2-i];     printf ("\n\nPalavra digitada: %s \n", a);    printf ("A palavra digitada anteriormente copiada de tras para frente em b: %s \n\n", ;     system("pause");     return 0;}
Postado

 

Vamos lá...

Existem alguns errinhos de linguagem específicos do C.

 

1) Quando se trabalha com string, necessitamos de um terminador de string (definido como '\0'). Ele é um caracter no final da string.

Dessa forma, se quisermos uma string com 3 caracteres, precisamos declarar o vetor com 4 posições.

char vetor[4];vetor[0] = 'a';vetor[1] = 'b';vetor[2] = 'c';vetor[3] = '\0'; printf("vetor: %s", vetor);

2) Para declarar uma string como "limpa", deve-se colocar o terminador de string em todas as posições. Existem duas maneiras simples de fazer isso.

- Usando a forma como você fez, porém trocando o espaço pelo terminador (espaço é um caracter legível, por isso que não considera como limpeza)

- Usando a limpeza de maneira direta:

char vetor[10] = {'\0'}; // Inicia limpo o vetor

3) Você está utilizando o sinal de comparação (igualdade) quando vai atribuir o valor do vetor a em b. O sinal de atribuição é apenas um igual ("=").

 

 

Corrigi seu código para você comparar:

int main(void){    char a[4] = {'\0'};    char b[4] = {'\0'};    int i = 0;    int j = 0;    int n = 0;     printf ("Digite uma palavra de 3 letras: ");    scanf("%s", a);     for ( i = 2; i >= 0; i-- )        b[i] = a[2-i];     printf ("\n\nPalavra digitada: %s \n", a);    printf ("A palavra digitada anteriormente copiada de tras para frente em b: %s \n\n", ;     system("pause");     return 0;}

Meu deus, o erro estava na minha cara e eu não enxerguei hahahaha

Obrigada :D

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!