2014-08-28 2 views
0

Поскольку в C это кажется невозможным использовать переключатель с символами (только целыми числами), пытающийся сделать простую подсказку с использованием функции if, проблема возникает после точки scanf программа всегда сбой в этих точках puts("Confirmas que quieres borrar[s\\n]") или «вы уверены, что хотите ее стереть?».Невозможно заставить функцию работать, программа всегда сбрасывается после запроса

void borrar_peliculas(struct videoclub peliculas[30],int p) { 
    char titulo_pelicula[30], resp_eliminar; 
    int k = 0; 

    puts("\a\nBorrador de peliculas"); 

    puts("\nDime el titulo de la pelicula a ser borrada\n"); 
    scanf("%30s", titulo_pelicula); 

    for (k = 0;k < p ;k++) { 

     if (strcmp(peliculas[k].nombre,titulo_pelicula) ==0) { 

      puts("\nConfirmas que quieres borrar[s\\n]\n"); 
      fflush(stdin); 
      scanf("%c", resp_eliminar); 

      if(resp_eliminar=='s') { 

       peliculas[k].id = 0; 
       strcpy(peliculas[k].nombre," "); 
       strcpy(peliculas[k].categoria," "); 
       strcpy(peliculas[k].nom_actor," "); 
       strcpy(peliculas[k].ape_actor," "); 
       peliculas[k].nota = 0; 

       break; 

      } 

      if(resp_eliminar=='n') { 
       puts("\a\nSaliendo\n"); 
       break; 
      } 

     } else { 
      puts("\nNo encontrado\n"); 
     } 
    } 
} 
+2

Можно «переключиться» на 'char'. Как вы пытались это сделать раньше? – jwodder

+1

Отсортируйте свой отступ, прежде чем ожидать, что другие люди прочитают ваш код. –

+0

i использовано case 's' или case 'n': –

ответ

1

У вас здесь очень большая ошибка. Для функции scanf требуется указатель переменной, которая будет хранить вход. Ваша текущая программа вызывает неопределенное поведение.

Вместо этого:

scanf("%c", resp_eliminar); 

ли это:

scanf("%c", &resp_eliminar); 
+0

Да, это ... парень сказал мне, чтобы я никогда не ставил & в Char или String ... спасибо в любом случае! –

+0

Этот парень имел в виду, что при сканировании строки ('% s') с помощью' scanf' в массив символов вам не нужно '&' перед именем переменной. –

2

scanf принимает указатель. Если вы замените scanf("%c", resp_eliminar); на scanf("%c", &resp_eliminar);, он будет работать.

Смежные вопросы