<div dir="ltr">Hola Fernando,<div class="gmail_extra"><br><div class="gmail_quote">2013/2/18 Fernando Acua <span dir="ltr"><<a href="mailto:facua@hotmail.com" target="_blank">facua@hotmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Hola de nuevo, intento seguir sus consejos, sin embargo, sigo mas confundido al querer usar una declaración char ***pcMatriz; creo que estoy exagerando en el uso de malloc y por ello me aparece el famoso "Violación de Segmento", por ello le dejo mi código con el q pretendo usar la pcMatriz:<br>

<br></blockquote><div><br></div><div style>El mensaje de la "Violación de Segmento" suele ocurrir porque intentas acceder a memoria que no existe o mejor dicho, que no es tuya.</div><div style><br></div><div style>
Veamos el código fuente.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
#include <stdio.h><br>
#include <stdlib.h><br>
#include <string.h><br>
<br>
#define FIL 3<br>
#define COL 5<br>
<br>
int main(void)<br>
{<br>
    int c, f;<br>
    char ***pcMatriz;<br>
<br>
    pcMatriz=(char***)malloc(FIL*sizeof(char));<br></blockquote><div><br></div><div style>Aquí estás creando 3 bytes. Esto no tiene mucho sentido ya que te interesa crear 3 filas representadas como un array de 3 elementos de tipo puntero. Esto es,</div>
<div style><br></div><div style><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">pcMatriz = (char***) malloc( FIL * </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">sizeof(char**) );</span></div>
<div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
    for(f=0; f<FIL; f++) pcMatriz[f]=(char**)malloc(COL*sizeof(char));<br></blockquote><div><br></div><div style>Aquí hacemos algo parecido. Nos interesa crear 5 columnas que serán representadas como un array de 5 elementos, los cuales son de tipo puntero. Esto debería ser:<br>
<br><div><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">pcMatriz = (char**) malloc( COL * </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">sizeof(char*) );</span></div>
</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
    for(f=0; f<FIL; f++) for(c=0; c<COL; c++) pcMatriz[f][c]=(char*)malloc(3*sizeof(char));<br>
<br></blockquote><div><br></div><div style>Esto es correcto, pero no tienes por qué calcular el tamaño de 'char': siempre será 1 byte.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

    for(f=0; f<FIL; f++) for(c=0; c<COL; c++) strcpy(pcMatriz[f][c],"abc");<br>
    return(0);<br></blockquote><div><br></div><div style>Recuerda que cuando adjudiquemos memoria dinámicamente, debemos desadjudicarla también. Si nos responsabilizamos de crear la memoria, nos tenemos que responsabilizar de liberarla.</div>
<div style><br></div><div style>Necesitas realizar los mismos pasos de 'malloc()', pero en el orden inverso e invocando 'free()', en su lugar.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

}<br>
<br></blockquote><div><br></div><div style>Esto se explica en el capítulo 17 que mencioné en mi correo-e anterior: <a href="http://c.conclase.net/curso/index.php?cap=017#inicio" target="_blank" style="font-size:12.727272033691406px;font-family:arial,sans-serif">http://c.conclase.net/curso/index.php?cap=017#inicio</a></div>
<div style><br></div><div style><br></div><div style>Espero que esto te ayude.</div><div><br></div><div style>Steven</div><div style><br></div></div></div></div>