<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>http://wiki.cabal.mx/index.php?action=history&amp;feed=atom&amp;title=Curso_de_Programaci%C3%B3n_en_C%2FProg125</id>
	<title>Curso de Programación en C/Prog125 - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.cabal.mx/index.php?action=history&amp;feed=atom&amp;title=Curso_de_Programaci%C3%B3n_en_C%2FProg125"/>
	<link rel="alternate" type="text/html" href="http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog125&amp;action=history"/>
	<updated>2026-04-08T16:16:45Z</updated>
	<subtitle>Historial de revisiones para esta página en el wiki</subtitle>
	<generator>MediaWiki 1.32.1</generator>
	<entry>
		<id>http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog125&amp;diff=5552&amp;oldid=prev</id>
		<title>Perseuz: /* Prog125 */</title>
		<link rel="alternate" type="text/html" href="http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog125&amp;diff=5552&amp;oldid=prev"/>
		<updated>2014-06-07T23:58:17Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Prog125&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__NOTOC__&lt;br /&gt;
* [[:#Prog125 | Pointers de funciones]]&lt;br /&gt;
** [[:#Resultado | Resultado]]&lt;br /&gt;
** [[:#Explicación | Explicación]]&lt;br /&gt;
&lt;br /&gt;
== Prog125 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_FANCY_LINE_NUMBERS&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ctype.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
char DesplegaMenu( void );&lt;br /&gt;
void ComeLinea( void );&lt;br /&gt;
void Desplega( void (* fp)( char * ), char * str );&lt;br /&gt;
void AMayuscula( char * );&lt;br /&gt;
void AMinuscula( char * );&lt;br /&gt;
void Invierta( char * );&lt;br /&gt;
void Tonto( char * );&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  char Linea[81];&lt;br /&gt;
  char Copia[81];&lt;br /&gt;
  char Seleccion;&lt;br /&gt;
  void (*pfun)(char *);   // Declarar un pointer a función, pfun, que tiene&lt;br /&gt;
                          // argumento de char * y no valor de returno&lt;br /&gt;
  printf( &amp;quot;\nIngresa una línea (&amp;lt;Enter&amp;gt; para terminar): &amp;quot; );&lt;br /&gt;
  while( fgets( Linea, 79, stdin ) &amp;amp;&amp;amp; Linea[0] != &amp;#039;\n&amp;#039; )&lt;br /&gt;
  {&lt;br /&gt;
    if( *(Linea + strlen( Linea ) -1 ) != &amp;#039;\n&amp;#039; )&lt;br /&gt;
    {&lt;br /&gt;
      fputs( &amp;quot;La línea que entraste es demasiado largo.\nSolo 79 chars MAX&amp;quot;,&lt;br /&gt;
                                                                     stderr );&lt;br /&gt;
      exit(1);&lt;br /&gt;
    }&lt;br /&gt;
    *(Linea + strlen( Linea ) -1 ) = &amp;#039;\0&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    while( ( Seleccion = DesplegaMenu() ) != &amp;#039;s&amp;#039; )&lt;br /&gt;
    {&lt;br /&gt;
      switch( Seleccion )&lt;br /&gt;
      {&lt;br /&gt;
        case &amp;#039;y&amp;#039; : pfun = AMayuscula;   break;&lt;br /&gt;
        case &amp;#039;n&amp;#039; : pfun = AMinuscula;   break;&lt;br /&gt;
        case &amp;#039;i&amp;#039; : pfun = Invierta;     break;&lt;br /&gt;
        case &amp;#039;o&amp;#039; : pfun = Tonto;        break;&lt;br /&gt;
      }&lt;br /&gt;
      strcpy( Copia, Linea );&lt;br /&gt;
      Desplega( pfun, Copia );&lt;br /&gt;
    }&lt;br /&gt;
    printf( &amp;quot;\nIngresa una línea (&amp;lt;Enter&amp;gt; para terminar): &amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
  puts( &amp;quot;\n¡Adios!\n&amp;quot; );&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
char DesplegaMenu( void )&lt;br /&gt;
{&lt;br /&gt;
  char ans;&lt;br /&gt;
  puts( &amp;quot;\n\t\ty) Todo Mayúsculas  \t\tn) Todo Minúsculas&amp;quot; );&lt;br /&gt;
  puts( &amp;quot;\t\ti) Invertir         \t\to) Cómo original&amp;quot; );&lt;br /&gt;
  puts( &amp;quot;\t\ts) Siguiente string&amp;quot; );&lt;br /&gt;
  printf( &amp;quot;\tElige una opción: &amp;quot; );&lt;br /&gt;
  ans = getchar();&lt;br /&gt;
  ans = tolower(ans);&lt;br /&gt;
  ComeLinea();&lt;br /&gt;
  while( strchr( &amp;quot;ynios&amp;quot;, ans ) == NULL )&lt;br /&gt;
  {&lt;br /&gt;
    printf( &amp;quot;\tElige y, n, i, o, o s: &amp;quot; );&lt;br /&gt;
    ans = tolower( getchar() );&lt;br /&gt;
    ComeLinea();&lt;br /&gt;
  }&lt;br /&gt;
  return ans;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void ComeLinea( void )&lt;br /&gt;
{&lt;br /&gt;
  while( getchar() != &amp;#039;\n&amp;#039; )&lt;br /&gt;
    continue;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void AMayuscula( char * str )&lt;br /&gt;
{&lt;br /&gt;
  while( *str )&lt;br /&gt;
  {&lt;br /&gt;
    *str = toupper( *str );&lt;br /&gt;
    str++;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void AMinuscula( char * str )&lt;br /&gt;
{&lt;br /&gt;
  while( *str )&lt;br /&gt;
  {&lt;br /&gt;
    *str = tolower( *str );&lt;br /&gt;
    str++;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Invierta( char * str )&lt;br /&gt;
{&lt;br /&gt;
  while( *str )&lt;br /&gt;
  {&lt;br /&gt;
    if( islower( *str ) )&lt;br /&gt;
      *str = toupper( *str );&lt;br /&gt;
    else if( isupper( *str ) )&lt;br /&gt;
      *str = tolower( *str );&lt;br /&gt;
    str++;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Tonto(char * str)&lt;br /&gt;
{&lt;br /&gt;
  // No cambio el string&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Desplega( void (* fp)( char * ), char * str )&lt;br /&gt;
{&lt;br /&gt;
    (*fp)( str ); // aplicar la función&lt;br /&gt;
    printf( &amp;quot;\n\tEl Resultado: %s\n&amp;quot;, str );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resultado ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[rrc@localhost CClase]$ gcc -Wall -o Prog125 Prog125.c&lt;br /&gt;
[rrc@localhost CClase]$ ./Prog125&lt;br /&gt;
&lt;br /&gt;
Ingresa una línea (&amp;lt;Enter&amp;gt; para terminar): &lt;br /&gt;
&lt;br /&gt;
¡Adios!&lt;br /&gt;
&lt;br /&gt;
[rrc@localhost CClase]$ ./Prog125&lt;br /&gt;
&lt;br /&gt;
Ingresa una línea (&amp;lt;Enter&amp;gt; para terminar): Una Línea&lt;br /&gt;
&lt;br /&gt;
		y) Todo Mayúsculas  		n) Todo Minúsculas&lt;br /&gt;
		i) Invertir         		o) Cómo original&lt;br /&gt;
		s) Siguiente string&lt;br /&gt;
	Elige un opción: y&lt;br /&gt;
&lt;br /&gt;
	El Resultado: UNA LíNEA&lt;br /&gt;
&lt;br /&gt;
		y) Todo Mayúsculas  		n) Todo Minúsculas&lt;br /&gt;
		i) Invertir         		o) Cómo original&lt;br /&gt;
		s) Siguiente string&lt;br /&gt;
	Elige un opción: n&lt;br /&gt;
&lt;br /&gt;
	El Resultado: una línea&lt;br /&gt;
&lt;br /&gt;
		y) Todo Mayúsculas  		n) Todo Minúsculas&lt;br /&gt;
		i) Invertir         		o) Cómo original&lt;br /&gt;
		s) Siguiente string&lt;br /&gt;
	Elige un opción: o&lt;br /&gt;
&lt;br /&gt;
	El Resultado: Una Línea&lt;br /&gt;
&lt;br /&gt;
		y) Todo Mayúsculas  		n) Todo Minúsculas&lt;br /&gt;
		i) Invertir         		o) Cómo original&lt;br /&gt;
		s) Siguiente string&lt;br /&gt;
	Elige un opción: i&lt;br /&gt;
