• Sábado 14 de Diciembre de 2024, 18:41

Autor Tema:  problema char* en linux  (Leído 1768 veces)

Epa

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
problema char* en linux
« en: Jueves 5 de Noviembre de 2009, 20:18 »
0
Buenas, haber si alguien me puede ayudar con esta duda por favor.

Estoy haciendo un programita y quiero que sea multiplataforma. Lo hice en dev-cpp y ahora quiero arreglarlo para que me compile en linux.
Y estoy teniendo problemas con una funcion:

void pause(char *msg);

que tipo tendria que ser char* en linux?
 porque me da error de conversion cuando intento llamarla con una cadena como: pause("cadena");

Saludos y gracias
The sweet smell of a great sorrow lies over the land.


Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: problema char* en linux
« Respuesta #1 en: Jueves 5 de Noviembre de 2009, 21:11 »
0
¿¿pause o system es la funcion que queres usar?

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.

Epa

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
Re: problema char* en linux
« Respuesta #2 en: Jueves 5 de Noviembre de 2009, 21:39 »
0
es una funcion propia, pero me parecio irrelevante el cuerpo, ya que el problema es cuando se pasa el argumento.

Código: C++
  1.  
  2. void pause(char *msg)
  3. {
  4.    cout << msg << endl << "Presione ENTER para continuar.";
  5.    fflush(stdin);
  6.    cin.get();  
  7. }
  8.  
  9.  

cuando hago el llamado a funcion como pause("mensaje");
me da un error de conversion de tipo.

se que hay una clase string, pero tendria que crear una variable, insentarle el texto y despues pasarla, o hay otra forma?
porque en ese caso se perderia el sentido ya que la unica idea es darle legibilidad y achicar un poco el codigo

gracias
The sweet smell of a great sorrow lies over the land.


Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: problema char* en linux
« Respuesta #3 en: Viernes 6 de Noviembre de 2009, 10:12 »
0
Si pones el output exacto del compilador es mas facil, ahora tratare de compilar algo parecido a lo que dejaste:
 
Código: C++
  1. #include <stdio.h>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. void pause(char *msg)
  7. {
  8.    cout << msg << endl << "Presione ENTER para continuar.";
  9.    fflush(stdin);
  10.    cin.get();  
  11. }
  12.  
  13. void main()
  14. {
  15.   pause("mensaje");
  16. }
  17.  

No tengo problema, en Windows, tanto con VC++ como con gcc/g++.

PD. fflush no debe usarse con flujos de entrada como stdin, en Google encontraras cientos de referencias al respecto.

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.

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: problema char* en linux
« Respuesta #4 en: Viernes 6 de Noviembre de 2009, 12:25 »
0
es posible que en las librerias de linux que estas compilando ya exista una funcion "pause" que reciba como argumento (por ejemplo) un numero de segundos/microsegundos a esperar y te este diciendo que no puede convertir de cadena a numero?

es por sugerir algo simplemente.

shakka

  • Miembro HIPER activo
  • ****
  • Mensajes: 679
  • Nacionalidad: cr
    • Ver Perfil
    • http://mbrenes.com
Re: problema char* en linux
« Respuesta #5 en: Viernes 6 de Noviembre de 2009, 15:28 »
0
Es correcto, existe y pertenece a unistd.h:

Código: C
  1. int pause(void)
  2.  

http://www2.dis.ulpgc.es/~itis-ps/signal/index.html