• Viernes 8 de Noviembre de 2024, 19:22

Autor Tema:  Como Puedo Hacer Que No Me Tire Error?  (Leído 2002 veces)

franz.

  • Miembro activo
  • **
  • Mensajes: 55
  • Nacionalidad: mx
    • Ver Perfil
    • http://imgeek.net
Como Puedo Hacer Que No Me Tire Error?
« en: Sábado 14 de Junio de 2008, 21:00 »
0
Hola, veran yo trabajo bajo unix, es decir el sistema bajo el cual estoy programando es Linux, y claro que el compilador que uso es GCC ahora bien, tengo el siguiente codigo:
Código: Text
  1. #include<stdio.h>
  2. int main(void)
  3. {
  4.         int usuario,clave=123;
  5.         printf("Ingrese su clave\n");
  6.         scanf("%d",usuario);
  7.         if (usuario == clave)
  8.                 system("clear");
  9.                 system("date");
  10.                 printf("Acceso autorizado Bienvenido\n");
  11.         else
  12.                 printf("Acceso Denegado lo lamento\n");
  13.         getch();
  14.         return 0;
  15. }
  16.  
Y al intentar compiar me tira el error:
Código: Text
  1. [th3r0rn@Linux c]$ gcc login.c -o login
  2. login.c: En la función ‘main’:
  3. login.c:11: error: ‘else’ without a previous ‘if’
  4. [th3r0rn@Linux c]$
  5.  
  6.  
tambien escribi otro parecido:
[/CODE]#include<stdio.h>
int main(void)
{        
        char pass;
        system("clear");
        printf("***************\n");
        system("date");
        printf("***************\n\n");
        printf("Hola Ingresa la contraseña:\n");
        scanf("%s",pass);
        if (pass == "a");
        system("clear");
        printf("**BIENVENIDO**\n");
        else printf("Tu mama conmigo!\n\n");
        return 0;
}

Código: Text
  1.  
  2. y el error al intentar compilar es:
  3. [CODE][th3r0rn@Linux c]&#036; gcc acceso.c -o acceso
  4. acceso.c: En la función ‘main’:
  5. acceso.c:11: aviso: comparación entre puntero y entero
  6. acceso.c:14: error: ‘else’ without a previous ‘if’
  7. [th3r0rn@Linux c]&#036;
  8.  
  9.  
alguien me puede ayudar a decirme que pasa?
muchas gracias :hola:
Citar
[th3r0rn@Linux ~]$ uname -a
Linux Linux 2.6.25-ARCH #1 SMP PREEMPT Sat Jun 14 18:07:19 CEST 2008 i686 Intel(R) Celeron(R) M CPU 420 @ 1.60GHz GenuineIntel GNU/Linux

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Como Puedo Hacer Que No Me Tire Error?
« Respuesta #1 en: Sábado 14 de Junio de 2008, 21:09 »
0
Si despues del if tenes mas de una linea necesitas llaves ({}):

Código: Text
  1.  
  2. if (bla)
  3. {
  4.   bla
  5.   bla
  6.   bla
  7. }
  8. else
  9. {
  10.   bla
  11.   bla
  12.   bla
  13. }
  14.  
  15.  

PD. Tenes que pasar un puntero a scanf y no un numero: scanf("%d", &usuario); y comparar un caracter contra un caracter y no una cadena,  if (pass == 'a');

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

franz.

  • Miembro activo
  • **
  • Mensajes: 55
  • Nacionalidad: mx
    • Ver Perfil
    • http://imgeek.net
