elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con mi programa, compila pero no funciona correctamente.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con mi programa, compila pero no funciona correctamente.  (Leído 797 veces)
estudianteuv

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Ayuda con mi programa, compila pero no funciona correctamente.
« en: 23 Junio 2018, 03:21 am »

Tengo un programa que lee una cadena, luego pide un carácter a editar y un carácter a poner. Al final se trata de mostrar la cadena y en la letra editada poner el carácter que el usuario puso, tengo esto pero no encuentro el error, ¡Gracias!

Código:
#include<stdio.h>
char *sust(char *p,char edit,char po);
int main(){
char cad[10];
char editar;
char poner;
char *r;
printf("Ingrese cadena: ");
scanf("%s",&cad);
fflush(stdin);
printf("Letra a editar: ");
scanf("%c",&editar);
fflush(stdin);
printf("Letra a poner: ");
scanf("%c",&poner);
r=sust(cad,editar,poner);
printf("Cadena editada: %s",r);
return 0;
}
char *sust(char *p,char edit,char po){
if((*p)=='\0')return p;
if((*p)==edit){
edit==po;
return sust(++p,edit,po);
}
else return p;
}


En línea

SrMcLister

Desconectado Desconectado

Mensajes: 35



Ver Perfil
Re: Ayuda con mi programa, compila pero no funciona correctamente.
« Respuesta #1 en: 23 Junio 2018, 19:32 pm »

Hola estudianteuv.
Resulta que tu en la función recursiva le estas pasando cada vez la palabra con una letra menos, supongo que eso ya lo sabías, pero el problema reside en el return p que has puesto si (*p)!=edit (en el else).
Imagínate que yo introduzco pepe, y quiero cambiar la p por la n; el programa haría:
P==P , la cambio por n y paso a la función epe, y la p te la comes!!.. luego como es natural, E!=P por lo tanto return p y en la palabra cambiada te aparece epe.
Mi recomendación es que uses strings, son mucho mas faciles de tratar que los char.
Si no puedes, con lo que te he dicho, intenta arreglarlo.
Un Saludo!


En línea

Código
  1. return((u.areHappy() && u.knowIt()) ? u.clapYourHands() : u.goFuckYourself());
Xargam

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Re: Ayuda con mi programa, compila pero no funciona correctamente.
« Respuesta #2 en: 23 Junio 2018, 21:57 pm »

En el scanf usaste & (ampersand) y colocaste cad , eso esta mal. El nombre de un array es puntero que apunta al primer elemento del array (es una direccion de memoria). scanf trabaja con direcciones de memoria , no necesitas anteponerle el ampersand. Eso puede generar errores graves. No te estas refiriendo a la cadena cuando antepones el ampersand.
Saludos !!! suerte!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines