Autor
|
Tema: Ayuda, que esta mal ? (Leído 1,702 veces)
|
onlinne
Desconectado
Mensajes: 4
|
Tengo esta funcion: #include <stdio.h> #include <conio.h>
char *copiar(char * cad) { char cad2[20]; int i=0; while((cad!='\0') || (cad[i+1]!='\0')) { cad2== cad; i++; }return cad2; } int main() { char cad[20]; scanf("%s",&cad); printf("%s",copiar(cad)); getch(); }
lo que hace es copiar los caracteres de un vector a otro. pero cuando la pongo a ejecutar me da unos caracteres muy extraños, y ayer , que fue la ultima vez que funciono, cuando ponia dos palabras ejemplo: Hola como estas. solo me mostraba el hola, no el resto
|
|
« Última modificación: 6 Noviembre 2016, 22:46 pm por onlinne »
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Tienes mal 2 cosas. Una variable tipo cadena no debe pasarle su dirección con & a scanf. Debería ser así: Por otra parte estás devolviendo, en la función copiar, un array local. Éste se destruye al salir de la función. Deberías usar malloc sobre un puntero y devolverlo; esto es memoria del montón y permanece entre llamadas, a diferencia de la pila.
|
|
|
En línea
|
|
|
|
onlinne
Desconectado
Mensajes: 4
|
no entiendo :
Por otra parte estás devolviendo, en la función copiar, un array local. Éste se destruye al salir de la función. Deberías usar malloc sobre un puntero y devolverlo; esto es memoria del montón y permanece entre llamadas, a diferencia de la pila. podrias explicarlo porfavor
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Tiene que ver con la memoria de la pila (stack) y el montón (heap). Cuando entras en una función C adquiere espacio en la pila para las variables y los arrays. Cuándo se sale de la función toda esta memoria desaparece. Por otra parte la memoria del montón es más permanente, por el hecho de que la controlas tú. Adquieres memoria con una de las funciones de la familia malloc. Si creas un array en el montón, éste no depende de la función por eso aunque salgas de ella lo que hay en memoria permanece. Si devuelves de la función el puntero que apunta a esa zona de memoria, en tu main recibirás dicha dirección y podrás trabajar con ella.
Te recomiendo que busques sobre memoria stack y heap. Te aclarará muchas dudas.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
AYUDA CON ESTA FUENTE
Diseño Gráfico
|
lucaprodan
|
2
|
2,586
|
12 Abril 2007, 06:59 am
por DelmasX
|
|
|
Esta PC está bien? | AYUDA CON UN HACKER MALICIOSO
« 1 2 »
Seguridad
|
Chuxxx
|
10
|
11,866
|
14 Mayo 2010, 19:43 pm
por Chuxxx
|
|
|
Ayuda con esta .dll
Ingeniería Inversa
|
juanba17
|
1
|
1,834
|
9 Agosto 2015, 16:08 pm
por MCKSys Argentina
|
|
|
Que es lo que esta mal? Ayuda!!!
Programación C/C++
|
cinfi
|
5
|
2,548
|
7 Febrero 2016, 19:01 pm
por _--ziarox--__
|
|
|
¿Has perdido tu móvil Android? Esta web te dice dónde está y te ayuda a ...
Noticias
|
wolfbcn
|
0
|
2,375
|
16 Abril 2016, 02:42 am
por wolfbcn
|
|