&lt;br /&gt;
	El Resultado: uNA líNEA&lt;br /&gt;
&lt;br /&gt;
		y) Todo Mayúsculas  		n) Todo Minúsculas&lt;br /&gt;
		i) Invertir         		o) Cómo original&lt;br /&gt;
		s) Siguiente string&lt;br /&gt;
	Elige un opción: s&lt;br /&gt;
&lt;br /&gt;
Ingresa una línea (&amp;lt;Enter&amp;gt; para terminar): OTRA línea&lt;br /&gt;
&lt;br /&gt;
		y) Todo Mayúsculas  		n) Todo Minúsculas&lt;br /&gt;
		i) Invertir         		o) Cómo original&lt;br /&gt;
		s) Siguiente string&lt;br /&gt;
	Elige un opción: y&lt;br /&gt;
&lt;br /&gt;
	El Resultado: OTRA LíNEA&lt;br /&gt;
&lt;br /&gt;
		y) Todo Mayúsculas  		n) Todo Minúsculas&lt;br /&gt;
		i) Invertir         		o) Cómo original&lt;br /&gt;
		s) Siguiente string&lt;br /&gt;
	Elige un opción: r&lt;br /&gt;
	Elige y, n, i, o, o s: i&lt;br /&gt;
&lt;br /&gt;
	El Resultado: otra LíNEA&lt;br /&gt;
