Alguien me puede explicar que anda mal? me sale error segmentation fault (core dumped) ¿Cómo puedo solucionarlo? Gracias de antemanos com...

Pregunta de la clase:
Manejo dinámico de la memoria
Santiago Gómez

Santiago Gómez

Pregunta
studenthace 5 años

Alguien me puede explicar que anda mal? me sale error segmentation fault (core dumped) ¿Cómo puedo solucionarlo? Gracias de antemanos compañeros

#include <stdio.h> #include <string.h> #include <stdlib.h> int main (int argc, const char *argv [] ) { int most_long = 0; for (int i=0; i < argc; i++ ) { int ret = strcmp(argv[i],argv[i+1]); if (ret > 0 ) { most_long = i; } else if (ret < 0) { most_long = i + 1; } else { printf("Las cadenas son iguales: "); } } printf("La cadena mas larga es: %s",argv[most_long]); return 0; }
4 respuestas
para escribir tu comentario
    Santiago Gómez

    Santiago Gómez

    studenthace 5 años

    Gracias Luis por tu apoyo

    Luis Lira

    Luis Lira

    studenthace 5 años

    Creo que el detalle está en que quieres acceder a índices de

    argv
    pero estos no tienen nada en su interior, no existen estas posiciones en el array.

    Así es como me quedó tu código luego de organizarlo,

    argv
    está vacío y al usar strcmp para comparar, estás intentando acceder al índice 0 y 1, pero al no haber elementos se lanza este error.

    #include <stdio.h> #include <string.h> #include <stdlib.h> int main (int argc, char *argv[]) { int most_long = 0; for (int i=0; i < argc; i++ ) { int ret = strcmp(argv[i], argv[i+1]); if (ret > 0 ) { most_long = i; } else if (ret < 0) { most_long = i + 1; } else { printf("Las cadenas son iguales: "); } } printf("La cadena mas larga es: %s",argv[most_long]); return 0; }
    Santiago Gómez

    Santiago Gómez

    studenthace 5 años

    Hola Luis, claro, pegué todo el código pero se pego todo horizontal :l aqui esta en texto

    #include <stdio.h> #include <string.h> #include <stdlib.h> int main (int argc, constchar *argv [] ) { int most_long = 0; for (int i=0; i < argc; i++ ) { int ret = strcmp(argv[i],argv[i+1]); if (ret > 0 ) { most_long = i; } elseif (ret < 0) { most_long = i + 1; } else { printf("Las cadenas son iguales: "); } } printf("La cadena mas larga es: %s",argv[most_long]); return 0;
    }

    Luis Lira

    Luis Lira

    studenthace 5 años

    Hola, ¿podrías pasar tu código completo para poder probarlo y ver si puedo replicar el error? :D

    Normalmente ese error se debe a que ese intentando acceder a algo que no existe o también que no tiene permisos

Curso de Introducción a C 2019

Curso de Introducción a C 2019

Domina las bases para programar en C, el Lenguaje de Programación de propósito general usado para programar microcontroladores y sistemas operativos. Comprende la estructura de C, el lenguaje base de lenguajes avanzados como C++.

Curso de Introducción a C 2019
Curso de Introducción a C 2019

Curso de Introducción a C 2019

Domina las bases para programar en C, el Lenguaje de Programación de propósito general usado para programar microcontroladores y sistemas operativos. Comprende la estructura de C, el lenguaje base de lenguajes avanzados como C++.