[ Foro de C ]

Problemas en la compilacion

27-Apr-2016 07:32
Invitado (Novato01)
2 Respuestas

Soy noob en C, escribi el siguiente codigo, pero cuando le doy a run, se cuelga el programa:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   char letritas[10];
   int i, cont;
   for(i=0;i<10;i++){
       printf("Introduzca el caracter numero %d:", i);
       scanf("%c", letritas[i]);
       fflush(stdin);
   }
   for(i=0;i<10;i++){
       if (letritas[i]=='a'||letritas[i]=='A')
           cont+=1;
   }
   printf("La cantidad de lestas a y A es:%d", cont);
   return 0;
}

PD: Use codeblock, ademas el programa me dice lo siguiente:
main.c|10|warning: format '%c' expects argument of type 'char *', but argument 2 has type 'int' [-Wformat=]|


29-Apr-2016 14:32
Invitado (Caranim)


En el scanf necesitas añadir el operador de dirección antes de la variable:

scanf("%c", &letritas[i]);


Con eso ya leerás correctamente los caracteres, pero hay otro pequeño fallo en el listado: La variable "cont" no la inicializas en ningún sitio, por lo que puede tener cualquier valor ( incluso distinto de cero ) con lo que el resultado será incorrecto. Es aconsejable, cuando no necesario, inicializar todas las variables para evitar que puedan tener valores "basura" que puedan conducir a datos erróneos.

Un saludo.

Caranim


29-Apr-2016 16:32
Nacho Cabanes (+83)

Coincido con la respuesta de Caranim.

Además, es peligroso pedir los datos letra a letra, porque si pulsas Intro entre una letra y la siguiente, esa pulsación de la tecla Intro se guardará en la siguiente variable.   Por ejemplo, si reservas 4 "char" con la esperanza de almacenar 'H', 'o', 'l', 'a', realmente estarás guardando 'H', '\n', 'o', '\n'

Es más fiable leer toda la cadena de golpe. Si quieres leer letra a letra, deberías "absorber" ese Intro con algo como

char intro;
printf("Introduzca el caracter numero %d:", i);
scanf("%c", &letritas[i]);
scanf("%c", &intro);

Por cierto... si llegas a poder ejecutar el programa, no es un problema de compilación, sino de ejecución. Un problema de compilación es cuando el compilador te muestra un mensaje de error, diciendo que el programa es claramente incorrecto, y no te deja llegar a ejecutarlo.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)