Autor
|
Tema: problema con doble punteros (Leído 2,359 veces)
|
m@o_614
Desconectado
Mensajes: 389
|
Saludos tengo una variable que es de tipo char** p, esto es para que sea un arreglo que contenga cadenas de tamaño variable y despues estas variables asignarselas al elemento nombre del mismo tipo que esta en una estructura, el problema es que el codigo me truena y no se por que #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 4 typedef struct { char **nombre; }CODOP; int main() { int tam,tam1,tam2,tam3,i; CODOP *x; char **p; x = (CODOP *)malloc(sizeof(CODOP )); p = (char**)malloc(MAX *sizeof(char*)); p[0] = "anita"; p[1] = "lava"; p[2] = "la"; p[3] = "tina"; x ->nombre = (char**)malloc(MAX *sizeof(char*)); x ->nombre [0] = (char*)malloc((tam +1)*sizeof(char)); x ->nombre [1] = (char*)malloc((tam1 +1)*sizeof(char)); x ->nombre [2] = (char*)malloc((tam2 +1)*sizeof(char)); x ->nombre [3] = (char*)malloc((tam3 +1)*sizeof(char)); for(i = 0;i < MAX;i++) return 0; }
gracias de antemano
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Pues a mi me corre sin problemas. ¿Qué problema tienes?.¡¡¡¡ Saluditos! ..... !!!!
|
|
|
En línea
|
|
|
|
nolasco281
Desconectado
Mensajes: 319
|
Hola amigo como te comento leosansan el código corre pero parece que hay algún error en los char yo no entiendo mucho los punteros pero eh leído un poco sobre ellos, y la mayoría dice que es mejor trabajar con cadenas. Ya que dan menos problemas que los char. pero eso es lo que he leído. Recuerda que un char solo almacena un carácter a menos que lo hagas por arreglos y manejar char con arreglos es un poco más complicado te recomendaría que provees string si logro que no me de error te comparto la solución. Saludos.
|
|
« Última modificación: 27 Enero 2014, 04:47 am por nolasco281 »
|
En línea
|
Lo que se puede imaginar... se puede programar.
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
CODOP *x; // => char ***; // en verdad es necesario esto ?? char **p; x = (CODOP *)malloc(sizeof(CODOP )); // un puntero doble es como una matriz, necesita dos inicializaciones // primero una para las filas y luego hay que inicializar cada columna por separado // aqui solo estas inicializando las filas p = (char**)malloc(MAX *sizeof(char*)); // esto podria funcionar en c++... en c hay que usar strcpy // en cualquier caso, antes tienes que reservar memoria para p[0], p[1], ... p[0] = "anita"; p[1] = "lava"; p[2] = "la"; p[3] = "tina";
Por cierto, no veo un solo free que libere la memoria...
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
// esto podria funcionar en c++... en c hay que usar strcpy // en cualquier caso, antes tienes que reservar memoria para p[0], p[1], ... p[0] = "anita"; p[1] = "lava"; p[2] = "la"; p[3] = "tina";
Por cierto, no veo un solo free que libere la memoria... En C es valido porque antes de la asignación las literales "anita", "lava", etc. se sustituyen por las direcciones donde estas se almacenan y con ello se copia la dirección (pero no el contenido) del objeto. Supongo solo es un programa para practicar el uso de punteros (honestamente no me gusta). Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema con Punteros en C
Programación C/C++
|
aaronas
|
8
|
4,099
|
2 Abril 2012, 00:12 am
por david_BS
|
|
|
Problema con punteros.
Programación C/C++
|
vazquinhos
|
4
|
2,741
|
20 Septiembre 2012, 18:35 pm
por do-while
|
|
|
Problema con punteros
Programación C/C++
|
NEGRO_PABLO
|
3
|
2,941
|
30 Noviembre 2012, 18:41 pm
por twins
|
|
|
Duda Punteros Dobles/Array de punteros
Programación C/C++
|
MisterJava
|
2
|
5,163
|
30 Diciembre 2012, 20:19 pm
por MisterJava
|
|
|
Consulta sobre punteros y doble punteros
Programación C/C++
|
palacio29
|
4
|
3,330
|
17 Mayo 2019, 20:40 pm
por MAFUS
|
|