#include <conio.h> (linux)

Iniciado por maxwellnewage, 7 Septiembre 2009, 23:33 PM

0 Miembros y 2 Visitantes están viendo este tema.

maxwellnewage

tengo el siguiente programa:

#include <stdio.h>
#include <conio.h>

int main()
{
gotoxy( 20, 10 );
printf( "Hola" );

return 0;
}



y cuando lo compilo con el gcc aparece esto:

hola.c:2:19: error: conio.h: No existe el fichero ó directorio
maxwellnewage@maxwellnewage-desktop:~$ gcc  hola.c -o hola
/tmp/cc4hZdUi.o: In function `main':
hola.c:(.text+0x21): undefined reference to `gotoxy'
collect2: ld devolvió el estado de salida 1


entiendo, por lo q dice, que falta la biblioteca <conio.h>
es propia de windows?
como puedo agregarla en linux?

aguml

conio es propia de borland y en linux no vale. Para hacer lo mismo que con gotoxy si programas bajo GNU/Linux puedes usar la función move(int fila, int columna), que viene en la librería NCURSES la cual funciona en casi todas las distribuciones.

SeC

Personalmente nunca he utilizado conio.h, la verdad para darle formato a las impresiones en pantalla solo utilizo \t,\n,... lo que es estandar y compilara aqui y en la quebrá del ají, conio no tiene mayor transcendencia y es mejor no utilizarla (es mi opinión). Lo demas ya te lo explico aguml, lo que te propone es una alternativa, pero yo te recomendaría olvidarte de conio (almenos para eso del gotoxy)...

Un saludo.

Educad a los niños y no sera necesario castigar a los hombres - Pitagoras.

maxwellnewage

bueno bueno, me olvido de conio.h
en formato solo se usar \n
cuales otras hay??

aguml

#4
Secuencias de escape

Las secuencias de caracteres en las que el primero es la barra invertida, se denominaron secuencias de escape y aunque originariamente se utilizaron para la representación de los caracteres de control, por extensión pueden representarse de este modo todos los códigos ASCII. Además se dispone de algunos símbolos predefinidos para los caracteres más frecuentes. Por ejemplo, \n se utiliza para representar el carácter nueva línea (decimal 10). Los símbolos utilizados se muestran en la tabla adjunta.

   Secuencia   Valor     Símbolo          Que hace                          

    \a               0x07         BEL           Sonido audible (bell)

    \b               0x08          BS           Retroceso (backspace)

    \f               0x0C          FF            Salto de formato (formfeed)

    \n               0x0A         LF             Saltar una línea (linefeed)

    \r               0x0D         CR             Retorno de carro (carriage return)

    \t               0x09          HT             Tabulación horizontal (H Tab)

    \v               0x0B         VT             Tabulación vertical (V Tab)

    \\               0x5c           \               Barra invertida (backslash) [2]

    \'               0x27           '                Apóstrofo (comilla simple)

    \"               0x22           "               Doble comilla

    \?               0x3F           ?              Interrogación

    \O           cualquiera  cualquiera     O = cadena de hasta tres dígitos octales

    \xH         cualquiera  cualquiera     H = cadena de dígitos hexadecimales

    \XH         cualquiera  cualquiera     H = cadena de dígitos hexadecimales


Te aconsejo que te descargues el libro de Programacion en C/C++ de Deitel & Deitel que te aclarará montones de dudas como esta. Esto lo saqué de google pero en el libro viene mejor explicado. Por ejemplo:

Secuencia de escape                                 Descripcion
\f (Nueva pagina o avance de pagina)       Mueve el cursor al inicio de la siguiente pagina logica.

EvilGoblin

Yo quise usar ncurses porque \t me congelaba la aplicacion un tiempo

y me lleve con la agria sorpresa de que no es compatible con printf (osea tiene toda su gama de funciones para imprimir en pantalla)
algo por lo cual desisti.. y me dedico a hacer entorno graficos si necesito manejar algo mas complejo que simple imprimir texto

xD

Suerte
Experimental Serial Lain [Linux User]

borja

