Ir ao conteúdo
  • Cadastre-se

C estou com um problema na impressão da string


Amanda Kellen

Posts recomendados

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
Link para o comentário
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
Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

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