/* Ejemplo de ajuste de una cadena */ #include // Devuelve la longitud de una cadena int longCadena ( char cadena[] ) { int i; i = 0; while ( cadena[i] != '\0' ) { i++; } return i; } // Ajuste a la derecha // void AjusteIzda( char cadena[], int ajuste) { int i; int n; n = longCadena( cadena); if ( n < ajuste ) { // Pongo los blancos for (i= n ; i < ajuste; i++) { cadena[i]=' '; } // Poner final de cadena cadena[ajuste]='\0'; } } // Ajuste a la derecha // void AjusteDcha ( char cadena[], int ajuste) { int i; int n; int distancia; n = longCadena(cadena); if ( n < ajuste ) { // Desplazo las posiciones a la derecha // incluido el final de cadena distancia = ajuste -n; for ( i = n; i >= 0; i--) { cadena[i+distancia] = cadena[i]; } // Pongo los blancos for (i = 0; i< distancia; i++) { cadena[i]=' '; } } } void AjusteCentro ( char cadena[], int ajuste) { int i; int n; int ajustePrevio; // Ajuste de un lado n = longCadena(cadena); ajustePrevio = (ajuste - n)/2 + n; AjusteIzda(cadena,ajustePrevio); AjusteDcha(cadena,ajuste); } // PROGRAMA QUE PRUEBA LAS FUNCIONES main () { int ajuste; char linea[100]; char tipo; printf("Cadena:"); gets(linea); printf("Ajuste:"); scanf("%d",&ajuste); printf("Tipo:[I,D,C]:"); getchar(); scanf("%c",&tipo); switch( tipo ) { case 'I': AjusteIzda(linea,ajuste);break; case 'D': AjusteDcha(linea,ajuste);break; case 'C': AjusteCentro(linea,ajuste);break; default : puts("Ajuste erroneo"); } printf("(%s)\n",linea); }