(Ayuda) Segmentation fault sin razón aparente

Iniciado por class_OpenGL, 15 Junio 2016, 03:37 AM

0 Miembros y 1 Visitante están viendo este tema.

AlbertoBSD

#10
¿Creo no se por que el fscanf es el del problema.

¿Por que no usas fgets?

Bueno claramente es un buffer overflow por que todo el apuntador de file es sobreescrito.

Otra opción es aumentar el buffer. aunque  sea dejale unos 8 bytes mas y sigue leyendo un maximo de 64.

Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

class_OpenGL

#11
Funciona con fgets, pero me da rabia que crashee con fscanf cuando debería funcionar...

Por cierto, es muy extraño: usando el siguiente fragmento de código se leen más de 64 caracteres, mientras que en los otros ifs que usan la misma sintáxis no lee más de 64 (que es lo esperable):

fscanf(file, "%s[^64]", command);

¿POR QUÉ FUNCIONA SOLO A VECES XDD? Supongo que será un bug, pero es demasiado extraño...




Voy a dar por cerrado el tema, a parte de porque lo solucioné con fgets, dudo que vaya a encontrar el error que produce la función fscanf... Muchas gracias a todos por compartir su sabiduría y tiempo :D




La respuesta al problema... por fin la he hallado... Resulta que por alguna razón fscanf está ignorando el límite de caracteres. Lo he demostrado con el siguiente código:

#include <stdio.h>

int main() {
char cadena[16];

fscanf(stdin, "%s[^16]", cadena);
fprintf(stdout, cadena);

return 0;
}


Este programa crashea si introduces una cadena de más de 16 caracteres...

Haré otra pregunta en el foro para saber por qué ignora el límite de caracteres. Muchas gracias a todos :D

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL