Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/02/2006, 17:30
Programador2
 
Fecha de Ingreso: febrero-2006
Mensajes: 4
Antigüedad: 18 años, 10 meses
Puntos: 0
ya tuvo

Aquí está el código arreglado:


#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <dos.h>

void imprime(int largo_f);

char palabrasecreta[20];

void main (void)
{
clrscr();

char largo='\0'; //inicializando variable

for(int i=0;i<20;i++) //limpiando la cadena vacia
palabrasecreta[i]='\0';

gotoxy(15,13);
printf(" Introduce la palabra secreta ----> ");
gets(palabrasecreta);

clrscr();

largo=strlen(palabrasecreta); /* canculo la longitud palabra */
gotoxy(32,12);
imprime(largo); /* imprimo "-" para cada letra que intrega el largo de la palabra*/
getch();



}

/* imprime los guiones en vez de caracxteres*/
void imprime(int largo_f)
{
int i=0; //inicializando variable

printf("%c",palabrasecreta[0]); //imprimimos el primer caracter de la cadena

for(i=1;i<largo_f-1;i++){ //imprimimos desde el segundo caracter hasta el penultimo de la cadena
printf(" _ ");
}

printf("%c",palabrasecreta[largo_f-1]); //imprimimos el ultimo caracter de la palabra

return ;

}


Lo que estabas haciendo mal era que a la hora de imprimir la ultima letra, imprimias: printf("%c",palabrasecreta[largo_f]); cuando en realidad lo que tenías que imprimir era printf("%c",palabrasecreta[largo_f-1]);, porque largo_f lo que te da es el tamaño de la cadena, no así el último caracter de la cadena, porque la cadena empieza desde 0, en cambio el tamaño de ésta se empieza a contar desde 1. Y te arreglé otras cositas por allí que te irás dando cuenta cuando veas el programa.