Resultados 1 al 7 de 7

Problema Compilacion en C

  1. #1 Problema Compilacion en C 
    Moderador HH
    Fecha de ingreso
    Nov 2006
    Mensajes
    1.516
    Descargas
    7
    Uploads
    0
    Hola a todos!!

    Vereis, ayer me dio por programar en C y empece a buscar un buen manual. Encontre un manual que tiene buena pinta y tal, pero el problema viene a la hora de compilar el archivo.c
    Me explico: (Digamos que el archivo es asi)

    # include <stdio.h>
    main ()
    {
    printf ("Hola tio!\n"); <--que conste que no tengo ni idea de lo que hace la n
    }
    Total, que le doy a compilar (con el Dev-C++. Es de Windows... pero que le vamos a hacer...)

    Y cuando lo abro no me dice "Hola tio!!" (sera que no le gusto??)
    Vale... donde esta el error??


    Un saludo y de adelantado muchas gracias
    Última edición por RaidMan; 07-12-2007 a las 13:38
    Mess with the best, die like the rest.


    Hazle a los demas... antes de que te hagan a ti.
    Citar  
     

  2. #2  
    Avanzado
    Fecha de ingreso
    Jan 2004
    Ubicación
    Donde me dejan
    Mensajes
    433
    Descargas
    7
    Uploads
    0
    Buenas
    justo despues del printf pon un return; es decir te queda asi: (por cierto si no te funciona con return a secas prueva con return(0);

    # include <stdio.h>
    main ()
    {
    printf ("Hola tio!\n"); //que conste que no tengo ni idea de lo que hace la n
    return;
    }
    para hacer comentarios en un programa y para que este no los lea se utiliza // o introduces /* texto*/

    el \n simplemente es para realizar un salto de linea, vamos como un intro.

    Espero que tengas un buen manual. ^^

    Saludos

    PD: Yo no hace muxo que me e metido en programacion asi que no te sera dificil que me superes. XDD
    El mejor maestro es uno mismo, aun que siempre va bien una ayudita
    Citar  
     

  3. #3  
    Moderador Global Avatar de hystd
    Fecha de ingreso
    Jul 2005
    Ubicación
    1, 11, 21, 1211...
    Mensajes
    1.596
    Descargas
    58
    Uploads
    0
    Buenas! el "\n" es un salto de linea, es decir como si pulsaras Intro en un editor de textos.

    Existen más caracteres especiales:

    \a => alerta
    \b => espacio atrás
    \f => salto de página
    \r => retorno de carro
    \t => tabulador en horizontal
    \v => tabulación en vertical
    \\ => barra invertida
    \' => comilla simple
    \" => comillas dobles

    En cuanto a lo de que no te sale "Hola tio", si que te sale, lo que ocurre es que ejecutas y cuando finaliza cierra automáticamente, y todo sucede tan rápido que no te da tiempo a ver nada... Prueba lanzar el programa desde una consola, o bien en tu código introduce al final lo siguiente:

    # include <stdio.h>
    main ()
    {
    printf ("Hola tio!\n"); <--que conste que no tengo ni idea de lo que hace la n
    getchar();
    }
    Esta función "getchar", hace que tu programa permanezca a la espera de recibir un caracter por teclado.

    Por cierto, la filosofía de un programa en C, es que la función main debe devolver un entero (int) que indique si todo ha ido con éxito. Por tanto el código quedaría algo así:

    #include <stdio.h>

    int main ()
    {
    printf("Hola tio!\n");
    getchar();
    return 0;
    }
    De manera que si tras ejecutar nuestro código en C, la función nos devuelve 0, entonces todo ha ido satisfactoriamente

    Un saludo y ánimo.
    Citar  
     

  4. #4  
    Moderador HH
    Fecha de ingreso
    Nov 2006
    Mensajes
    1.516
    Descargas
    7
    Uploads
    0
    Ok

    He probado a abrilo desde MS-Dos y si que funciona...

    Gracias por responder tan rapido

    Muchas gracias a los dos!!
    Hystd, el return 0 es algo como: Dime 0 si todo rula bien??

    Ya te contare mis avances si tu tambien estas con C, Foxwar

    Parece intersante

    Un saludo
    Última edición por RaidMan; 07-12-2007 a las 14:09
    Mess with the best, die like the rest.


    Hazle a los demas... antes de que te hagan a ti.
    Citar  
     

  5. #5  
    Avanzado
    Fecha de ingreso
    Jan 2004
    Ubicación
    Donde me dejan
    Mensajes
    433
    Descargas
    7
    Uploads
    0
    si tambien estoy con c, desde la uni me dan alguna que otra classe XDD.

    Por cierto no te vendria mejor programar desde linux?? No se que complicado es desde windows pero desde linux parece bastante sencillo para compilar ^.^

    Saludos
    El mejor maestro es uno mismo, aun que siempre va bien una ayudita
    Citar  
     

  6. #6  
    Moderador Global Avatar de hystd
    Fecha de ingreso
    Jul 2005
    Ubicación
    1, 11, 21, 1211...
    Mensajes
    1.596
    Descargas
    58
    Uploads
    0
    Hystd, el return 0 es algo como: Dime 0 si todo rula bien??
    Exacto. Es una manera de ver que todo ha funcionado correctamente...

    Por ejemplo: Imagina que tienes tu código en C, con su función principal main, que es por la que se va a empezar a ejecutar el programa:

    int main (int argc, char*argv[])
    {
    //...código;
    return 0; //si todo ha ido bien, devuelve 0;
    }

    Ahora lo llamas desde la consola (o desde otro programa en C). Desde la consola pasándole los parámetros que le indicamos al main (argc y argv, respectivamente indican "número de parámetros" y "parámetros"), si todo ha ido bien saldrá por la salida stdout (1), si no, por la salida stderr (2). Y para comprobar que todo funcionó correctamente es necesario saber que el main devolvió 0.

    Por poner un ejemplo, imagina un programa "copiar.c" que copia un fichero en otro. Tras compilar nos quedaría el binario ejecutable correspondiente ("copiar.out" para el caso de Linux) o ("copiar.exe" para el caso de un Windows). Desde la consola lo llamaríamos asi:

    $> copiar fichero1.txt fichero2.txt

    y lo que hacemos es copiar el fichero1.txt en uno nuevo llamado fichero2.txt

    En este caso:

    argc = 2 => son 2 parámetros los que hemos pasado a nuestro programa
    argv[0] = "fichero1.txt"
    argv[1] = "fichero2.txt"

    si la copia del fichero1.txt se realizó con éxito, entonces el programa copia.exe o copia.out devolverá 0 (por el return 0).

    Por tanto la estructura del código de copia.c sería algo asi como:

    int main (int argc, char*argv[])
    {
    if (argc!=2){
    printf ("\nFaltan parámetros o parámetros incorrectos\n");
    }else {
    //aqui vendría el código para copiar los ficheros usando argv[0] para hacer referencia al primer parámetro, y argv[1] para hacer referencia al segundo parámetro
    }
    return 0; => si todo fue bien, devuelve 0;
    }

    Un saludo
    Citar  
     

  7. #7  
    Iniciado
    Fecha de ingreso
    Dec 2007
    Mensajes
    3
    Descargas
    0
    Uploads
    0
    Hola, lo que hace tu código es printear "Hola tío" en el programa; sin embargo no te deja verlo, para que te deje deberás poner una entrada de carácter, éstas son:

    getchar(); Pertenece a la biblioteca stdio.h es una función con eco y que espera Intro, osea te devuelve el carácter escrito y espera Intro. Su cabecera es: int getchar(void);

    getch(); Pertenece a la biblioteca conio.h (En linux no existe esta biblioteca por lo que deberás reemplazarla por ncurses.h). Es una función que no tiene eco ni espera Intro, osea no te muestra el carácter que escribiste ni espera que presiones Intro. Su cabecera es: int getch (void); . Su utilización mas práctica es ésta:
    printf ("Presione una tecla para continuar.");
    getch();

    getche(); Pertenece a la biblioteca conio.h. Es una función que tiene eco pero no espera Intro, osea nos muestra el carácter que escribimos pero no espera a que presionemos Into para continuar. Su cabecera es: int getche (void);
    Tu código, como es muy simple, yo lo dejaría así:

    #include <stdio.h> /*Biblioteca de la función printf*/
    #include <conio.h> /*Biblioteca de la función getch*/
    int main (void){ /*Como bien te dijeron, debes agregar int antes de main*/
    printf ("Hola tío\n"); /*Como tambien te dijeron correctamente, \n es un carácter especial de una salida formateada (printf) además de los que ya te dieron, existen 3 más: \?, \0 y \xH*/
    getch(); /*Esto hará que aparesca tu printf y que espere que presiones cualquier letra para finalizar el programa*/
    }
    Te recomiendo que al igual que yo agregues comentarios en tus códigos (las palabras entre /* y */, las cuales no se compilan con el programa pero quedan en el código con el fin de ayudarte a ti mismo o a otra persona que lea el código para entenderlo).

    Espero haberte ayudado.

    Saludos.
    Citar  
     

Temas similares

  1. CompilaciÓn
    Por JeJaJixD en el foro GENERAL
    Respuestas: 1
    Último mensaje: 22-02-2010, 16:57
  2. Compilacion Jodida
    Por _UN[D]ER_ en el foro VULNERABILIDADES
    Respuestas: 2
    Último mensaje: 03-03-2004, 20:41

Marcadores

Marcadores