Problema con strings

Iniciado por FMLTGRD, 5 Diciembre 2014, 23:24 PM

0 Miembros y 1 Visitante están viendo este tema.

FMLTGRD

Buenas tardes, tengo un pequeño problema al trabajar con arreglos de caracteres, mi programa tiene un método getText que recibe como parámetro un HWND que debe de corresponder a un control "EDIT". El problema es que no puedo limitar la cantidades de caracteres del arreglo. Si alguien me puede ayudar se lo agradecería mucho.

Les dejo el código de la función:

    TCHAR lpstrBuffer[5] = "....";

void getText(HWND campoTexto){

            HWND campoTexto;
            SendMessage(c, EM_GETLINE, 0, (LPARAM)lpstrBuffer);
            printf("%s\n", lpstrBuffer);

}

ivancea96

Los arreglos de caracteres, cuando se interpretan como texto, o se envía junto al puntero la cantidad de caracteres a usar, o es que el método lee hasta que encuentra un byte nulo (0,'\0').

FMLTGRD

Si, eso lo sé.
El problema es que a pesar de que puedo ingresar los datos, no puedo hacer que el array solo permita una cierta cantidad de caracteres, ya que aunque el tamaño del arreglo es de 5, si escribo más de 5 caracteres estos se guardan en el buffer.

Gracias por tu ayuda.

kafok

Haber, lo que puedes hacer:

PD: tengo la api de window un poco olvidada, pero creo que los buffers que devuelve windows no terminan en caracter nulo, cuidado!

FMLTGRD

Muchas gracias, es justo lo que necesitaba, en verdad te lo agradezco.
Por otra parte ¿de pura casualidad no sabrás como el api de windows delimita un string si no es con el caracter nulo?

kafok

No estoy seguro de eso, pero creo que me dio problemas cuando trabaje con los edit y creo que no llegue a solucinar del todo, pero el mensaje EM_GETLINE devuelve cuantos caracteres a copiado. Si devuelve 4, pues en tu buffer la quinta posicion la pones a '\0', que el maximo es 9 y se copian 9 caracteres.... pues facil, reserva una mas, es decir 10, y si copia los 9 caracteres pon en tu buffer en la decima posicion el caracter nulo. Vamos, que lo hagas a mano como quien dice.

FMLTGRD

Perfecto, en verdad no sabes cuanto te agradezco tu ayuda, me funcionó muy bien.