Ir para conteúdo

Arquivado

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

Poligno

Exercício de manipulação de strings.

Recommended Posts

Olá galera,estou tentando resolver o exercício a baixo porém o código não esta fazendo o que eu gostaria!

Fazer um programa que leia uma string e a partir desta gere uma nova duplicando cada caracter da string original. Escreva a nova string. Ex: "OI" => "OOII"; "PROVA 1" =>"PPRROOVVAA 11"

#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<string.h>

int main()
{
int i,j,cont,aux;
char st[100],st2[100];

printf("digite uma palavra:\n");
scanf("%s",&st);

aux=strlen(st)*2;


for(i=0;i<aux;i+2){
if(i==aux-1){
st2=st;
st2[i+1]=st;
break;
}
st2=st;
st2[i+1]=st;
}


printf("%s",st2);


system("pause");
}

 

Grato!

Compartilhar este post


Link para o post
Compartilhar em outros sites

De cara já existe um problema com os tamanhos das strings. O que acontece com seu código se a string original ocupar os 100 caracteres alocados? A string secundária não vai armazenar os 200 caracteres necessários. Você tem 3 saídas:
1- Limitar a string original em 50 caracteres e manter a secundária em 100;

2- Alterar o tamanho da secundária para 200.

3- Declarar a segunda string após ler a primeira.

 

 

#include <string.h>
#include <stdio.h>
#define TAM_ORIGINAL 100

int main(void) {
    char texto1[TAM_ORIGINAL];
    fgets(texto1, TAM_ORIGINAL-1, stdin);
    (*strrchr(texto1, '\n')) = '\0'; // Removendo a quebra de linha lida pelo fgets.

    unsigned int tam_duplicado = 2*strlen(texto1);
    char texto2[tam_duplicado];
    for(unsigned int i=0, j=0; i<strlen(texto1); i++) {
        texto2[j] = texto1[i];
        texto2[j+1] = texto1[i];
        j+=2;
    }
    texto2[tam_duplicado-1] = '\0';

    printf("%s\n", texto2);
    return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.