Error: agregar llaves explícitas para evitar colgar más. do

Estoy usando gedit y mi comstackdor es clang. He estado recibiendo un par de estos errores recientemente y no estoy seguro de cómo solucionarlos (error en el título y en referencia a la statement else).

if(isupper(ptext[i])) if ((((ptext[i]+k)%26)+52)  90) { printf("%c", (((ptext[i]+k)%26)+78)); } else { printf("%c", (((ptext[i]+k)%26)+52)); } 

¿Qué debo agregar / eliminar / arreglar? Gracias por adelantado 🙂

Su exterior if le faltan los tirantes:

 if(isupper(ptext[i])) { if ((((ptext[i]+k)%26)+52) < 65 || (((ptext[i]+k)%26)+52) > 90) { printf("%c", (((ptext[i]+k)%26)+78)); } else { printf("%c", (((ptext[i]+k)%26)+52)); } } 

Personalmente, extraería algunos de los elementos comunes en variables:

 char something1 = ptext[i]; if(isupper(something1)) { char something2 = (something1+k)%26; if ((something2+52) < 65 || (something2+52) > 90) { printf("%c", (something2+78)); } else { printf("%c", (something2+52)); } } 

Y tal vez incluso poner un char something3 = something2 + 52; allí también. Por supuesto, con nombres de variables más significativos.

C no es como Python, donde dice qué pertenece a qué por sangría. Porque en C, todo el espacio en blanco es ignorado. Debe usar llaves para decirle al comstackdor a cuál de las instrucciones pertenece.

El comstackdor de C no lo sabe, por lo que te pide que especifiques:

Es esto

  if(isupper(ptext[i])) { if ((((ptext[i]+k)%26)+52) < 65 || (((ptext[i]+k)%26)+52) > 90) { printf("%c", (((ptext[i]+k)%26)+78)); } else { printf("%c", (((ptext[i]+k)%26)+52)); } } 

¿o esto?

  if(isupper(ptext[i])) { if ((((ptext[i]+k)%26)+52) < 65 || (((ptext[i]+k)%26)+52) > 90) { printf("%c", (((ptext[i]+k)%26)+78)); } } else { printf("%c", (((ptext[i]+k)%26)+52)); } 

Este es un ejemplo de un “colgando” más.