Ir ao conteúdo
  • Cadastre-se
Amanda Kellen

C estou com um problema na impressão da string

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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

Compartilhar este post


Link para o post
Compartilhar em outros sites

:oops:Agora consegui ver bem qual é a tarefa.

 

  • Curtir 1
  • Haha 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×