SoloCodigo
Programación General => C/C++ => Mensaje iniciado 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.
-
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';
}
-
Aja, tu ves algo me fallaba. Lo probaré y te comento....
Muchisimas gracias Diego.Martinez.
Un saludo.
-
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.
-
Tengo una pregunta con relacion...
MS. Windows sigue usando "\r\n" como eol ( end of line ) o ya es el simple "\n"?
:blink:
-
Sigue siendo igual en windows, un "\n" se traduce en un retorno de carro y nueva linea.
-
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)