hola buenas noches tengo que entregar esta tarea como royecto en c++ ero el programa no uede compilar y me aarece este error  C:\Users\Coni\Desktop\Makefile.win [Build Error]  [main.o] Error -1073741819

este es mi royecto:

#include <stdio.h>
#include <conio.h>

main ()
{
    int op, nu1, nu2,res;
    float res1;
    printf ("Elige la operacion que deseas calcular \n");
     printf ("1. Suma \n ");
    printf ("2. Resta \n ");
    printf ("3. Multiplicacion \n ");
    printf ("4. Division \n ");
    printf ("5. Perimetro del circulo \n ");
    printf ("6. Area del circulo \n ");
    printf ("7. Perimetro del triangulo \n ");
    printf ("8. Area del triangulo \n ");
    printf ("9. Salir \n ");
    scanf ("%d", &op);
    switch (op)
    {
        case 1: printf("Suma \n");
         printf ("introduce el primer numero \n");
         scanf ("%d", &nu1);
          printf ("introduce el segundo numero \n");
         scanf ("%d", &nu2);
         res=nu1+nu2;
          printf ("la suma de los dos numeros es: %d\n",res);

        break;
        case 2: printf("Resta \n ");
         printf ("introduce el primer numero \n");
         scanf ("%d", &nu1);
          printf ("introduce el segundo numero \n");
         scanf ("%d", &nu2);
         res=nu1-nu2;
          printf ("la diferencia de los dos numeros es: %d\n",res);
        break;
        case 3: printf("Multiplicacion \n ");
         printf ("introduce el primer numero \n");
         scanf ("%d", &nu1);
          printf ("introduce el segundo numero \n");
         scanf ("%d", &nu2);
         res=nu1*nu2;
          printf ("la multiplicacion de los dos numeros es: %d\n",res);

        break;
        case 4: printf("Division \n ");
         printf ("introduce el primer numero \n");
         scanf ("%d", &nu1);
          printf ("introduce el segundo numero \n");
         scanf ("%d", &nu2);
         res=nu1/nu2;
          printf ("la division  de los dos numeros es: %d\n",res);

        break;
        case 5: printf("Perimetro del circulo \n ");
        printf ("introduce el radio de la circunferencia \n");
         scanf ("%d", &nu2);
         res1=2*3.1416*nu2;
          printf ("el perimetro del circulo es: %f\n",res1);

        break;

       case 6: printf("Area del circulo \n ");

      printf ("introduce el radio de la circunferencia \n");
         scanf ("%d", &nu2);
         res1=3.1416*(nu2*nu2);
          printf ("el area del circulo es: %f\n",res1);
        break;


       case 7: printf("Perimetro del triangulo \n ");

        printf ("introduce la base del triangulo \n");
         scanf ("%d", &nu1);
          printf ("introduce la altura del triangulo \n");
         scanf ("%d", &nu2);
         res=nu1+nu2+nu2;
          printf ("el perimetro del triangulo es: %d\n",res);
        break;

        case 8: printf("Area del triangulo \n ");

        printf ("introduce la base del triangulo \n");
         scanf ("%d", &nu1);
          printf ("introduce la altura del triangulo \n");
         scanf ("%d", &nu2);
         res=(nu1*nu2)/2;
          printf ("la area del triangulo es: %d\n",res);
        break;

        default:printf("Salir");
    }
    getch();
    return 0;
}


me pudieran ayudar? por favor. Por su atencion muchas gracias

K-YreX

Cita de: borja en 29 Enero 2019, 05:06 AM
hola buenas noches tengo que entregar esta tarea como royecto en c++ ero el programa no uede compilar y me aarece este error  C:\Users\Coni\Desktop\Makefile.win [Build Error]  [main.o] Error -1073741819

este es mi royecto:

#include <stdio.h>
#include <conio.h>

