SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: ka_1989 en Jueves 20 de Diciembre de 2007, 18:56

Título: Re: Enter En C++
Publicado por: ka_1989 en Jueves 20 de Diciembre de 2007, 18:56
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.
Título: Re: Enter En C++
Publicado por: diego.martinez en Viernes 21 de Diciembre de 2007, 10:39
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';
}
Título: Re: Enter En C++
Publicado por: ka_1989 en Viernes 21 de Diciembre de 2007, 13:54
Aja, tu ves algo me fallaba. Lo probaré y te comento....
Muchisimas gracias Diego.Martinez.
Un saludo.
Título: Re: Enter En C++
Publicado por: ka_1989 en Sábado 22 de Diciembre de 2007, 00:39
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.
Título: Re: Enter En C++
Publicado por: su - en Sábado 22 de Diciembre de 2007, 02:14
Tengo una pregunta con relacion...
MS. Windows sigue usando "\r\n" como eol ( end of line ) o ya es el simple "\n"?
 :blink:
Título: Re: Enter En C++
Publicado por: ProfesorX en Sábado 22 de Diciembre de 2007, 23:47
Sigue siendo igual en windows, un "\n" se traduce en un retorno de carro y nueva linea.
Título: Re: Enter En C++
Publicado por: Eternal Idol en Domingo 23 de Diciembre de 2007, 00:48
Si, es \r\n (Carriage return + New line) como siempre.

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