Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema Funcion que regresa una cadena

Estas en el tema de Problema Funcion que regresa una cadena en el foro de C/C++ en Foros del Web. tengo mi funcion @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C++: Ver original char * cadena ( double numero ) { //codigo de uso de numero char nume [ ...
  #1 (permalink)  
Antiguo 30/10/2009, 21:10
Avatar de Bazookao  
Fecha de Ingreso: diciembre-2008
Ubicación: Mexico
Mensajes: 139
Antigüedad: 15 años, 5 meses
Puntos: 1
Pregunta Problema Funcion que regresa una cadena

tengo mi funcion
Código C++:
Ver original
  1. char * cadena(double numero)
  2. {
  3. //codigo de uso de numero
  4. char nume[10];
  5. strcpy(nume,otraVariable);
  6. return nume;
  7. }
y la funcion trabaja bien
pero ahora que quiero usarla con otra funcion que es para imprimir
corre mal imprimiendo cartacteres raros
Código c++:
Ver original
  1. //en Visula Studio 2008
  2. void imprimir(double areglo[],int tamArreglo)
  3. {//le pasa un arreglo de dobles y su tamaño
  4. char a[30]="";
  5.      {
  6.         for(int j=0;j<tamAreglo;j++)
  7.         {          
  8.             strcpy(a,cadena(areglo[j]));//segun lo que deberia hacer es copiar el resultado de la funcion en la variable a y luego imprimirla pero despues de hacer el strcpy la varialbe a toma cosas raras de resultado
  9.             printf("%s  ",a);
  10.         }
  11.             printf("\n");
  12.      }
  13.      cout<<endl<<endl;
  14.  
  15.  
  16. }

pero se que la funcion cadena esta bien
como lo se pues simple este progrma lo estoy haciendo en VS2008 SP1 en modo consola y aveces pruebo las funciones en Dev C++ llamadas justo en el main()
y O SORPRESA corre sin errores
Código c++:
Ver original
  1. //en Dev C++
  2. int main()
  3. {
  4. char a[20];
  5. strcpy(a,cadena(5.624));
  6.     printf("  %s",a);
  7. return 0;}

ademas a la hora de la depuracion justo cuando termina la funcion cadena el valor de la
variable nume es el que yo quiero, pero les vulevo a repetir que que despues el strcpy manda basura a la variable a

ya intente ponerlo como
Código:
cout<<cadena(areglo[j]);
Código:
printf("%s",areglo[j]);
e incluso solo pasandole constantes
Código:
strcpy(a,cadena(5.56));
printf("%s  ",a);
y nada

si alguien me pudiera ayudar se lo agradeceria bastante
  #2 (permalink)  
Antiguo 31/10/2009, 04:18
Avatar de Claw  
Fecha de Ingreso: abril-2009
Mensajes: 299
Antigüedad: 15 años
Puntos: 9
Respuesta: Problema Funcion que regresa una cadena

¿Y si pruebas a cambiar el tipo del argumento a FLOAT simplemente?

Salu2
  #3 (permalink)  
Antiguo 01/11/2009, 01:02
 
Fecha de Ingreso: enero-2009
Mensajes: 7
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Problema Funcion que regresa una cadena

Cita:
Iniciado por Bazookao Ver Mensaje
tengo mi funcion
Código C++:
Ver original
  1. char * cadena(double numero)
  2. {
  3. //codigo de uso de numero
  4. char nume[10];
  5. strcpy(nume,otraVariable);
  6. return nume;
  7. }
y la funcion trabaja bien
pero ahora que quiero usarla con otra funcion que es para imprimir
corre mal imprimiendo cartacteres raros
Es porque la variable "nume[10]" es una variable local de la función y al salir de la función es eliminada asi como tambien su contenido, pasando a contener basura.

La solución podría ser esta función:

Código C++:
Ver original
  1. char * cadena(char *destino, double numero)
  2. {
  3.         strcpy(destino,otraVariable);
  4.         return destino;
  5. }

No probé el codigo, pero te debería de ir bien.

Salu2

Última edición por Raykro; 01/11/2009 a las 01:09
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:44.