• Domingo 5 de Mayo de 2024, 16:14

Autor Tema:  Re: Enter En C++  (Leído 4568 veces)

ka_1989

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Enter En C++
« en: Jueves 20 de Diciembre de 2007, 18:56 »
0
Muy buenas a todos. Soy nuevo por aquí y me gustaría aceros una preguntilla.
Cuando quieres leer una cadena de caracteres en un array en c++ acabado en ENTER, como se debería poner. El código que yo he empleado es este, pero cuando pulso enter no para, si no que salta de linea y sigue escribiendo. Antes de meterse en esta funcion, todos los espacios del array tiene el caracter '0' que es distinto de '\n' y por tanto entra en el bucle, pero resulta que nunca para.

void leercadena(tcadena & nombre)
{
int i=0;
   while (nombre!='\n'){
   nombre=cin.get();
   i=i+1;
   }
   nombre[i-1]='\0';
}

Gracias a todos por adelantado.
Un saludo.

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: Enter En C++
« Respuesta #1 en: Viernes 21 de Diciembre de 2007, 10:39 »
0
hombre, asi a ojo me da que no pilla el enter por que despues de recibir el caracter, incrementas la posicion de i, y luego lo compruebas o sea :


aaaaa\n
--------^ metes el caracter en la posicion i
         
incrementas i

aaaaa\n-
--------+^ el while comprueba el SIGUIENTE caracter que vete tu a saber lo que es


deberia ser:


void leercadena(tcadena & nombre)
{
int i=0;
while (1){
nombre=cin.get();
if (nombre=='\n') break;
i=i+1;
}
nombre[i-1]='\0';
}

ka_1989

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Enter En C++
« Respuesta #2 en: Viernes 21 de Diciembre de 2007, 13:54 »
0
Aja, tu ves algo me fallaba. Lo probaré y te comento....
Muchisimas gracias Diego.Martinez.
Un saludo.

ka_1989

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Enter En C++
« Respuesta #3 en: Sábado 22 de Diciembre de 2007, 00:39 »
0
Hola!!!!!!
Lo he probado y si, funciona, pero sigo con un problema haber si sabeis porque puede ser.

El algoritmo en si ke funciona, pero ahora si lo pruebo desde dentro de donde yo lo quiero tener no entra ni si quiera en el bucle, y no se porque es.

El nombre es un tipo de dato dentro de un registro.

Bueno de todas maneras muchas gracias!!!!!

Un saludo.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Enter En C++
« Respuesta #4 en: Sábado 22 de Diciembre de 2007, 02:14 »
0
Tengo una pregunta con relacion...
MS. Windows sigue usando "\r\n" como eol ( end of line ) o ya es el simple "\n"?
 :blink:
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Enter En C++
« Respuesta #5 en: Sábado 22 de Diciembre de 2007, 23:47 »
0
Sigue siendo igual en windows, un "\n" se traduce en un retorno de carro y nueva linea.

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Enter En C++
« Respuesta #6 en: Domingo 23 de Diciembre de 2007, 00:48 »
0
Si, es \r\n (Carriage return + New line) como siempre.

Agrego enlace con informacion al respecto: http://en.wikipedia.org/wiki/Newline

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.