Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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";

 

Editado por devair1010
  • 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






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

×