ayuda violacion de segmento?

Iniciado por nightcode, 30 Diciembre 2013, 23:56 PM

0 Miembros y 3 Visitantes están viendo este tema.

nightcode

  Hola a todos !

Alguien podria ojear este codigo y decirme donde esta la violacion de segmento??


/*DICCIONARIO*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int desde;
int hasta;

char nombre[25];   He suprimido esta variable que estaba duplicada, pero sigue el problema..

void calcula (void);


int main()
{
    int ndopcion;
   
    printf("\n\n\t\t\t\tMENU\n\n");
    printf("\n\t\t1\tNumeroS\n\t\t2\tMayusculaS\n\t\t3\tMinusculaS\n\t\t4\tVaciO\n\t\t5\tVaciO\n");
    printf ("\nIntroduza numero de opcion: ");
    scanf (" %d" ,&ndopcion);
   
        switch (ndopcion)
        {
            case 1:
                    {
                    desde=48;
                    hasta=57;
                        calcula();
                    }
            break;
           
            case 2:
                    {
                        desde=65;
                        hasta=90;
                        calcula();
                       
                        }
            break;
           
            case 3:
                    {
                        desde=97;
                        hasta=122;
                        calcula();
                       
                        }
            break;
           
            case 4:
                    {
                   
                }
            break;
           
            case 5:
            {
                   
                }
            break;
            }
       
        }
   
    void calcula (void)
    {
   
    int a, b, c, d, e, f, g, h;
char clv[8];
char nombre[20];
    printf("\nIntroduzca nombre del archivo de salida: ");
    gets(nombre);


    FILE *hoja1;
    hoja1 = fopen (nombre , "wt");
    if (hoja1 == NULL)
    printf ("No se ha podido crear el fichero");
    else
       
    for (a=desde; a<= hasta; a++)
    {
        clv[0] = a;
        for (b=desde; b <= hasta; b++)
        {
            clv[1] = b;
                for (c=desde; c<= hasta; c++)
            {   
                clv[2] = c;
                for (d=desde; d<= 90; d++)
                {   
                    clv[3] = d;
                        for (e=desde; e<=hasta; e++)
                        {   
                            clv[4] = e;
                            for (f=desde; f<= hasta; f++)
                            {   
                                clv[5] = f;
                                for (g=desde; g<=hasta; g++)
                                {
                                  clv[6] = g;
                                   for(h=desde; h <= hasta; h++)
                                   {
                                       clv[7] = h;
                                     
                                       
                                    fwrite (clv, sizeof(clv), 1, hoja1);
                                   
                       
                               
                             }
                           
                         }
                     }
                  }
               }
            }
        }
    }
    fclose(hoja1);
    printf("\n%s", clv);
    printf("\nArchivo cerrado\n\n ");
}
"Las organizaciones gastan millones de dólares en firewalls y dispositivos de seguridad, pero tiran el dinero porque ninguna de estas medidas cubre el eslabón más débil de la cadena de seguridad: la gente que usa y administra los ordenadores"

ivancea96

#1
Esto va en el apartado de C/C++, no en Programación General.

El código, entre etiquetas GeSHi, C, para que se lea mejor.

Ahora le echo un vistazo.

Edito:
CitarHe suprimido esta variable que estaba duplicada, pero sigue el problema..
Eso comentalo, por favor. (// - /* */)

nightcode

Cita de: ivancea96 en 31 Diciembre 2013, 00:09 AM
Esto va en el apartado de C/C++, no en Programación General.

El código, entre etiquetas GeSHi, C, para que se lea mejor.

Ahora le echo un vistazo.

Edito: Eso comentalo, por favor. (// - /* */)

ok muchas gracias perdon soy nuevo :S y aun no me familiarizo bn con las etiquetas
"Las organizaciones gastan millones de dólares en firewalls y dispositivos de seguridad, pero tiran el dinero porque ninguna de estas medidas cubre el eslabón más débil de la cadena de seguridad: la gente que usa y administra los ordenadores"

ivancea96

El "gets" no llega a pedir ningún nombre. Usa en su lugar, scanf(), por ejemplo.

C++ - Malas prácticas. Échale un ojo a ese hilo. Explica por qué "gets()", entre otros, no se debe utilizar.

ivancea96

2 cosas más, creo que ya para terminar:
1: Explica que pretendes que haga tu programa.
2: Creo que se más o menos lo que pretendías hacer. ¿Todas las combinaciones posibles? Ni se te ocurra. suponiendo que elijas números, hay 10: 10^8 (hay 8 ciclos for).
100000000 lineas escribirás en ese archivo. 100000000*8. Eso da más de 100 gigas de archivo, si no me equivoco. En primer lugar, ese programa no acabará. Reza por que no acabe. Y en segundo lugar, no te recomiendo abrir ese archivo, al menos no con el bloc de notas.

Bueno, suerte. Y ten cuenta lo que va a hacer un programa. Los ordenadores son rápidos, pero no mágicos jaja

nightcode

Cita de: ivancea96 en 31 Diciembre 2013, 00:24 AM
2 cosas más, creo que ya para terminar:
1: Explica que pretendes que haga tu programa.
2: Creo que se más o menos lo que pretendías hacer. ¿Todas las combinaciones posibles? Ni se te ocurra. suponiendo que elijas números, hay 10: 10^8 (hay 8 ciclos for).
100000000 lineas escribirás en ese archivo. 100000000*8. Eso da más de 100 gigas de archivo, si no me equivoco. En primer lugar, ese programa no acabará. Reza por que no acabe. Y en segundo lugar, no te recomiendo abrir ese archivo, al menos no con el bloc de notas.

Bueno, suerte. Y ten cuenta lo que va a hacer un programa. Los ordenadores son rápidos, pero no mágicos jaja

amigo muchas gracias no me había percatado de ese pequeño xD detalle y si estas en lo correcto xddd gracias ivancea96
"Las organizaciones gastan millones de dólares en firewalls y dispositivos de seguridad, pero tiran el dinero porque ninguna de estas medidas cubre el eslabón más débil de la cadena de seguridad: la gente que usa y administra los ordenadores"

ivancea96

Como dato curioso, dejé el programa 20 segundos, y me generó 1 giga de txt. Sin querer, abrí el txt, y así fue como se me paró el ordenador 1 minuto jaja

nightcode

"Las organizaciones gastan millones de dólares en firewalls y dispositivos de seguridad, pero tiran el dinero porque ninguna de estas medidas cubre el eslabón más débil de la cadena de seguridad: la gente que usa y administra los ordenadores"