&lt;br /&gt;
		y) Todo Mayúsculas  		n) Todo Minúsculas&lt;br /&gt;
		i) Invertir         		o) Cómo original&lt;br /&gt;
		s) Siguiente string&lt;br /&gt;
	Elige un opción: n&lt;br /&gt;
&lt;br /&gt;
	El Resultado: otra línea&lt;br /&gt;
&lt;br /&gt;
		y) Todo Mayúsculas  		n) Todo Minúsculas&lt;br /&gt;
		i) Invertir         		o) Cómo original&lt;br /&gt;
		s) Siguiente string&lt;br /&gt;
	Elige un opción: o&lt;br /&gt;
&lt;br /&gt;
	El Resultado: OTRA línea&lt;br /&gt;
&lt;br /&gt;
		y) Todo Mayúsculas  		n) Todo Minúsculas&lt;br /&gt;
		i) Invertir         		o) Cómo original&lt;br /&gt;
		s) Siguiente string&lt;br /&gt;
	Elige un opción: s&lt;br /&gt;
&lt;br /&gt;
Ingresa una línea (&amp;lt;Enter&amp;gt; para terminar): &lt;br /&gt;
&lt;br /&gt;
¡Adios!&lt;br /&gt;
&lt;br /&gt;
[rrc@localhost CClase]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Explicación ===&lt;br /&gt;
 &lt;br /&gt;
[[Category:Programación en C]]&lt;br /&gt;
[[Category:CCabal]]&lt;br /&gt;
[[Category:CursoC]]&lt;/div&gt;</summary>
		<author><name>Perseuz</name></author>
		
	</entry>
</feed>