Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

123
Vistas
La declaración de cambio de caso no se repite

Todo lo que hace es ejecutar funciones, pero por alguna razón no se rompe después de presionar r , simplemente ejecuta la función y luego finaliza el programa.

 int main() { char key = 0; PPMImage *img = NULL; do { puts("\tPress r to read in an image in ppm format"); puts("\tPress s to save image in ppm format"); puts("\tPress q to quit"); scanf(" %c", &key); clear_to_end(stdin); switch (key) { case 'r': load_file("fname"); free(img->data); break; case 's': save_file(img); break; case 'q': puts("\tTerminating program..."); break; default: puts("\tInvalid Input"); break; } } while (key != 'q'); }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

La razón por la que el programa sale es porque tiene un comportamiento indefinido:

  • load_file("fname"); puede cargar el archivo de imagen, pero no se produce ningún efecto secundario en img
  • free(img->data); anula la referencia del puntero nulo img , lo que provoca una falla de segmentación y la finalización del programa.

Suponiendo load_file devuelve un puntero a PPMImage y su intención es liberar una imagen leída previamente, cambie el código a:

 case 'r': if (img) { // free the previous image // write a function to free what was allocated free_file(img); } img = load_file("fname"); break;
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda