Poligno 1 Denunciar post Postado Setembro 26, 2015 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
_Isis_ 202 Denunciar post Postado Setembro 26, 2015 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
Poligno 1 Denunciar post Postado Setembro 28, 2015 Fico com a terceira opção,achei mais prudente e ampla rsrs Valeu mais uma vez brother! Compartilhar este post Link para o post Compartilhar em outros sites