main ()
{
    int op, nu1, nu2,res;
    float res1;
    printf ("Elige la operacion que deseas calcular \n");
     printf ("1. Suma \n ");
    printf ("2. Resta \n ");
    printf ("3. Multiplicacion \n ");
    printf ("4. Division \n ");
    printf ("5. Perimetro del circulo \n ");
    printf ("6. Area del circulo \n ");
    printf ("7. Perimetro del triangulo \n ");
    printf ("8. Area del triangulo \n ");
    printf ("9. Salir \n ");
    scanf ("%d", &op);
    switch (op)
    {
        case 1: printf("Suma \n");
         printf ("introduce el primer numero \n");
         scanf ("%d", &nu1);
          printf ("introduce el segundo numero \n");
         scanf ("%d", &nu2);
         res=nu1+nu2;
          printf ("la suma de los dos numeros es: %d\n",res);

        break;
        case 2: printf("Resta \n ");
         printf ("introduce el primer numero \n");
         scanf ("%d", &nu1);
          printf ("introduce el segundo numero \n");
         scanf ("%d", &nu2);
         res=nu1-nu2;
          printf ("la diferencia de los dos numeros es: %d\n",res);
        break;
        case 3: printf("Multiplicacion \n ");
         printf ("introduce el primer numero \n");
         scanf ("%d", &nu1);
          printf ("introduce el segundo numero \n");
         scanf ("%d", &nu2);
         res=nu1*nu2;
          printf ("la multiplicacion de los dos numeros es: %d\n",res);

        break;
        case 4: printf("Division \n ");
         printf ("introduce el primer numero \n");
         scanf ("%d", &nu1);
          printf ("introduce el segundo numero \n");
         scanf ("%d", &nu2);
         res=nu1/nu2;
          printf ("la division  de los dos numeros es: %d\n",res);

        break;
        case 5: printf("Perimetro del circulo \n ");
        printf ("introduce el radio de la circunferencia \n");
         scanf ("%d", &nu2);
         res1=2*3.1416*nu2;
          printf ("el perimetro del circulo es: %f\n",res1);

        break;

       case 6: printf("Area del circulo \n ");

      printf ("introduce el radio de la circunferencia \n");
         scanf ("%d", &nu2);
         res1=3.1416*(nu2*nu2);
          printf ("el area del circulo es: %f\n",res1);
        break;


       case 7: printf("Perimetro del triangulo \n ");

        printf ("introduce la base del triangulo \n");
         scanf ("%d", &nu1);
          printf ("introduce la altura del triangulo \n");
         scanf ("%d", &nu2);
         res=nu1+nu2+nu2;
          printf ("el perimetro del triangulo es: %d\n",res);
        break;

        case 8: printf("Area del triangulo \n ");

        printf ("introduce la base del triangulo \n");
         scanf ("%d", &nu1);
          printf ("introduce la altura del triangulo \n");
         scanf ("%d", &nu2);
         res=(nu1*nu2)/2;
          printf ("la area del triangulo es: %d\n",res);
        break;

        default:printf("Salir");
    }
    getch();
    return 0;
}


me pudieran ayudar? por favor. Por su atencion muchas gracias

Este mensaje no está directamente relacionado con este tema. Lo suyo sería que crearas un tema nuevo para resolver tu problema. Además los trozos de código hay que ponerlos entre etiquetas de código GeSHi (puedes elegirlo encima del cuadro de texto).
Además te recomiendo no uses <conio.h>. En tu caso, como alternativa al <getch()> puedes usar <getchar()> (que se encuentra en <stdio.h>) y si programas en C++ puedes usar <cin.get()> (que se encuentra en <iostream>).

No controlo mucho los makefile en windows pero tiene pinta de que el error se debe al makefile con el que estás compilando, no al código fuente.

Aparte de eso, en el <case> para hacer la división deberías hacer un typecast y usar la variable <res1> por si la división no es exacta:

res1 = (float)(n1)/n2;

Y en el <case> del perímetro del triángulo, dudo que esa fórmula sea válida...

Ptriangulo = 2h * b ???

Que yo recuerde, cuando hacía esos ejercicios en clase, había que usar trigonometría (Pitágoras) para resolver esos ejercicios. Suerte :-X
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

MAFUS

En el terminal de Linux tienes las secuencias de escape que te permiten posicionar el cursor dónde quieras. Son una simple cadena de texto se lanza con printf, por ejemplo.