// lab15.cpp (C) 2007 adolfo@di-mare.com /** \file lab15.cpp \brief Muestra cómo centrar una hilera. \author Adolfo Di Mare \date 2007 */ #include #include // malloc() && free() #include // strlen() /** Retorna el valor de \c "hilera" centrado en una hilera de longitud \c "N". - Si N <= strlen( hilera) retorna \c "hilera". - El programador cliente siempre debe retornar la memoria de la hilera invocando la función de biblioteca \c free() (en #include ). */ char * Centrador( const char * hilera, int N ) { unsigned LEN = strlen( hilera ); // LEN es la longitud de "hilera" char * res = (char*) malloc( 1+LEN ); // "res" contiene la hilera a retornar if ( N <= LEN ) { return (char*) memcpy( res , hilera, 1+LEN ); // copia la hilera y luego la retorna } int adelante = ( N - LEN ) / 2; char * p = res; int i; for (i=0; i // INT_MAX /// Programa principal. int main() { cout << "Ingrese la hilera a centrar: "; char hilera[256]; cin.get( hilera , sizeof(hilera)-1, '\n' ); // lee la hilera de trabajo // cin.ignore(INT_MAX, '\n'); // desecha el resto del renglón for ( int i=20; i<=30; ++i ) { char * centrada = Centrador( hilera , i ); cout << "i == " << i << " ==> [" << centrada << ']' << endl; free( centrada ); // hay que devolver la memoria dinámica que Centrador() toma } return 0; } // EOF: lab15.cpp