[C con Clase] [Bulk] arreglo de apuntadores

ZeLion Zelion_cracking en yahoo.es
Jue Nov 15 12:00:46 CET 2007


Hola.
El problema que existe es que con:
char *b[3]={"hola1","hola2","hola3"};
tienes un puntero que apunta a 3 caracteres.

Tienes 2 opciones:

Crear 3 punteros con las palabras
char b[3][6]={"hola1","hola2","hola3"};

O dimensionar el puntero con el numero de palabras que quieras

	char *b[3];				// Crear un array de 3
punteros
	b[0] = (char*) malloc(6);	// Reservar 6 char para el puntero 1
	b[0] = "hola1";			// Insertar 6 char
	b[1] = (char*) malloc(6);	// Reservar 6 char para el puntero 2
	b[1] = "hola2";			// Insertar 6 char
	b[2] = (char*) malloc(6);	// Reservar 6 char para el puntero 3
	b[2] = "hola2";			// Insertar 6 char

NOTA: obviamente esto se deberia de hacer mediante un bucle para mayor
numero de punteros.

Un puntero tan solo es una direccion de memoria, para insertar algo en un
puntero tienes primero que reservarle una zona de memoria.

Un saludo.

.: ZeLion :.
>-----Mensaje original-----
>De: cconclase-bounces en listas.conclase.net [mailto:cconclase-
>bounces en listas.conclase.net] En nombre de rnapoles en ipihlg.rimed.cu
>Enviado el: miércoles, 14 de noviembre de 2007 20:18
>Para: Lista de correo sobre C y C++
>Asunto: [Bulk] [C con Clase] arreglo de apuntadores
>
>Salu2 lista llevo un pequeño tiempo aprendiendo a programar en C con unos
>libros que me he conseguido el programa que muestro a continuación
>no da ningún error de sintaxis  el problema es en tiempo de ejecución.
>supongo que sea que no deja modificar el arreglo de punteros
>en ese caso que podría hacer para que la función upcase lograra
>modificar dicho arreglo
>
>gracias de antemano.
>
>#include <stdio.h>
>void upcase(char *s);
>
>int main(int argc, char *argv[])
>{
>char a[]="lolo";
>char *b[3]={"hola1","hola2","hola3"};
>upcase(a);             //aqui todo ok
>upcase(b[2]);      //El problema es aqui
>printf("%s\n",a);
>printf("%s\n",b);
>system("PAUSE");
>  return 0;
>}
>
>void upcase(char *s)
>{
>while (*s!='\0')
>{
>if (*s>='a' && *s<='z')
>*s-=32;
>*s++;
>}
>     }
>
>_______________________________________________
>Lista de correo Cconclase Cconclase en listas.conclase.net
>http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ





Más información sobre la lista de distribución Cconclase