Ir ao conteúdo

Posts recomendados

Postado

Tenho que fazer uma função que duplica cada caractere de uma string recebida.Consegui fazer a função e vi que ela está duplicdando,porém ao imprimir mostra a string antes de ser duplicada o que faço?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAMANHO 100

int main()
{
    char texto[TAMANHO];
    printf("\n Digite o texto: ");
    fgets(texto,(TAMANHO-1),stdin);
    system("cls||clear");
    int cont=(((strlen(texto))*2)+1);
    char duplo[cont];
     duplo[cont]='\0';
    printf("\n Texto antes da mudança:\n%s",texto);
    duplica(texto,duplo);
    getchar();
    return 0;

}

void duplica(char texto[],char duplo[])
{
    int i,j;
    for(i=0;texto[i]!=NULL;i++)
    {
        j=i+1;
        duplo[i]=texto[i];
        duplo[j]=texto[i];
        printf("\ni: %d %c\n j:%d %c\n",i,duplo[i],j,duplo[j]);//Adicionei isso aqui pra verificar se estava duplicando e vi q está mas a impressao que esta errada
    }

    printf("\n Texto apos ser duplicado:\n");
    for(i=0;duplo[i]!=NULL;i++)
    {
        printf("%c",duplo[i]);
    }
    printf("\n");
}

 

  • Curtir 1
Postado

Não sei se é a resposta que você procura, a minha solução do problema foi essa

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAMANHO 100
void duplica(char texto[], char duplo[]);
int main()
{
	char texto[TAMANHO], duplo[TAMANHO];
	printf("\n Digite o texto: ");
	scanf("%[^\n]", texto);
	duplica(texto, duplo);
	return 0;

}

void duplica(char texto[], char duplo[])
{
	int i, tam, c = 0;
	tam = strlen(texto);
	for(i = 0; i < tam; i++)
	{
		duplo[c++] = texto[i];
	}
	duplo[c] = '\0';
	for(i = 0; i < c; i++)
	{
		printf("%c\n%c\n", duplo[i], duplo[i]);
	}
	printf("\nTexto apos ser duplicado:\n");
	for(i = 0; i < c; i++)
	{
		printf("%c%c", duplo[i], duplo[i]);
	}
	printf("\n");
}

 

  • Curtir 2
Postado

Eu pouco entendi o que a tarefa faz seria um string com dobro string de entrada, depois a saída é essa nova string.

Exp.:

ENTRADA		     |SAÍDA
Ola clube do hardware|Ola clube do hardware Ola clube do hardware

 

  • Curtir 2
Postado

@Amanda Kellen    coloque o caractere nulo depois de preencher a variável duplo, e para isso passe o valor de cont para a função duplica assim :

duplica(texto,duplo,cont);

e lá na função depois de preencher a variável duplo coloque " \0 "     e modifique essa parte do código assim :

void duplica(char texto[],char duplo[],cont)
{
    int i,j=0;
    for(i=0;texto[i]!=NULL;i++)
    {
        duplo[j  ]=texto[i];
        duplo[j+1]=texto[i];
        printf("\ni: %d %c\n j:%d %c\n",j,duplo[j],j+1,duplo[j+1]);//Adicionei isso aqui pra verificar se estava duplicando e vi q está mas a impressao que esta errada
        j+=2;
    }
    duplo[cont]="\0";

 

  • Curtir 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!