Re: Como Puedo Hacer Que No Me Tire Error?
« Respuesta #2 en: Domingo 15 de Junio de 2008, 00:39 »
0
Código: Text
  1. #include&#60;stdio.h&#62;
  2. int main(void)
  3. {
  4.        int usuario,clave=123;
  5.        printf(&#34;Ingrese su clave&#092;n&#34;);
  6.        scanf(&#34;%d&#34;,usuario);
  7.        if (usuario == clave)
  8. {
  9.                system(&#34;clear&#34;);
  10.                system(&#34;date&#34;);
  11.                printf(&#34;Acceso autorizado Bienvenido&#092;n&#34;);
  12. }
  13.        else
  14. {
  15.                printf(&#34;Acceso Denegado lo lamento&#092;n&#34;);
  16. }
  17.        getch();
  18.  
  19.        return 0;
  20. }
  21.  
  22.  
ya le acomode las llaves de varias formas y no me jala :(
Citar
[th3r0rn@Linux ~]$ uname -a
Linux Linux 2.6.25-ARCH #1 SMP PREEMPT Sat Jun 14 18:07:19 CEST 2008 i686 Intel(R) Celeron(R) M CPU 420 @ 1.60GHz GenuineIntel GNU/Linux

Iganguli

  • Miembro activo
  • **
  • Mensajes: 51
  • Nacionalidad: mx
    • Ver Perfil
Re: Como Puedo Hacer Que No Me Tire Error?
« Respuesta #3 en: Domingo 15 de Junio de 2008, 04:48 »
0
te has olvidado de hacer lo que dijo eternal cuando usas scanf te hace flata &usuario modificalo y haber que tal

lostshell

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Re: Como Puedo Hacer Que No Me Tire Error?
« Respuesta #4 en: Domingo 15 de Junio de 2008, 05:32 »
0
Cita de: "franz."
Código: Text
  1. #include&#60;stdio.h&#62;
  2. int main(void)
  3. {
  4.        int usuario,clave=123;
  5.        printf(&#34;Ingrese su clave&#092;n&#34;);
  6.        scanf(&#34;%d&#34;,usuario);
  7.        if (usuario == clave)
  8. {
  9.                system(&#34;clear&#34;);
  10.                system(&#34;date&#34;);
  11.                printf(&#34;Acceso autorizado Bienvenido&#092;n&#34;);
  12. }
  13.        else
  14. {
  15.                printf(&#34;Acceso Denegado lo lamento&#092;n&#34;);
  16. }
  17.        getch();
  18.  
  19.        return 0;
  20. }
  21.  
  22.  
ya le acomode las llaves de varias formas y no me jala :(
tienes varios errores ahi.
1. no estas incluyendo la liberia para usar 'system' (stdlib,h)
2. no estas usando bien el scanf (lee lo que puso franz)
3. getch es una funcion de borland (conio.h), prueba con getchar

franz.

  • Miembro activo
  • **
  • Mensajes: 55
  • Nacionalidad: mx
    • Ver Perfil
    • http://imgeek.net
Re: Como Puedo Hacer Que No Me Tire Error?
« Respuesta #5 en: Jueves 19 de Junio de 2008, 22:55 »
0
Código: Text
  1. #include&#60;stdio.h&#62;
  2. int main(void)
  3. {    int usuario,clave=123;
  4.         printf(&#34;Ingrese su clave&#092;n&#34;);
  5.         scanf(&#34;%d&#34;,&usuario);
  6.       if (usuario == clave)
  7.       {
  8.           system(&#34;clear&#34;);
  9.            system(&#34;date&#34;);
  10.            printf(&#34;Acceso autorizado Bienvenido&#092;n&#34;);
  11.       }
  12.             else
  13.             {
  14.             printf(&#34;Acceso Denegado lo lamento&#092;n&#34;);
  15.             }                                                                   getch();
  16.  
  17.        return 0;
  18. }
  19.  
  20.  
me sigue dando error:
[th3r0rn@Linux c]$ gcc login.c -o login
/tmp/cc7Blhhg.o: In function `main':
login.c:(.text+0x72): undefined reference to `getch'
collect2: ld devolvió el estado de salida 1
[th3r0rn@Linux c]$

y sobre la funcion system yo la he usado sin incluir mas que la libreria stdio.h
Citar
[th3r0rn@Linux ~]$ uname -a
Linux Linux 2.6.25-ARCH #1 SMP PREEMPT Sat Jun 14 18:07:19 CEST 2008 i686 Intel(R) Celeron(R) M CPU 420 @ 1.60GHz GenuineIntel GNU/Linux

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Como Puedo Hacer Que No Me Tire Error?
« Respuesta #6 en: Jueves 19 de Junio de 2008, 23:14 »
0
Cito lo ya dicho:
3. getch es una funcion de borland (conio.h), prueba con getchar

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.