[phpBB Debug] PHP Warning: in file [ROOT]/includes/acm/acm_memory.php on line 146: Cannot use a scalar value as an array
[phpBB Debug] PHP Warning: in file [ROOT]/includes/acm/acm_memory.php on line 146: Cannot use a scalar value as an array
[phpBB Debug] PHP Warning: in file [ROOT]/includes/acm/acm_memory.php on line 146: Cannot use a scalar value as an array
gcc y Violacion de Segmento, no hallo el error : Programación
 Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Portada » Foros Linux » Desarrollo » Programación


Nuevo tema Responder al tema
 [ 6 mensajes ] 
Patrocinadores

Autor
Buscar:
Mensaje

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Vie Jul 01, 2005 7:00 am
Mensajes: 1001
Ubicación: Oaxaca, Mexico

Nota Publicado: Mar Oct 09, 2007 12:18 am 
Arriba  
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:
#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

 Perfil  

Desconectado
Forista Medio
Forista Medio
Avatar de Usuario

Registrado: Mar Sep 11, 2007 7:00 am
Mensajes: 349
Ubicación: el mas alla

Nota Publicado: Mar Oct 09, 2007 8:40 am 
Arriba  
una pregunta

que yo sepa los nombres de cadenas o arreglos no llevan antes un asterisco, ¿esta bien eso?

 Perfil  

Desconectado
Forista Mayor
Forista Mayor

Registrado: Sab Ago 25, 2007 7:00 am
Mensajes: 798
Ubicación: Galicia - España

Nota Publicado: Mar Oct 09, 2007 4:44 pm 
Arriba  
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:
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:
archivo=fopen("nombre.txt","lo_que_quieras")

_________________
Mi blog: Conocimiento Abierto

 Perfil WWW  

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Vie Jul 01, 2005 7:00 am
Mensajes: 1001
Ubicación: Oaxaca, Mexico

Nota Publicado: Mar Oct 09, 2007 8:10 pm 
Arriba  
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

 Perfil  

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Vie Jul 01, 2005 7:00 am
Mensajes: 1001
Ubicación: Oaxaca, Mexico

Nota Publicado: Mié Oct 10, 2007 3:35 am 
Arriba  
: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

 Perfil  

Desconectado
Forista Nuevo
Forista Nuevo

Registrado: Mar Jul 10, 2018 10:59 pm
Mensajes: 3

Nota Publicado: Mar Jul 10, 2018 11:02 pm 
Arriba  
que yo sepa los nombres de cadenas o arreglos no llevan antes un asterisco, ¿esta bien eso?

 Perfil WWW  
Mostrar mensajes previos:  Ordenar por  
 [ 6 mensajes ] 
Nuevo tema Responder al tema

Saltar a:  


 Temas relacionados   Autor   Respuestas   Vistas   Último mensaje 
Problema (Violación Segmento) URGENTE

en Programación

Pinto_Pinto

3

838

Jue May 03, 2012 3:56 pm

mcun Ver último mensaje

Host Unreachable en mismo segmento de red

en Redes y Servidores

lyonn

5

760

Mar Ene 06, 2015 3:04 am

lyonn Ver último mensaje

error al montar disco. error 64: unable to determine device fstype - specify with -t

en Hardware

tekenika

1

1241

Mar Nov 24, 2015 8:32 pm

doc Ver último mensaje

dpkg: error fatal irrecuperable, abortado: error sintáctico: usuario desconocido ' hplip ' en el archivo statoverride

en Software

henry74

0

1323

Dom Oct 25, 2015 5:34 pm

henry74 Ver último mensaje

ERROR 18

en Sistema

ramiro_asi

6

845

Mié Sep 23, 2009 1:41 pm

ramiro_asi Ver último mensaje



¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC + 1 hora [ DST ]
Traducción al español por Huan Manwë
phpBB SEO