Mostrar texto centrado o alineado a la derecha |
|
Escrito por adrianvaca
|
Martes, 22 de Marzo de 2011 23:51 |
El siguiente programa tiene la solución:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h>
#define MAX 1000
void substring(char *cadena, char *subcadena, int inicio, int longitud) { int i; for(i=0; i < longitud && inicio+i < strlen(cadena); i++) subcadena[ i ] = cadena[ inicio+i ];
subcadena[ i ] = '\0'; }
void centrar_linea(char *linea, int ancho) { int i, espacios; espacios = (ancho - strlen(linea)) / 2; for(i=0; i < espacios; i++) printf(" ");
printf("%s", linea); }
void derecha_linea(char *linea, int ancho) { int i, espacios; espacios = ancho - strlen(linea); for(i=0; i < espacios; i++) printf(" ");
printf("%s", linea); }
void centrar_cadena(char *cadena, int ancho) { char subcadena[MAX]; int i, total;
total = (int)ceil((float)strlen(cadena) / ancho); for(i=0; i < total; i++) { substring(cadena, subcadena, i*ancho, ancho); centrar_linea(subcadena, ancho); } }
void derecha_cadena(char *cadena, int ancho) { char subcadena[MAX]; int i, total;
total = (int)ceil((float)strlen(cadena) / ancho); for(i=0; i < total; i++) { substring(cadena, subcadena, i*ancho, ancho); derecha_linea(subcadena, ancho); } }
int main() { char cadena[MAX]; printf("Ingrese cadena: "); gets(cadena);
printf("\n\nCadena centrada:\n"); centrar_cadena(cadena, 80);
printf("\n\nCadena alineada a la derecha:\n"); derecha_cadena(cadena, 80); printf("\n"); system("PAUSE"); return 0; }
|
Las funciones centrar_cadena y derecha_cadena permite mostrar texto centrado y alineado a la derecha respectivamente.
Ejemplo:
Ahora si tenemos algo como:
int edad = 20; printf("La edad es %d", edad); |
Aparecerá alineado a la izquierda, si queremos alinerlo a la derecha, lo cambiaremos por:
int edad = 20; char cadena[MAX]; srintf(cadena, "La edad es %d", edad); derecha_cadena(cadena, 80); |
|