gcc y Violacion de Segmento, no hallo el error

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: akodo, maiku

Responder
Avatar de Usuario
Nagual
Forista Distinguido
Forista Distinguido
Mensajes: 1001
Registrado: Vie Jul 01, 2005 7:00 am
Ubicación: Oaxaca, Mexico

gcc y Violacion de Segmento, no hallo el error

Mensaje por Nagual » Mar Oct 09, 2007 12:18 am

Hola nuevamente, he tratado de checar el codigo y busque referencias a lo de Violacion de Segmento y hay referencias sobre errores de inicalizacion, versiones del gcc (G99) y cosas de esas, pero aun asi no le hallo incluso cheque ejercicios que ya tnia en Borland C 3.1 y si me funcionaba . . .

Lo que trato es generar una lista de nombres utilizando tres arregos de char y guardarlos en un archivo, la cosa es que fuando hago un simple printf, me muestra las combinaciones y al final se imprime el mensaje de "Violacion de segmento", al igual que cuando genero el archivo de texto, crea el archivo, y me sale el mensage, pero el archivo esta vacio.

El codigo es el siguiente:

Código: Seleccionar todo

#include <stdio.h>
#include <string.h>
int main()
{
   int i,j,k;
   FILE *archivo = NULL;
   system("clear");

   char *name[20]={"Ana","Alejandro","Andrea","Antonio","Alberto","Alejandra","Adriana","Andres","Adrian","Angel",
                  "Alba","Alvaro","Alicia","Angela","Arturo","Alfredo","Alex","Alfonso","Angelica","Araceli"};
   char *appat[20]={"Alvarez","Aguilar","Acosta","Arias","Alvarado","Aguirre","Alarcon","Arroyo","Andrade","Aguilera",
                    "Arce","Acevedo","Acuña","Arenas","Aranda","Arellano","Abad","Avendaño","Angulo","Arevalo"};
   char *apmat[20]={"Morales","Muñoz","Moreno","Molina","Mendez","Mendoza","Maldonado","Mejia","Marin","Montoya",
                    "Montero","Macias","Mena","Millan","Montenegro","Merino","Monroy","Mata","Mercado","Melendez"};

   if ((fopen("nombres.txt","a+t")) == NULL)
      {
        if ((fopen("nombres.txt","w+t")) == NULL) printf("El arhcivo no pudo ser creado\n");
        else printf("Archivo Creado\n");
      }
   else printf("Archivo Abierto\n");
   for (i=0; i<20; i++)
       {
        for(j=0; j<20; j++)
             {
              for(k=0; k<20; k++)
                 {
                   fprintf(archivo,"%s %s %s\n",name[k],appat[j],apmat[i]);
                   //printf("%s %s %s\n",name[k],appat[j],apmat[i]);
                 }
             }
       }
   fclose(archivo);
   return 0;
}


y si le pongo dentro de los for el int var me aparece ese error C99, y pos y no se que mas probar, les agradeceria las observaciones que le puedan hacer al codigo . . y a mi :D

Sales pues :D
Blaise Pascal: "Vale más saber alguna cosa de todo, que saberlo todo de una sola cosa."
Twitter: @nagual_oax
Avatar de Usuario
black_magician
Forista Medio
Forista Medio
Mensajes: 349
Registrado: Mar Sep 11, 2007 7:00 am
Ubicación: el mas alla

Re: gcc y Violacion de Segmento, no hallo el error

Mensaje por black_magician » Mar Oct 09, 2007 8:40 am

una pregunta

que yo sepa los nombres de cadenas o arreglos no llevan antes un asterisco, ¿esta bien eso?
fpuga
Forista Mayor
Forista Mayor
Mensajes: 798
Registrado: Sab Ago 25, 2007 7:00 am
Ubicación: Galicia - España
Contactar:

Re: gcc y Violacion de Segmento, no hallo el error

Mensaje por fpuga » Mar Oct 09, 2007 4:44 pm

Dos comentarios rápidos:

Para que la instrucción system no te un warning debes incluir la librería stdlib.h.

No entiendo porque abres el fichero de ese modo. Con "a" usa el fichero si ya existe y en caso de que no exista lo crea. Yo escribiría más bien algo como

Código: Seleccionar todo

if ((archivo=fopen("archivo.txt","a")) == NULL) {
   printf ("error creando el archivo\n");
   return (-1);
}


Por otro lado el motivo por el que casca es que no estas asociando ningún flujo al fichero nombres.txt que es el objetivo del comando fopen. Es decir que debes llamarlo así:

Código: Seleccionar todo

archivo=fopen("nombre.txt","lo_que_quieras")
Mi blog: [url=http://conocimientoabierto.es]Conocimiento Abierto[/url]
Avatar de Usuario
Nagual
Forista Distinguido
Forista Distinguido
Mensajes: 1001
Registrado: Vie Jul 01, 2005 7:00 am
Ubicación: Oaxaca, Mexico

Re: gcc y Violacion de Segmento, no hallo el error

Mensaje por Nagual » Mar Oct 09, 2007 8:10 pm

Con respecto a los punteros a archivos, pues ya habia manejado asi las instrucciones y si me ha funcionado, hace poco hice un programita para escribir en archivo de texto y binario capturando las variables y pasandoselas al fprintf...

Con respecto a los arreglos, es ahi donde tenia mi duda, voy a checar eso de los *

Y con respecto a las bibliotecas, solo habia usado el stdio.h, pero voa checar tambien si algo tiene que ver el stdlib.h.

Gracias nuevamente, voa checar

Sales pues :D
Blaise Pascal: "Vale más saber alguna cosa de todo, que saberlo todo de una sola cosa."
Twitter: @nagual_oax
Avatar de Usuario
Nagual
Forista Distinguido
Forista Distinguido
Mensajes: 1001
Registrado: Vie Jul 01, 2005 7:00 am
Ubicación: Oaxaca, Mexico

Re: gcc y Violacion de Segmento, no hallo el error

Mensaje por Nagual » Mié Oct 10, 2007 3:35 am

:oops: ::lol:: si cierto, pequeño detalle, se me paso poner la variable para el archivo

era eso, y si le deje el * para los arreglos, si no, dice que excede el tamaño del arreglo

Bueno, a veces se nos escapa un detallito, pero todo lo demas asi era

Gracas a todos ( 2 ) los que participaron, lo bueno de esto es que si a algien le piden una BD de un monton de nombres, pos solo que agregue datos a los arrays ( y que tengan la misma cantidad de elementos)

COPYRIGHT TODOS LOS DERECHOS RESERVADOS
no cierto

Sales pues :D
Blaise Pascal: "Vale más saber alguna cosa de todo, que saberlo todo de una sola cosa."
Twitter: @nagual_oax
Esperanzas
Forista Nuevo
Forista Nuevo
Mensajes: 3
Registrado: Mar Jul 10, 2018 10:59 pm
Contactar:

Re: gcc y Violacion de Segmento, no hallo el error

Mensaje por Esperanzas » Mar Jul 10, 2018 11:02 pm

que yo sepa los nombres de cadenas o arreglos no llevan antes un asterisco, ¿esta bien eso?
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje