http://wiki.cabal.mx/api.php?action=feedcontributions&user=Perseuz&feedformat=atom
WikiCabal - Contribuciones del usuario [es]
2024-03-28T18:43:12Z
Contribuciones del usuario
MediaWiki 1.32.1
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog131&diff=5555
Curso de Programación en C/Prog131
2014-06-10T19:45:31Z
<p>Perseuz: /* Prog131 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog131 | Más DEFINE]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog131 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
<br />
#define DOS 2 /* Puedes usar comentarios si quieres */<br />
#define OW "La consistencia es el último refugio de l\<br />
os con poco imaginación. - Oscar Wilde"<br />
#define CUADRADO DOS*DOS<br />
#define PX printf("X es %d.\n", x)<br />
#define FMT "X es %d.\n"<br />
<br />
int main(void)<br />
{<br />
int x = DOS;<br />
<br />
PX;<br />
x = CUADRADO;<br />
printf(FMT, x);<br />
printf("%s\n", OW);<br />
printf("DOS: OW\n");<br />
return 0;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<pre><br />
[rrc@pwyr CClase]$ gcc -Wall -O2 -o Prog131 Prog131.c<br />
[rrc@pwyr CClase]$ ./Prog131<br />
X es 2.<br />
X es 4.<br />
La consistencia es el último refugio de los con poco imaginación. - Oscar Wilde<br />
DOS: OW<br />
[rrc@pwyr CClase]$ <br />
</pre><br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog129&diff=5553
Curso de Programación en C/Prog129
2014-06-10T16:36:34Z
<p>Perseuz: /* Prog129 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog129 | Bitwise AND para pagar bits]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog129 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <string.h><br />
<br />
int main( void )<br />
{<br />
unsigned char Mascara,<br />
Semaforos;<br />
<br />
char Buf[7];<br />
<br />
int i,<br />
Prueba;<br />
<br />
puts( "\nEl bitwise AND es usado a veces para" );<br />
puts( "apagar algunos bits en un entero\n" );<br />
printf( "Dame un número positivo entre 0 y 255: " );<br />
while( fgets( Buf, 5, stdin ) && Buf[0] != '\n' )<br />
{<br />
if( *(Buf + strlen( Buf ) -1 ) != '\n' )<br />
{<br />
fputs( "La línea que entraste es demasiado larga.\nSolo 3 chars MAX",<br />
stderr );<br />
exit(1);<br />
}<br />
*(Buf + strlen( Buf ) -1 ) = '\0';<br />
<br />
for( i = 0; i < strlen( Buf ); i++ )<br />
{<br />
if( Buf[i] < '0' || Buf[i] > '9' )<br />
{<br />
fputs( "Caracteres ilegales en su ingreso\n", stderr );<br />
exit(1);<br />
}<br />
}<br />
<br />
Prueba = atoi( Buf);<br />
if( Prueba > 255 )<br />
{<br />
fputs( "Su entrada está fuera del rango especificado\n", stderr );<br />
exit(1);<br />
}<br />
<br />
<br />
for( i = 1; i <= 8; i++ )<br />
{<br />
switch( i )<br />
{<br />
case 1: Mascara = 0xfe;<br />
Semaforos = Prueba;<br />
Semaforos &= Mascara;<br />
printf( "Su número %d se cambia a %d cuando bit %d está apagado\n",<br />
Prueba, Semaforos, i -1 );<br />
break;<br />
case 2: Mascara = 0xfd;<br />
Semaforos = Prueba;<br />
Semaforos &= Mascara;<br />
printf( "Su número %d se cambia a %d cuando bit %d está apagado\n",<br />
Prueba, Semaforos, i -1 );<br />
break;<br />
case 3: Mascara = 0xfb;<br />
Semaforos = Prueba;<br />
Semaforos &= Mascara;<br />
printf( "Su número %d se cambia a %d cuando bit %d está apagado\n",<br />
Prueba, Semaforos, i -1 );<br />
break;<br />
case 4: Mascara = 0xf7;<br />
Semaforos = Prueba;<br />
Semaforos &= Mascara;<br />
printf( "Su número %d se cambia a %d cuando bit %d está apagado\n",<br />
Prueba, Semaforos, i -1 );<br />
break;<br />
case 5: Mascara = 0xef;<br />
Semaforos = Prueba;<br />
Semaforos &= Mascara;<br />
printf( "Su número %d se cambia a %d cuando bit %d está apagado\n",<br />
Prueba, Semaforos, i -1 );<br />
break;<br />
case 6: Mascara = 0xdf;<br />
Semaforos = Prueba;<br />
Semaforos &= Mascara;<br />
printf( "Su número %d se cambia a %d cuando bit %d está apagado\n",<br />
Prueba, Semaforos, i -1 );<br />
break;<br />
case 7: Mascara = 0xbf;<br />
Semaforos = Prueba;<br />
Semaforos &= Mascara;<br />
printf( "Su número %d se cambia a %d cuando bit %d está apagado\n",<br />
Prueba, Semaforos, i -1 );<br />
break;<br />
case 8: Mascara = 0x7f;<br />
Semaforos = Prueba;<br />
Semaforos &= Mascara;<br />
printf( "Su número %d se cambia a %d cuando bit %d está apagado\n",<br />
Prueba, Semaforos, i -1 );<br />
break;<br />
}<br />
}<br />
printf( "\nDame un número positivo entre 0 y 255"<br />
" (<Enter> para terminar): " );<br />
}<br />
return 0;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<pre><br />
[rrc@AbelLap CClase]$ gcc -Wall -o Prog129 Prog129.c<br />
[rrc@AbelLap CClase]$ ./Prog129<br />
<br />
El bitwise AND es usado a veces para<br />
apagar algunos bits en un entero<br />
<br />
Dame un número positivo entre 0 y 255: 255<br />
Su número 255 se cambia a 254 cuando bit 0 está apagado<br />
Su número 255 se cambia a 253 cuando bit 1 está apagado<br />
Su número 255 se cambia a 251 cuando bit 2 está apagado<br />
Su número 255 se cambia a 247 cuando bit 3 está apagado<br />
Su número 255 se cambia a 239 cuando bit 4 está apagado<br />
Su número 255 se cambia a 223 cuando bit 5 está apagado<br />
Su número 255 se cambia a 191 cuando bit 6 está apagado<br />
Su número 255 se cambia a 127 cuando bit 7 está apagado<br />
<br />
Dame un número positivo entre 0 y 255 (<Enter> para terminar): 127<br />
Su número 127 se cambia a 126 cuando bit 0 está apagado<br />
Su número 127 se cambia a 125 cuando bit 1 está apagado<br />
Su número 127 se cambia a 123 cuando bit 2 está apagado<br />
Su número 127 se cambia a 119 cuando bit 3 está apagado<br />
Su número 127 se cambia a 111 cuando bit 4 está apagado<br />
Su número 127 se cambia a 95 cuando bit 5 está apagado<br />
Su número 127 se cambia a 63 cuando bit 6 está apagado<br />
Su número 127 se cambia a 127 cuando bit 7 está apagado<br />
<br />
Dame un número positivo entre 0 y 255 (<Enter> para terminar): 63<br />
Su número 63 se cambia a 62 cuando bit 0 está apagado<br />
Su número 63 se cambia a 61 cuando bit 1 está apagado<br />
Su número 63 se cambia a 59 cuando bit 2 está apagado<br />
Su número 63 se cambia a 55 cuando bit 3 está apagado<br />
Su número 63 se cambia a 47 cuando bit 4 está apagado<br />
Su número 63 se cambia a 31 cuando bit 5 está apagado<br />
Su número 63 se cambia a 63 cuando bit 6 está apagado<br />
Su número 63 se cambia a 63 cuando bit 7 está apagado<br />
<br />
Dame un número positivo entre 0 y 255 (<Enter> para terminar): 31<br />
Su número 31 se cambia a 30 cuando bit 0 está apagado<br />
Su número 31 se cambia a 29 cuando bit 1 está apagado<br />
Su número 31 se cambia a 27 cuando bit 2 está apagado<br />
Su número 31 se cambia a 23 cuando bit 3 está apagado<br />
Su número 31 se cambia a 15 cuando bit 4 está apagado<br />
Su número 31 se cambia a 31 cuando bit 5 está apagado<br />
Su número 31 se cambia a 31 cuando bit 6 está apagado<br />
Su número 31 se cambia a 31 cuando bit 7 está apagado<br />
<br />
Dame un número positivo entre 0 y 255 (<Enter> para terminar): 15<br />
Su número 15 se cambia a 14 cuando bit 0 está apagado<br />
Su número 15 se cambia a 13 cuando bit 1 está apagado<br />
Su número 15 se cambia a 11 cuando bit 2 está apagado<br />
Su número 15 se cambia a 7 cuando bit 3 está apagado<br />
Su número 15 se cambia a 15 cuando bit 4 está apagado<br />
Su número 15 se cambia a 15 cuando bit 5 está apagado<br />
Su número 15 se cambia a 15 cuando bit 6 está apagado<br />
Su número 15 se cambia a 15 cuando bit 7 está apagado<br />
<br />
Dame un número positivo entre 0 y 255 (<Enter> para terminar): 7<br />
Su número 7 se cambia a 6 cuando bit 0 está apagado<br />
Su número 7 se cambia a 5 cuando bit 1 está apagado<br />
Su número 7 se cambia a 3 cuando bit 2 está apagado<br />
Su número 7 se cambia a 7 cuando bit 3 está apagado<br />
Su número 7 se cambia a 7 cuando bit 4 está apagado<br />
Su número 7 se cambia a 7 cuando bit 5 está apagado<br />
Su número 7 se cambia a 7 cuando bit 6 está apagado<br />
Su número 7 se cambia a 7 cuando bit 7 está apagado<br />
<br />
Dame un número positivo entre 0 y 255 (<Enter> para terminar): 3<br />
Su número 3 se cambia a 2 cuando bit 0 está apagado<br />
Su número 3 se cambia a 1 cuando bit 1 está apagado<br />
Su número 3 se cambia a 3 cuando bit 2 está apagado<br />
Su número 3 se cambia a 3 cuando bit 3 está apagado<br />
Su número 3 se cambia a 3 cuando bit 4 está apagado<br />
Su número 3 se cambia a 3 cuando bit 5 está apagado<br />
Su número 3 se cambia a 3 cuando bit 6 está apagado<br />
Su número 3 se cambia a 3 cuando bit 7 está apagado<br />
<br />
Dame un número positivo entre 0 y 255 (<Enter> para terminar): 1<br />
Su número 1 se cambia a 0 cuando bit 0 está apagado<br />
Su número 1 se cambia a 1 cuando bit 1 está apagado<br />
Su número 1 se cambia a 1 cuando bit 2 está apagado<br />
Su número 1 se cambia a 1 cuando bit 3 está apagado<br />
Su número 1 se cambia a 1 cuando bit 4 está apagado<br />
Su número 1 se cambia a 1 cuando bit 5 está apagado<br />
Su número 1 se cambia a 1 cuando bit 6 está apagado<br />
Su número 1 se cambia a 1 cuando bit 7 está apagado<br />
<br />
Dame un número positivo entre 0 y 255 (<Enter> para terminar): 0<br />
Su número 0 se cambia a 0 cuando bit 0 está apagado<br />
Su número 0 se cambia a 0 cuando bit 1 está apagado<br />
Su número 0 se cambia a 0 cuando bit 2 está apagado<br />
Su número 0 se cambia a 0 cuando bit 3 está apagado<br />
Su número 0 se cambia a 0 cuando bit 4 está apagado<br />
Su número 0 se cambia a 0 cuando bit 5 está apagado<br />
Su número 0 se cambia a 0 cuando bit 6 está apagado<br />
Su número 0 se cambia a 0 cuando bit 7 está apagado<br />
<br />
Dame un número positivo entre 0 y 255 (<Enter> para terminar): 35<br />
Su número 35 se cambia a 34 cuando bit 0 está apagado<br />
Su número 35 se cambia a 33 cuando bit 1 está apagado<br />
Su número 35 se cambia a 35 cuando bit 2 está apagado<br />
Su número 35 se cambia a 35 cuando bit 3 está apagado<br />
Su número 35 se cambia a 35 cuando bit 4 está apagado<br />
Su número 35 se cambia a 3 cuando bit 5 está apagado<br />
Su número 35 se cambia a 35 cuando bit 6 está apagado<br />
Su número 35 se cambia a 35 cuando bit 7 está apagado<br />
<br />
Dame un número positivo entre 0 y 255 (<Enter> para terminar): <br />
[rrc@AbelLap CClase]$ <br />
</pre><br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog125&diff=5552
Curso de Programación en C/Prog125
2014-06-07T23:58:17Z
<p>Perseuz: /* Prog125 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog125 | Pointers de funciones]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog125 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <string.h><br />
#include <ctype.h><br />
<br />
char DesplegaMenu( void );<br />
void ComeLinea( void );<br />
void Desplega( void (* fp)( char * ), char * str );<br />
void AMayuscula( char * );<br />
void AMinuscula( char * );<br />
void Invierta( char * );<br />
void Tonto( char * );<br />
<br />
int main(void)<br />
{<br />
char Linea[81];<br />
char Copia[81];<br />
char Seleccion;<br />
void (*pfun)(char *); // Declarar un pointer a función, pfun, que tiene<br />
// argumento de char * y no valor de returno<br />
printf( "\nIngresa una línea (<Enter> para terminar): " );<br />
while( fgets( Linea, 79, stdin ) && Linea[0] != '\n' )<br />
{<br />
if( *(Linea + strlen( Linea ) -1 ) != '\n' )<br />
{<br />
fputs( "La línea que entraste es demasiado largo.\nSolo 79 chars MAX",<br />
stderr );<br />
exit(1);<br />
}<br />
*(Linea + strlen( Linea ) -1 ) = '\0';<br />
<br />
while( ( Seleccion = DesplegaMenu() ) != 's' )<br />
{<br />
switch( Seleccion )<br />
{<br />
case 'y' : pfun = AMayuscula; break;<br />
case 'n' : pfun = AMinuscula; break;<br />
case 'i' : pfun = Invierta; break;<br />
case 'o' : pfun = Tonto; break;<br />
}<br />
strcpy( Copia, Linea );<br />
Desplega( pfun, Copia );<br />
}<br />
printf( "\nIngresa una línea (<Enter> para terminar): " );<br />
}<br />
puts( "\n¡Adios!\n" );<br />
return 0;<br />
}<br />
<br />
char DesplegaMenu( void )<br />
{<br />
char ans;<br />
puts( "\n\t\ty) Todo Mayúsculas \t\tn) Todo Minúsculas" );<br />
puts( "\t\ti) Invertir \t\to) Cómo original" );<br />
puts( "\t\ts) Siguiente string" );<br />
printf( "\tElige una opción: " );<br />
ans = getchar();<br />
ans = tolower(ans);<br />
ComeLinea();<br />
while( strchr( "ynios", ans ) == NULL )<br />
{<br />
printf( "\tElige y, n, i, o, o s: " );<br />
ans = tolower( getchar() );<br />
ComeLinea();<br />
}<br />
return ans;<br />
}<br />
<br />
void ComeLinea( void )<br />
{<br />
while( getchar() != '\n' )<br />
continue;<br />
}<br />
<br />
void AMayuscula( char * str )<br />
{<br />
while( *str )<br />
{<br />
*str = toupper( *str );<br />
str++;<br />
}<br />
}<br />
<br />
void AMinuscula( char * str )<br />
{<br />
while( *str )<br />
{<br />
*str = tolower( *str );<br />
str++;<br />
}<br />
}<br />
<br />
void Invierta( char * str )<br />
{<br />
while( *str )<br />
{<br />
if( islower( *str ) )<br />
*str = toupper( *str );<br />
else if( isupper( *str ) )<br />
*str = tolower( *str );<br />
str++;<br />
}<br />
}<br />
<br />
void Tonto(char * str)<br />
{<br />
// No cambio el string<br />
}<br />
<br />
void Desplega( void (* fp)( char * ), char * str )<br />
{<br />
(*fp)( str ); // aplicar la función<br />
printf( "\n\tEl Resultado: %s\n", str );<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<pre><br />
[rrc@localhost CClase]$ gcc -Wall -o Prog125 Prog125.c<br />
[rrc@localhost CClase]$ ./Prog125<br />
<br />
Ingresa una línea (<Enter> para terminar): <br />
<br />
¡Adios!<br />
<br />
[rrc@localhost CClase]$ ./Prog125<br />
<br />
Ingresa una línea (<Enter> para terminar): Una Línea<br />
<br />
y) Todo Mayúsculas n) Todo Minúsculas<br />
i) Invertir o) Cómo original<br />
s) Siguiente string<br />
Elige un opción: y<br />
<br />
El Resultado: UNA LíNEA<br />
<br />
y) Todo Mayúsculas n) Todo Minúsculas<br />
i) Invertir o) Cómo original<br />
s) Siguiente string<br />
Elige un opción: n<br />
<br />
El Resultado: una línea<br />
<br />
y) Todo Mayúsculas n) Todo Minúsculas<br />
i) Invertir o) Cómo original<br />
s) Siguiente string<br />
Elige un opción: o<br />
<br />
El Resultado: Una Línea<br />
<br />
y) Todo Mayúsculas n) Todo Minúsculas<br />
i) Invertir o) Cómo original<br />
s) Siguiente string<br />
Elige un opción: i<br />
<br />
El Resultado: uNA líNEA<br />
<br />
y) Todo Mayúsculas n) Todo Minúsculas<br />
i) Invertir o) Cómo original<br />
s) Siguiente string<br />
Elige un opción: s<br />
<br />
Ingresa una línea (<Enter> para terminar): OTRA línea<br />
<br />
y) Todo Mayúsculas n) Todo Minúsculas<br />
i) Invertir o) Cómo original<br />
s) Siguiente string<br />
Elige un opción: y<br />
<br />
El Resultado: OTRA LíNEA<br />
<br />
y) Todo Mayúsculas n) Todo Minúsculas<br />
i) Invertir o) Cómo original<br />
s) Siguiente string<br />
Elige un opción: r<br />
Elige y, n, i, o, o s: i<br />
<br />
El Resultado: otra LíNEA<br />
<br />
y) Todo Mayúsculas n) Todo Minúsculas<br />
i) Invertir o) Cómo original<br />
s) Siguiente string<br />
Elige un opción: n<br />
<br />
El Resultado: otra línea<br />
<br />
y) Todo Mayúsculas n) Todo Minúsculas<br />
i) Invertir o) Cómo original<br />
s) Siguiente string<br />
Elige un opción: o<br />
<br />
El Resultado: OTRA línea<br />
<br />
y) Todo Mayúsculas n) Todo Minúsculas<br />
i) Invertir o) Cómo original<br />
s) Siguiente string<br />
Elige un opción: s<br />
<br />
Ingresa una línea (<Enter> para terminar): <br />
<br />
¡Adios!<br />
<br />
[rrc@localhost CClase]$ <br />
</pre><br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog124&diff=5548
Curso de Programación en C/Prog124
2014-06-07T16:02:06Z
<p>Perseuz: /* Prog124 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog124 | enum]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog124 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
#include <string.h><br />
#include <stdbool.h><br />
#include <stdlib.h><br />
#include <ctype.h><br />
<br />
enum espectro { rojo, naranja, amarillo, verde, azul, violeta };<br />
<br />
const char * colores[] = {"rojo", "naranja", "amarillo",<br />
"verde", "azul", "violeta"};<br />
#define TAMANO 30<br />
<br />
int main(void)<br />
{<br />
char opcion[TAMANO],<br />
prueba[TAMANO];<br />
<br />
enum espectro color;<br />
<br />
int i;<br />
<br />
bool color_se_encuentra = false;<br />
<br />
printf( "Ingresa un color (<Enter> para terminar): " );<br />
while( fgets( opcion, TAMANO - 2, stdin ) && opcion[0] != '\n' )<br />
{<br />
if( *(opcion + strlen( opcion ) -1 ) != '\n' )<br />
{<br />
printf( "El color que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", TAMANO - 2 );<br />
exit(1);<br />
}<br />
else<br />
*(opcion + strlen( opcion ) -1 ) = '\0'; <br />
<br />
for( i = 0; i < strlen( opcion ); i++ )<br />
prueba[i] = tolower( opcion[i] );<br />
prueba[i] = '\0';<br />
<br />
for( color = rojo; color <= violeta; color++ )<br />
{<br />
if( strcmp( prueba, colores[color] ) == 0 )<br />
{<br />
color_se_encuentra = true;<br />
break;<br />
}<br />
}<br />
<br />
if( color_se_encuentra )<br />
switch( color )<br />
{<br />
case rojo :<br />
puts( "Las Rosas son de color rojo." );<br />
break;<br />
case naranja :<br />
puts( "Las amapolas son de color naranja." );<br />
break;<br />
case amarillo :<br />
puts( "Las girasoles son de color amarillo." );<br />
break;<br />
case verde :<br />
puts( "La hierba es de color verde." );<br />
break;<br />
case azul :<br />
puts( "Las jacintos son de color azul." );<br />
break;<br />
case violeta :<br />
puts( "Las violetas son de color violeta." );<br />
break;<br />
} <br />
else<br />
printf( "No conozco el color %s.\n", opcion );<br />
color_se_encuentra = false;<br />
printf( "Ingresa un color (<Enter> para terminar): " );<br />
}<br />
puts( "\n¡Adios!\n" );<br />
return 0;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<pre><br />
[rrc@localhost CClase]$ gcc -Wall -o Prog123 Prog123.c<br />
[rrc@localhost CClase]$ ./Prog123<br />
Ingresa un color (<Enter> para terminar): verde<br />
La hierba es de color verde.<br />
Ingresa un color (<Enter> para terminar): VIOLETA<br />
Las violetas son de color violeta.<br />
Ingresa un color (<Enter> para terminar): AzUl<br />
Las jacintos son de color azul.<br />
Ingresa un color (<Enter> para terminar): AmarillO<br />
Las girasoles son de color amarillo.<br />
Ingresa un color (<Enter> para terminar): Purple<br />
No conozco el color Purple.<br />
Ingresa un color (<Enter> para terminar): <br />
<br />
¡Adios!<br />
<br />
[rrc@localhost CClase]$ <br />
</pre><br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog122&diff=5544
Curso de Programación en C/Prog122
2014-06-06T19:11:57Z
<p>Perseuz: /* Prog122 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog122 | Guardar un iarreglo de structs en un archivo]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog122 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <string.h><br />
<br />
#define MAXTITL 40<br />
#define MAXAUTL 40<br />
#define MAXVALL 12<br />
#define MAXLIBROS 100<br />
<br />
struct Libro {<br />
char Titulo[MAXTITL];<br />
char Autor[MAXAUTL];<br />
float Valor;<br />
};<br />
<br />
int main( void )<br />
{<br />
struct Libro Biblioteca[MAXLIBROS];<br />
<br />
int Conteo = 0,<br />
ConteoDelArchivo,<br />
Index,<br />
NumPuntos,<br />
Tamano = sizeof( struct Libro ),<br />
i;<br />
<br />
char ValSTR[MAXVALL];<br />
<br />
FILE * PLibros;<br />
<br />
if( ( PLibros = fopen( "Libros.dat", "a+b" ) ) == NULL )<br />
{<br />
fputs( "No puedo abrir Libros.dat\n", stderr );<br />
exit( 1 );<br />
}<br />
<br />
rewind( PLibros );<br />
<br />
while( Conteo < MAXLIBROS &&<br />
fread( &Biblioteca[Conteo], Tamano, 1, PLibros ) == 1 )<br />
{<br />
if( Conteo == 0 )<br />
puts( "Los contenidos de Libros.dat ahora:" );<br />
printf( "\t%s por %s: $%.2f\n", Biblioteca[Conteo].Titulo,<br />
Biblioteca[Conteo].Autor,<br />
Biblioteca[Conteo].Valor );<br />
Conteo++;<br />
}<br />
<br />
ConteoDelArchivo = Conteo;<br />
<br />
if( Conteo == MAXLIBROS )<br />
{<br />
fputs( "El archivo: Libros.dat está lleno.", stderr );<br />
fclose( PLibros );<br />
exit( 2 );<br />
}<br />
<br />
printf( "\nIngresa el nombre del libro: " );<br />
while( Conteo < MAXLIBROS )<br />
{<br />
if( fgets( Biblioteca[Conteo].Titulo, MAXTITL - 2, stdin ) &&<br />
Biblioteca[Conteo].Titulo[0] != '\n' )<br />
{<br />
if( *(Biblioteca[Conteo].Titulo +<br />
strlen( Biblioteca[Conteo].Titulo ) -1 ) != '\n' )<br />
{<br />
fprintf( stderr, "El titulo que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", MAXTITL - 2 );<br />
fclose( PLibros );<br />
exit(1);<br />
}<br />
<br />
*(Biblioteca[Conteo].Titulo +<br />
strlen( Biblioteca[Conteo].Titulo ) -1 ) = '\0';<br />
}<br />
else<br />
break;<br />
<br />
printf( "Ingresa el nombre del autor: " );<br />
if( fgets( Biblioteca[Conteo].Autor, MAXAUTL - 2, stdin ) &&<br />
Biblioteca[Conteo].Autor[0] != '\n' )<br />
{<br />
if( *(Biblioteca[Conteo].Autor +<br />
strlen( Biblioteca[Conteo].Autor ) -1 ) != '\n' )<br />
{<br />
fprintf( stderr, "El autor que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", MAXAUTL - 2 );<br />
fclose( PLibros );<br />
exit(1);<br />
}<br />
<br />
*(Biblioteca[Conteo].Autor +<br />
strlen( Biblioteca[Conteo].Autor ) -1 ) = '\0';<br />
}<br />
else<br />
{<br />
fprintf( stderr, "Falta el nombre del autor de \"%s\"\n",<br />
Biblioteca[Conteo].Titulo );<br />
fclose( PLibros );<br />
exit(1);<br />
}<br />
<br />
NumPuntos = 0;<br />
printf( "Ingresa el valor: " );<br />
if( fgets( ValSTR, MAXVALL - 2, stdin ) && ValSTR[0] != '\n' )<br />
{<br />
if( *(ValSTR + strlen( ValSTR ) -1 ) != '\n' )<br />
{<br />
fprintf( stderr, "El valor que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", MAXVALL - 2 );<br />
fclose( PLibros );<br />
exit(1);<br />
}<br />
<br />
*(ValSTR + strlen( ValSTR ) -1 ) = '\0';<br />
<br />
if( ValSTR[0] == '-' )<br />
{<br />
fputs( "No se permiten valores negativos.", stderr );<br />
fclose( PLibros );<br />
exit(1);<br />
}<br />
<br />
for( i = 0; i < strlen( ValSTR ) - 1; i++ )<br />
{<br />
if( ValSTR[i] < '0' || ValSTR[i] > '9' )<br />
{<br />
if( ValSTR[i] == '.' )<br />
{<br />
if( ++NumPuntos > 1 )<br />
{<br />
fprintf( stderr, "Se permite solo 1 punto.\n" );<br />
fclose( PLibros );<br />
exit(1);<br />
}<br />
<br />
if( strlen( ValSTR ) - i > 3 )<br />
{<br />
fputs( "Se permiten solo 2 decimales después del punto.", stderr );<br />
fclose( PLibros );<br />
exit(1);<br />
}<br />
}<br />
else<br />
{<br />
fputs( "Caracteres ilegales en su valor.", stderr );<br />
fclose( PLibros );<br />
exit(1);<br />
}<br />
}<br />
}<br />
<br />
Biblioteca[Conteo++].Valor = atof( ValSTR );<br />
}<br />
else<br />
{<br />
fprintf( stderr, "Falta el valor de \"%s\"\n", Biblioteca[Conteo].Titulo );<br />
fclose( PLibros );<br />
exit(1);<br />
}<br />
<br />
if( Conteo < MAXLIBROS )<br />
printf( "Ingresa el sigiuente titulo: (<Enter> para terminar): " );<br />
}<br />
<br />
if (Conteo > 0)<br />
{<br />
puts( "\nAquí es la lista de sus libros:" );<br />
for( Index = 0; Index < Conteo; Index++ )<br />
printf( "\t\"%s\" por \"%s\": $%.2f\n", Biblioteca[Index].Titulo,<br />
Biblioteca[Index].Autor,<br />
Biblioteca[Index].Valor );<br />
fwrite( &Biblioteca[ConteoDelArchivo], Tamano, Conteo - ConteoDelArchivo,<br />
PLibros );<br />
}<br />
else<br />
puts( "Lo siento pero no tengo libros nuevos para mostrar." );<br />
<br />
puts( "\n¡Adios!\n" );<br />
fclose( PLibros );<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<pre><br />
[rrc@llawyr CClase]$ rm Libros.dat <br />
rm: remove regular file `Libros.dat'? y<br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog122 Prog122.c<br />
[rrc@llawyr CClase]$ ./Prog122<br />
<br />
Ingresa el nombre del libro: <br />
Lo siento pero no tengo libros nuevos para mostrar.<br />
<br />
¡Adios!<br />
<br />
[rrc@llawyr CClase]$ ./Prog122<br />
<br />
Ingresa el nombre del libro: Libro Uno<br />
Ingresa el nombre del autor: Autor uno<br />
Ingresa el valor: Valor 1<br />
Caracteres ilegales en su valor.<br />
[rrc@llawyr CClase]$ ./Prog122<br />
<br />
Ingresa el nombre del libro: Libro Uno<br />
Ingresa el nombre del autor: Autor Uno<br />
Ingresa el valor: 13.55<br />
Ingresa el siguiente titulo: (<Enter> para terminar): Libro Dos<br />
Ingresa el nombre del autor: Autor 2<br />
Ingresa el valor: 52.66<br />
Ingresa el siguiente titulo: (<Enter> para terminar): <br />
<br />
Aquí esta la lista de sus libros:<br />
"Libro Uno" por "Autor Uno": $13.55<br />
"Libro Dos" por "Autor 2": $52.66<br />
<br />
¡Adios!<br />
<br />
[rrc@llawyr CClase]$ ./Prog122<br />
Los contenidos de Libros.dat ahora:<br />
Libro Uno por Autor Uno: $13.55<br />
Libro Dos por Autor 2: $52.66<br />
<br />
Ingresa el nombre del libro: Libro Tres<br />
Ingresa el nombre del autor: Autor Tres<br />
Ingresa el valor: 62.88<br />
Ingresa el siguiente titulo: (<Enter> para terminar): Libro Cuatro<br />
Ingresa el nombre del autor: Autor Cuatro<br />
Ingresa el valor: 62.44<br />
Ingresa el siguiente titulo: (<Enter> para terminar): <br />
<br />
Aquí esta la lista de sus libros:<br />
"Libro Uno" por "Autor Uno": $13.55<br />
"Libro Dos" por "Autor 2": $52.66<br />
"Libro Tres" por "Autor Tres": $62.88<br />
"Libro Cuatro" por "Autor Cuatro": $62.44<br />
<br />
¡Adios!<br />
<br />
[rrc@llawyr CClase]$ ./Prog122<br />
Los contenidos de Libros.dat ahora:<br />
Libro Uno por Autor Uno: $13.55<br />
Libro Dos por Autor 2: $52.66<br />
Libro Tres por Autor Tres: $62.88<br />
Libro Cuatro por Autor Cuatro: $62.44<br />
<br />
Ingresa el nombre del libro: <br />
<br />
Aquí esta la lista de sus libros:<br />
"Libro Uno" por "Autor Uno": $13.55<br />
"Libro Dos" por "Autor 2": $52.66<br />
"Libro Tres" por "Autor Tres": $62.88<br />
"Libro Cuatro" por "Autor Cuatro": $62.44<br />
<br />
¡Adios!<br />
<br />
[rrc@llawyr CClase]$ <br />
</pre><br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog121&diff=5539
Curso de Programación en C/Prog121
2014-06-06T18:09:14Z
<p>Perseuz: /* Prog121 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog121 | Funciones que regresan structs]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog121 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <string.h><br />
<br />
#define MAXNOMBRELEN 20<br />
<br />
struct NombreConteo<br />
{<br />
char Nombre[MAXNOMBRELEN];<br />
char Apellido[MAXNOMBRELEN];<br />
int Letras;<br />
};<br />
<br />
struct NombreConteo ObtenInfo( void );<br />
struct NombreConteo mkInfo( struct NombreConteo );<br />
void DesplegaInfo( const struct NombreConteo );<br />
<br />
int main( void )<br />
{<br />
struct NombreConteo Persona;<br />
<br />
Persona = ObtenInfo();<br />
Persona = mkInfo( Persona );<br />
DesplegaInfo( Persona );<br />
return 0;<br />
}<br />
<br />
struct NombreConteo ObtenInfo( void )<br />
{<br />
struct NombreConteo temp;<br />
<br />
printf( "Favor de ingresar su nombre: " );<br />
if( fgets( temp.Nombre, MAXNOMBRELEN - 2, stdin ) &&<br />
temp.Nombre[0] != '\n' )<br />
{<br />
if( *(temp.Nombre + strlen( temp.Nombre ) -1 ) != '\n' )<br />
{<br />
printf( "El Nombre que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", MAXNOMBRELEN - 2 );<br />
exit(1);<br />
}<br />
<br />
*(temp.Nombre + strlen( temp.Nombre ) -1 ) = '\0';<br />
}<br />
else<br />
{<br />
puts( "Falta su Nombre" );<br />
exit(1);<br />
}<br />
<br />
printf( "Favor de ingresar su apellido paterno: " );<br />
if( fgets( temp.Apellido, MAXNOMBRELEN - 2, stdin ) &&<br />
temp.Apellido[0] != '\n' )<br />
{<br />
if( *(temp.Apellido + strlen( temp.Apellido ) -1 ) != '\n' )<br />
{<br />
printf( "El apellido paterno que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", MAXNOMBRELEN - 2 );<br />
exit(1);<br />
}<br />
<br />
*(temp.Apellido + strlen( temp.Apellido ) -1 ) = '\0';<br />
}<br />
else<br />
{<br />
puts( "Falta su apellido paterno" );<br />
exit(1);<br />
}<br />
return temp;<br />
}<br />
<br />
struct NombreConteo mkInfo( struct NombreConteo info )<br />
{<br />
info.Letras = strlen( info.Nombre ) +<br />
strlen( info.Apellido );<br />
return info;<br />
}<br />
<br />
void DesplegaInfo( const struct NombreConteo info )<br />
{<br />
printf( "%s %s, tu nombre contiene %d Letras.\n",<br />
info.Nombre, info.Apellido, info.Letras );<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<pre><br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog121 Prog121.c<br />
[rrc@llawyr CClase]$ ./Prog121<br />
Favor de ingresar su nombre: <br />
Falta su Nombre<br />
[rrc@llawyr CClase]$ ./Prog121<br />
Favor de ingresar su nombre: RichardConMuchasLetras<br />
El Nombre que entraste es demasiado largo.<br />
Solo 18 chars MAX<br />
[rrc@llawyr CClase]$ ./Prog121<br />
Favor de ingresar su nombre: Richard<br />
Favor de ingresar su apellido paterno: Couture<br />
Richard Couture, tu nombre contiene 14 Letras.<br />
[rrc@llawyr CClase]$ <br />
</pre><br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog120&diff=5532
Curso de Programación en C/Prog120
2014-06-06T16:51:12Z
<p>Perseuz: /* Prog120 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog120 | Pasando structs en funciones]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog120 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <string.h><br />
<br />
#define MAXNOMBRELEN 20<br />
<br />
struct NombreConteo<br />
{<br />
char Nombre[MAXNOMBRELEN];<br />
char Apellido[MAXNOMBRELEN];<br />
int Letras;<br />
};<br />
<br />
void ObtenInfo( struct NombreConteo * );<br />
void mkInfo( struct NombreConteo * );<br />
void DesplegaInfo( const struct NombreConteo * );<br />
<br />
int main( void )<br />
{<br />
struct NombreConteo Persona;<br />
<br />
ObtenInfo( &Persona );<br />
mkInfo( &Persona );<br />
DesplegaInfo( &Persona );<br />
return 0;<br />
}<br />
<br />
void ObtenInfo( struct NombreConteo * pst )<br />
{<br />
printf( "Favor de ingresar su nombre: " );<br />
if( fgets( pst->Nombre, MAXNOMBRELEN - 2, stdin ) &&<br />
pst->Nombre[0] != '\n' )<br />
{<br />
if( *(pst->Nombre + strlen( pst->Nombre ) -1 ) != '\n' )<br />
{<br />
printf( "El Nombre que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", MAXNOMBRELEN - 2 );<br />
exit(1);<br />
}<br />
<br />
*(pst->Nombre + strlen( pst->Nombre ) -1 ) = '\0';<br />
}<br />
else<br />
{<br />
puts( "Falta su Nombre" );<br />
exit(1);<br />
}<br />
<br />
printf( "Favor de ingresar su apellido paterno: " );<br />
if( fgets( pst->Apellido, MAXNOMBRELEN - 2, stdin ) &&<br />
pst->Apellido[0] != '\n' )<br />
{<br />
if( *(pst->Apellido + strlen( pst->Apellido ) -1 ) != '\n' )<br />
{<br />
printf( "El apellido paterno que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", MAXNOMBRELEN - 2 );<br />
exit(1);<br />
}<br />
<br />
*(pst->Apellido + strlen( pst-> Apellido ) -1 ) = '\0';<br />
}<br />
else<br />
{<br />
puts( "Falta su apellido paterno" );<br />
exit(1);<br />
}<br />
}<br />
<br />
void mkInfo( struct NombreConteo * pst )<br />
{<br />
pst->Letras = strlen( pst->Nombre ) +<br />
strlen( pst->Apellido );<br />
}<br />
<br />
void DesplegaInfo( const struct NombreConteo * pst )<br />
{<br />
printf( "%s %s, tu nombre contiene %d Letras.\n",<br />
pst->Nombre, pst->Apellido, pst->Letras );<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<pre><br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog120 Prog120.c<br />
[rrc@llawyr CClase]$ ./Prog120<br />
Favor de ingresar su nombre: <br />
Falta su Nombre<br />
[rrc@llawyr CClase]$ ./Prog120<br />
Favor de ingresar su nombre: RichardConMuchasLetras<br />
El Nombre que entraste es demasiado largo.<br />
Solo 18 chars MAX<br />
[rrc@llawyr CClase]$ ./Prog120<br />
Favor de ingresar su nombre: Richard<br />
Favor de ingresar su apellido paterno: Couture<br />
Richard Couture, tu nombre contiene 14 Letras.<br />
[rrc@llawyr CClase]$ <br />
</pre><br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog119&diff=5522
Curso de Programación en C/Prog119
2014-06-05T22:33:37Z
<p>Perseuz: /* Prog119 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog119 | Pointers de struct]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog119 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
<br />
#define LARGO 20<br />
<br />
struct Nombres {<br />
char Nombre[LARGO];<br />
char Apellido[LARGO];<br />
};<br />
<br />
struct Personas {<br />
struct Nombres handle;<br />
char ComidaPreferida[LARGO];<br />
char Profesion[LARGO];<br />
float IngresosMensual;<br />
};<br />
<br />
int main( void )<br />
{<br />
struct Personas Companero[2] = <br />
{<br />
{<br />
{ "Horacio", "Villanueva" },<br />
"salmon",<br />
"Gigolo",<br />
58112.00<br />
},<br />
<br />
{<br />
{"Rupert", "Delgado" },<br />
"menudo",<br />
"Editor de Revistas",<br />
32400.00<br />
}<br />
};<br />
<br />
struct Personas * El; /* here is a pointer to a structure */<br />
El = &Companero[0]; /* tell the pointer where to point */<br />
<br />
printf( "\npointer: %p\n", El );<br />
printf( "Nombre: %s\n", El->handle.Nombre ); <br />
printf( "Apellido: %s\n", El->handle.Apellido ); <br />
printf( "Comida Preferida: %s\n", El->ComidaPreferida ); <br />
printf( "Profesión: %s\n", El->Profesion ); <br />
printf( "Ingreso Mensual: %.2f\n", El->IngresosMensual ); <br />
<br />
El++; /* point to the next structure */<br />
<br />
printf( "\npointer: %p\n", El );<br />
printf( "Nombre: %s\n", (*El).handle.Nombre ); <br />
printf( "Apellido: %s\n", (*El).handle.Apellido ); <br />
printf( "Comida Preferida: %s\n", (*El).ComidaPreferida ); <br />
printf( "Profesión: %s\n", (*El).Profesion ); <br />
printf( "Ingreso Mensual: %.2f\n\n", (*El).IngresosMensual ); <br />
<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<pre><br />
pointer: 0x7ffffaec23a0<br />
Nombre: Horacio<br />
Apellido: Villanueva<br />
Comida Preferida: salmon<br />
Profesión: Gigolo<br />
Ingreso Mensual: 58112.00<br />
<br />
pointer: 0x7ffffaec23f4<br />
Nombre: Rupert<br />
Apellido: Delgado<br />
Comida Preferida: menudo<br />
Profesión: Editor de Revistas<br />
Ingreso Mensual: 32400.00<br />
<br />
[rrc@llawyr CClase]$ <br />
</pre><br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog118&diff=5520
Curso de Programación en C/Prog118
2014-06-04T22:32:50Z
<p>Perseuz: /* Prog118 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog118 | Arreglos de structs]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog118 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <string.h><br />
<br />
#define MAXTITL 40<br />
#define MAXAUTL 40<br />
#define MAXVALL 12<br />
#define MAXLIBROS 100<br />
<br />
struct Libro {<br />
char Titulo[MAXTITL];<br />
char Autor[MAXAUTL];<br />
float Valor;<br />
};<br />
<br />
int main( void )<br />
{<br />
struct Libro Biblioteca[MAXLIBROS];<br />
int Conteo = 0,<br />
Index,<br />
NumPuntos,<br />
i;<br />
char ValSTR[MAXVALL];<br />
<br />
printf( "Ingresa el nombre del libro: " );<br />
while( Conteo < MAXLIBROS )<br />
{<br />
if( fgets( Biblioteca[Conteo].Titulo, MAXTITL - 2, stdin ) &&<br />
Biblioteca[Conteo].Titulo[0] != '\n' )<br />
{<br />
if( *(Biblioteca[Conteo].Titulo +<br />
strlen( Biblioteca[Conteo].Titulo ) -1 ) != '\n' )<br />
{<br />
printf( "El titulo que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", MAXTITL - 2 );<br />
exit(1);<br />
}<br />
<br />
*(Biblioteca[Conteo].Titulo +<br />
strlen( Biblioteca[Conteo].Titulo ) -1 ) = '\0';<br />
}<br />
else<br />
break;<br />
<br />
printf( "Ingresa el nombre del autor: " );<br />
if( fgets( Biblioteca[Conteo].Autor, MAXAUTL - 2, stdin ) &&<br />
Biblioteca[Conteo].Autor[0] != '\n' )<br />
{<br />
if( *(Biblioteca[Conteo].Autor +<br />
strlen( Biblioteca[Conteo].Autor ) -1 ) != '\n' )<br />
{<br />
printf( "El autor que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", MAXAUTL - 2 );<br />
exit(1);<br />
}<br />
<br />
*(Biblioteca[Conteo].Autor +<br />
strlen( Biblioteca[Conteo].Autor ) -1 ) = '\0';<br />
}<br />
else<br />
{<br />
printf( "Faltan el nombre del autor de \"%s\"\n",<br />
Biblioteca[Conteo].Titulo );<br />
exit(1);<br />
}<br />
<br />
NumPuntos = 0;<br />
printf( "Ingresa el valor: " );<br />
if( fgets( ValSTR, MAXVALL - 2, stdin ) && ValSTR[0] != '\n' )<br />
{<br />
if( *(ValSTR + strlen( ValSTR ) -1 ) != '\n' )<br />
{<br />
printf( "El valor que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", MAXVALL - 2 );<br />
exit(1);<br />
}<br />
<br />
*(ValSTR + strlen( ValSTR ) -1 ) = '\0';<br />
<br />
if( ValSTR[0] == '-' )<br />
{<br />
puts( "No se permiten valores negativos." );<br />
exit(1);<br />
}<br />
<br />
for( i = 0; i < strlen( ValSTR ) - 1; i++ )<br />
{<br />
if( ValSTR[i] < '0' || ValSTR[i] > '9' )<br />
{<br />
if( ValSTR[i] == '.' )<br />
{<br />
if( ++NumPuntos > 1 )<br />
{<br />
fprintf( stderr, "Se permite solo 1 punto.\n" );<br />
exit(1);<br />
}<br />
<br />
if( strlen( ValSTR ) - i > 3 )<br />
{<br />
puts( "Se permiten solo 2 decimales después del punto." );<br />
exit(1);<br />
}<br />
}<br />
else<br />
{<br />
puts( "Caracteres ilegales en su valor." );<br />
exit(1);<br />
}<br />
}<br />
}<br />
<br />
Biblioteca[Conteo++].Valor = atof( ValSTR );<br />
}<br />
else<br />
{<br />
printf( "Faltan el valor de \"%s\"\n", Biblioteca[Conteo].Titulo );<br />
exit(1);<br />
}<br />
<br />
if( Conteo < MAXLIBROS )<br />
printf( "Ingresa el siguiente titulo: (<Enter> para terminar): " );<br />
}<br />
<br />
if (Conteo > 0)<br />
{<br />
puts( "Aquí está la lista de tus libros:" );<br />
for (Index = 0; Index < Conteo; Index++)<br />
printf( "\t\"%s\" por \"%s\": $%.2f\n", Biblioteca[Index].Titulo,<br />
Biblioteca[Index].Autor, Biblioteca[Index].Valor);<br />
}<br />
else<br />
puts( "Lo siento pero no tengo libros para mostrar." );<br />
<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<pre><br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog118 Prog118.c<br />
[rrc@llawyr CClase]$ ./Prog118<br />
Ingresa el nombre del libro: <br />
Lo siento pero no tengo libros para mostrar.<br />
[rrc@llawyr CClase]$ ./Prog118<br />
Ingresa el nombre del libro: Libro 118<br />
Ingresa el nombre del autor: <br />
Faltan el nombre del autor de "Libro 118"<br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog118 Prog118.c<br />
[rrc@llawyr CClase]$ ./Prog118<br />
Ingresa el nombre del libro: Libro 1<br />
Ingresa el nombre del autor: Autor 1<br />
Ingresa el valor: <br />
Faltan el valor de "Libro 1"<br />
[rrc@llawyr CClase]$ ./Prog118<br />
Ingresa el nombre del libro: Libro 1<br />
Ingresa el nombre del autor: Autor 1<br />
Ingresa el valor: 34<br />
Ingresa el siguiente titulo: (<Enter> para terminar): <br />
Aquí está la lista de tus libros:<br />
"Libro 1" por "Autor 1": $34.00<br />
[rrc@llawyr CClase]$ ./Prog118<br />
Ingresa el nombre del libro: Libro 1<br />
Ingresa el nombre del autor: Autor 1<br />
Ingresa el valor: 45.33<br />
Ingresa el siguiente titulo: (<Enter> para terminar): Libro 2<br />
Ingresa el nombre del autor: Autor 2<br />
Ingresa el valor: 53<br />
Ingresa el siguiente titulo: (<Enter> para terminar): <br />
Aquí es la lista de sus libros:<br />
"Libro 1" por "Autor 1": $45.33<br />
"Libro 2" por "Autor 2": $53.00<br />
[rrc@llawyr CClase]$ <br />
</pre><br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog117&diff=5518
Curso de Programación en C/Prog117
2014-06-04T15:13:29Z
<p>Perseuz: /* Prog117 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog117 | struct]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog117 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <string.h><br />
<br />
#define MAXTITL 41<br />
#define MAXAUTL 31<br />
#define MAXVALL 10<br />
<br />
<br />
struct Libro<br />
{<br />
char Titulo[MAXTITL];<br />
char Autor[MAXAUTL];<br />
float Valor;<br />
};<br />
<br />
int main( void )<br />
{<br />
int i;<br />
char ValSTR[MAXVALL + 1];<br />
struct Libro Biblio;<br />
<br />
printf( "Ingresa el nombre del libro: " );<br />
<br />
<br />
fgets( Biblio.Titulo, MAXTITL - 2, stdin );<br />
<br />
if( *(Biblio.Titulo + strlen( Biblio.Titulo ) -1 ) != '\n' )<br />
{<br />
printf( "El nombre que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", MAXTITL - 2 );<br />
exit(1);<br />
}<br />
else<br />
*(Biblio.Titulo + strlen( Biblio.Titulo ) -1 ) = '\0'; <br />
<br />
printf( "Ingresa el nombre del autor: " );<br />
<br />
fgets( Biblio.Autor, MAXAUTL - 2, stdin );<br />
<br />
if( *(Biblio.Autor + strlen( Biblio.Autor ) -1 ) != '\n' )<br />
{<br />
printf( "El nombre que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", MAXAUTL - 2 );<br />
exit(1);<br />
}<br />
else<br />
*(Biblio.Autor + strlen( Biblio.Autor ) -1 ) = '\0'; <br />
<br />
printf( "Ingresa el valor: " );<br />
scanf( "%10s", ValSTR );<br />
<br />
if( strlen( ValSTR ) > MAXVALL -1 )<br />
{<br />
printf( "El valor que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", MAXVALL - 1 );<br />
exit(1);<br />
}<br />
<br />
if( ValSTR[0] == '-' )<br />
{<br />
puts( "No se permiten valores negativos." );<br />
exit(1);<br />
}<br />
<br />
for( i = 0; i < strlen( ValSTR ) - 1; i++ )<br />
{<br />
if( ValSTR[i] < '0' || ValSTR[i] > '9' )<br />
{<br />
if( ValSTR[i] == '.' )<br />
{<br />
if( strlen( ValSTR ) - i > 3 )<br />
{<br />
puts( "Se permiten solo 2 decimales después del punto." );<br />
exit(1);<br />
}<br />
}<br />
else<br />
{<br />
puts( "Caracteres ilegales en su valor." );<br />
exit(1);<br />
}<br />
}<br />
}<br />
<br />
Biblio.Valor = atof( ValSTR );<br />
<br />
printf( "%s por %s: $%.2f\n", Biblio.Titulo,<br />
Biblio.Autor, Biblio.Valor );<br />
printf( "%s: \"%s\" ($%.2f)\n", Biblio.Autor,<br />
Biblio.Titulo, Biblio.Valor );<br />
printf( "Listo.\n" );<br />
<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<pre><br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog117 Prog117.c<br />
[rrc@llawyr CClase]$ ./Prog117<br />
Ingresa el nombre del libro: Mi Libro<br />
Ingresa el nombre del autor: El Autor<br />
Ingresa el valor: 345<br />
Mi Libro por El Autor: $345.00<br />
El Autor: "Mi Libro" ($345.00)<br />
Listo.<br />
[rrc@llawyr CClase]$ ./Prog117<br />
Ingresa el nombre del libro: Mi Otro Libro<br />
Ingresa el nombre del autor: El otro Autor<br />
Ingresa el valor: -34.56<br />
Se permiten valores negativos.<br />
[rrc@llawyr CClase]$ ./Prog117<br />
Ingresa el nombre del libro: Un Otro Libro<br />
Ingresa el nombre del autor: Un Otro Auto<br />
Ingresa el valor: 4567543.34<br />
El valor que entraste es demasiado largo.<br />
Solo 9 chars MAX<br />
[rrc@llawyr CClase]$ ./Prog117<br />
Ingresa el nombre del libro: Otro Libro<br />
Ingresa el nombre del autor: Otro Autor<br />
Ingresa el valor: 34566.456<br />
Se permiten solo 2 numerales después del punto.<br />
[rrc@llawyr CClase]$ ./Prog117<br />
Ingresa el nombre del libro: Otro Libro<br />
Ingresa el nombre del autor: Otra Autora<br />
Ingresa el valor: 345r.56<br />
Caracteres ilegales en su valor.<br />
[rrc@llawyr CClase]$ ./Prog117<br />
Ingresa el nombre del libro: Ultimo Libro<br />
Ingresa el nombre del autor: Ultimo Autor<br />
Ingresa el valor: 435456.43<br />
Ultimo Libro por Ultimo Autor: $435456.44<br />
Ultimo Autor: "Ultimo Libro" ($435456.44)<br />
Listo.<br />
[rrc@llawyr CClase]$ <br />
</pre><br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog115&diff=5515
Curso de Programación en C/Prog115
2014-06-04T03:16:40Z
<p>Perseuz: /* Prog115 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog115 | fopen con "a", setvbuf() y ferror() ]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog115 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <string.h><br />
<br />
#define BUFTAMANO 1024<br />
#define STROZO 81<br />
<br />
void append( FILE *Fuente, FILE *dest );<br />
<br />
int main( void )<br />
{<br />
FILE *ADest,<br />
*AFuente;<br />
<br />
int Archivos = 0;<br />
<br />
char ArchivoDestino[STROZO], // Nombre de archivo de fuente<br />
ArchivoFuente[STROZO]; // Nombre de archivo de destino<br />
<br />
printf( "Ingresa el nombre del archivo de destino: " );<br />
fgets( ArchivoDestino, STROZO - 2, stdin );<br />
<br />
if( *(ArchivoDestino + strlen( ArchivoDestino ) -1 ) != '\n' )<br />
{<br />
printf( "El nombre que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", STROZO - 2 );<br />
exit(1);<br />
}<br />
else<br />
*(ArchivoDestino + strlen( ArchivoDestino ) -1 ) = '\0'; <br />
<br />
if( ( ADest = fopen( ArchivoDestino, "a" ) ) == NULL )<br />
{<br />
fprintf( stderr, "No puedo abrir %s\n", ArchivoDestino );<br />
exit( 2 );<br />
}<br />
<br />
if( setvbuf( ADest, NULL, _IOFBF, BUFTAMANO ) != 0 )<br />
{<br />
fputs( "No puedo crear el buffer de salida\n", stderr );<br />
exit( 3 );<br />
}<br />
<br />
puts( "Ingresa el nombre del primer archivo de fuente (Línea vacio para terminar):" );<br />
while( fgets( ArchivoFuente, STROZO - 2, stdin ) && ArchivoFuente[0] != '\n' )<br />
{<br />
if( *(ArchivoFuente + strlen( ArchivoFuente ) -1 ) != '\n' )<br />
{<br />
printf( "El nombre que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", STROZO - 2 );<br />
exit(1);<br />
}<br />
else<br />
*(ArchivoFuente + strlen( ArchivoFuente ) -1 ) = '\0'; <br />
<br />
if( strcmp( ArchivoFuente, ArchivoDestino ) == 0 )<br />
fputs( "No puedo usar el mismo archivo por fuente y destino\n", stderr );<br />
else if( ( AFuente = fopen( ArchivoFuente, "r" ) ) == NULL )<br />
fprintf( stderr, "No puedo abrir %s\n", ArchivoFuente );<br />
else<br />
{<br />
if( setvbuf( AFuente, NULL, _IOFBF, BUFTAMANO ) != 0 )<br />
{<br />
fputs( "No puedo crear el buffer de ingreso\n", stderr );<br />
continue;<br />
}<br />
append( AFuente, ADest );<br />
if( ferror( AFuente ) != 0 )<br />
fprintf( stderr, "Error en leer el archivo %s.\n", ArchivoFuente );<br />
if( ferror( ADest ) != 0 )<br />
fprintf( stderr, "Error in escribir el archivo file %s.\n", ArchivoDestino );<br />
fclose( AFuente );<br />
Archivos++;<br />
printf( "Archivo %s agregado.\n", ArchivoFuente );<br />
puts( "Siguiente archivo (Línea vacio para terminar):" );<br />
}<br />
}<br />
printf( "Listo. %d archivos agregados.\n", Archivos );<br />
fclose( ADest );<br />
<br />
return 0;<br />
}<br />
<br />
void append( FILE *Fuente, FILE *dest )<br />
{<br />
size_t bytes;<br />
static char temp[BUFTAMANO]; // allocate once<br />
while( ( bytes = fread( temp, sizeof( char ), BUFTAMANO, Fuente ) ) > 0 )<br />
fwrite( temp, sizeof (char), bytes, dest );<br />
}<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<pre><br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog115 Prog115.c<br />
[rrc@llawyr CClase]$ ./Prog115<br />
Ingresa el nombre del archivo de destino: Dest<br />
Ingresa el nombre del primer archivo de fuente (Línea vacio a terminar):<br />
Prog1.c<br />
Archivo Prog1.c agregado.<br />
Siguiente archivo (Línea vacio para terminar):<br />
Prog2.c<br />
Archivo Prog2.c agregado.<br />
Siguiente archivo (Línea vacio para terminar):<br />
Prog3.c<br />
Archivo Prog3.c agregado.<br />
Siguiente archivo (Línea vacio para terminar):<br />
<br />
Listo. 3 archivos agregados.<br />
[rrc@llawyr CClase]$ cat Dest<br />
/* Prog4.c -- Asignación de resultados aritméticos */<br />
#include <stdio.h><br />
<br />
int main( void )<br />
{<br />
int n = 5,<br />
n2 = n * n,<br />
n3 = n2 * n; /* decleración y asignación de resultado de multiplicación */<br />
<br />
printf( "n = %d, n cuadrado = %d, n cubo = %d\n", n, n2, n3 );<br />
return 0;<br />
}<br />
/* Prog5.c -- floats y scanf() */<br />
<br />
#include <stdio.h><br />
<br />
int main(void)<br />
{<br />
float peso; <br />
<br />
printf("¿Vale usted su peso en rhodium?\n");<br />
printf("Vamos a ver.\n");<br />
printf("Ingrese su peso en libras: ");<br />
<br />
/* Obtener peso del usuario */<br />
scanf("%f", &peso);<br />
<br />
/* Si rhodium vale $770 el once */<br />
/* 14.5833 para convertir pounds avd. a ounces troy */<br />
<br />
printf("Su peso en rhodium vale $%.2f.\n", (770.0 * peso * 14.5833) );<br />
printf("Si el valor de rhodium baja,\n");<br />
printf("come más a mantener su valor.\n");<br />
<br />
return 0;<br />
}<br />
<br />
<br />
// Prog1.c<br />
#include <stdio.h><br />
<br />
int main(void) /* Un programa simple */<br />
{<br />
int num; /* definir una variable llamada num */<br />
num = 1; /* asignar una valor a num */<br />
<br />
printf("Soy una computadora "); /* use the printf() function */<br />
printf("simple.\n");<br />
printf("Mi número favorito es %d porque el es el primer.\n", num);<br />
return 0;<br />
}<br />
<br />
/* Prog2.c */<br />
<br />
#include <stdio.h><br />
<br />
int main (void)<br />
{<br />
int fathoms = 2,<br />
feet = 6 * fathoms;<br />
<br />
printf("Son %d pies en %d fathoms!\n", feet, fathoms);<br />
return 0;<br />
}<br />
<br />
// Prog3.c<br />
#include <stdio.h><br />
<br />
void macero( void ); /* Prototipo de la función macero() */<br />
<br />
int main(void)<br />
{ <br />
printf( "Voy a convocar el macero.\n" );<br />
macero();<br />
printf( "Si. Me traen algunos DVDs grabables y té.\n" );<br />
return 0;<br />
}<br />
<br />
void macero(void) /* Definición de la función macero() */<br />
{<br />
printf( "Me llamaste, señor?\n" );<br />
} <br />
[rrc@llawyr CClase]$ <br />
</pre><br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog114&diff=5513
Curso de Programación en C/Prog114
2014-06-03T20:16:56Z
<p>Perseuz: /* Prog114 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog114 | fseek(), ftell() y fopen con "rb" ]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog114 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <string.h><br />
<br />
#define CNTL_Z '\032' /* eof marker in DOS text files */<br />
#define SLEN 50<br />
<br />
int main( void )<br />
{<br />
char file[SLEN],<br />
ch;<br />
<br />
FILE *fp;<br />
<br />
long count,<br />
last;<br />
<br />
printf( "Escribe el nombre del archivo a usar: ");<br />
fgets( file, SLEN - 2, stdin );<br />
<br />
if( *(file + strlen( file ) -1 ) != '\n' )<br />
{<br />
printf( "El nombre que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", SLEN - 2 );<br />
exit(1);<br />
}<br />
else<br />
*(file + strlen( file ) -1 ) = '\0'; <br />
<br />
if( ( fp = fopen( file, "rb" ) ) == NULL )<br />
{<br />
printf( "No puedo abrir el archivo %s\n", file );<br />
exit( 1 );<br />
}<br />
<br />
fseek( fp, 0L, SEEK_END );<br />
last = ftell( fp );<br />
<br />
for( count = 1L; count <= last; count++ )<br />
{<br />
fseek( fp, -count, SEEK_END ); /* Leer en reversa SEEK_CUR SEEK_SET */<br />
ch = getc( fp );<br />
if( ch != CNTL_Z && ch != '\r' )<br />
putchar( ch );<br />
}<br />
<br />
putchar( '\n' );<br />
fclose( fp );<br />
<br />
return 0;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<pre><br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog114 Prog114.c<br />
[rrc@llawyr CClase]$ ./Prog114<br />
Escribe el nombre del archivo a usar: MiArchivo <br />
No puedo abrir el archivo MiArchivo<br />
[rrc@llawyr CClase]$ ./Prog114<br />
Escribe el nombre del archivo a usar: Prog1.c<br />
<br />
<br />
}<br />
;0 nruter <br />
;)mun ,"n\.remirp le se le euqrop d% se otirovaf orem��n iM"(ftnirp <br />
;)"n\.elpmis"(ftnirp <br />
/* noitcnuf )(ftnirp eht esu */ ;)" arodatupmoc anu yoS"(ftnirp <br />
<br />
/* mun a rolav anu rangisa */ ;1 = mun <br />
/* mun adamall elbairav anu rinifed */ ;mun tni <br />
{<br />
/* elpmis amargorp nU */ )diov(niam tni<br />
<br />
>h.oidts< edulcni#<br />
</pre><br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog113&diff=5512
Curso de Programación en C/Prog113
2014-06-03T16:34:33Z
<p>Perseuz: /* Prog113 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog113 | fgets() y fputs()]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog113 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
#include <stdio.h><br />
<br />
#define MAXLINEA 20<br />
<br />
int main(void)<br />
{<br />
char Linea[MAXLINEA];<br />
<br />
while( fgets( Linea, MAXLINEA - 1, stdin ) != NULL && Linea[0] != '\n' )<br />
fputs( Linea, stdout );<br />
<br />
return 0;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<pre><br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog113 Prog113.c<br />
[rrc@llawyr CClase]$ ./Prog113<br />
Aquí podemos ver que la combinación de fputs() y fgets() sirven bien.<br />
Aquí podemos ver que la combinación de fputs() y fgets() sirven bien.<br />
El fgets() guarda el retorno de carro y el fputs() no agrega un returno de carro al fin.<br />
El fgets() guarda el retorno de carro y el fputs() no agrega un returno de carro al fin.<br />
<br />
[rrc@llawyr CClase]$ <br />
</pre><br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog112&diff=5511
Curso de Programación en C/Prog112
2014-06-03T16:18:25Z
<p>Perseuz: /* Prog112 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog112 | fopen() con a+ y rewind()]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog112 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
#include <stdlib.h><br />
<br />
#define MAX 40<br />
<br />
int main( void )<br />
{<br />
FILE *fp;<br />
<br />
char Palabras[MAX];<br />
<br />
if( ( fp = fopen( "Palabras", "a+" ) ) == NULL )<br />
{<br />
fprintf( stderr, "No puedo abrir \"Palabras\" archivo.\n");<br />
exit(1);<br />
}<br />
<br />
puts( "Ingresa las palabras que quieres agregar en el archivo." );<br />
puts( "Retorno de carrito al inicio de la línea para terminar" );<br />
<br />
while( gets( Palabras ) != NULL && Palabras[0] != '\0' )<br />
fprintf( fp, "%s ", Palabras );<br />
<br />
puts( "Contenidos del archivo:" );<br />
rewind( fp );<br />
<br />
while( fscanf( fp, "%s", Palabras ) == 1 )<br />
puts( Palabras );<br />
<br />
if( fclose( fp ) != 0 )<br />
{<br />
fprintf( stderr, "Error: No puedo cerrar el archivo\n" );<br />
exit(1);<br />
}<br />
return 0;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<pre><br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog112 Prog112.c<br />
[rrc@llawyr CClase]$ ./Prog112<br />
Ingresa las palabras que quieres agregar en el archivo.<br />
Retorno de carrito al inicio de la línea para terminar<br />
Son mis palabras<br />
<br />
Contenidos del archivo:<br />
Son<br />
mis<br />
palabras<br />
[rrc@llawyr CClase]$ ./Prog112<br />
Ingreso las palabras que quieres agregar en el archivo.<br />
Retorno de carrito al inicio de la línea a terminar<br />
Son más de mis palabras<br />
<br />
Contenidos del archivo:<br />
Son<br />
mis<br />
palabras<br />
Son<br />
más<br />
de<br />
mis<br />
palabras<br />
[rrc@llawyr CClase]$ <br />
</pre><br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog82&diff=5508
Curso de Programación en C/Prog82
2014-06-03T15:10:31Z
<p>Perseuz: /* Explicación */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog82 | fgets()]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog82 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#includ#include <stdio.h><br />
<br />
#define MAX 5<br />
<br />
int main( void )<br />
{<br />
char nombre[MAX];<br />
char * ptr;<br />
<br />
printf( "Hola, cómo se llama usted?\n" );<br />
<br />
ptr = fgets( nombre, MAX, stdin );<br />
printf( "%s? Ah! %s!\n", nombre, ptr );<br />
<br />
return 0;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog82 Prog82.c<br />
[rrc@llawyr CClase]$ ./Prog82<br />
Hola, cómo se llama usted?<br />
Richard<br />
Richard<br />
? Ah! Richard<br />
!<br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]<br />
Ver una explicación detallada de la función en https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Manejo_de_archivos#fgets</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Mode_Strings_De_fopen()&diff=5507
Curso de Programación en C/Mode Strings De fopen()
2014-06-02T21:45:25Z
<p>Perseuz: /* Mode Strings De fopen() */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Mode Strings De fopen() | Mode Strings De fopen()]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Mode Strings De fopen() ==<br />
<br />
<table cellpadding="1" cellspacing="12"><br />
<tr><br />
<th>String</th><th>Explicación</th><br />
</tr><br />
<tr style=text-align:center;><br />
<td>"r"</td><td>Abrir archivo de texto para leer</td><br />
</tr><br />
<tr style=text-align:center;><br />
<td>"w"</td><td>Abrir un archivo de texto para escribir.<br />Si existe el archivo se trunca.<br />Si el archivo no existe, se crea.</td><br />
</tr><br />
<tr style=text-align:center;><br />
<td>"a"</td><td>Abrir un archivo de texto para escribir al final del archivo.<br />Si el archivo no existe, se crea.</td><br />
</tr><br />
<tr style=text-align:center;><br />
<td>"r+"</td><td>Abrir un archivo de texto para leer y para escribir.<br />No se borran los contenidos del archivo si existe.<br />Si el archivo no existe, se crea.</td><br />
</tr><br />
<tr style=text-align:center;><br />
<td>"w+"</td><td>Abrir un archivo de texto para leer y para escribir.<br />Se borran todos los contenidos del archivo si existe.<br />Si el archivo no existe, se crea.</td><br />
</tr><br />
<tr style=text-align:center;><br />
<td>"a+"</td><td>Como "r+" pero escribir se permite solo al final del archivo</td><br />
</tr><br />
<tr style=text-align:center;><br />
<td>"rb", "wb", "ab"<br />"ab+", "a+b", "wb+"<br />"w+b", "ab+", "a+b"</td><td>Como los anteriores pero en modo binario</td><br />
</tr><br />
</table><br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog109&diff=5506
Curso de Programación en C/Prog109
2014-06-02T19:33:17Z
<p>Perseuz: /* Prog109 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog109 | malloc(), free(), exit() & strtod()]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog109 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
#include <stdlib.h> /* for malloc(), free() */<br />
#include <string.h><br />
<br />
int main( void )<br />
{<br />
double * ptd;<br />
<br />
char NumSTR[10];<br />
<br />
char * endptr;<br />
<br />
int i = 0,<br />
Max,<br />
NumCharsLeidos,<br />
NumEntradas,<br />
NumPuntos,<br />
NumValidosChars,<br />
Numero;<br />
<br />
printf( "¿Cuál es el máximo número de dobles que vamos a guardar? " );<br />
<br />
fgets( NumSTR, 4, stdin );<br />
NumValidosChars = 0;<br />
if( ( NumCharsLeidos = strlen( NumSTR ) ) > 4 )<br />
{<br />
puts( "Entrada ¡INVALIDO!\nDebe ser menor que 99" );<br />
exit( 1 );<br />
}<br />
<br />
if( NumSTR[0] == '0' )<br />
{<br />
puts( "Debemos guardar un mínimo de 1 double" );<br />
exit( 1 );<br />
}<br />
<br />
if( *(NumSTR + NumCharsLeidos - 1) != '\n' )<br />
{<br />
puts( "Entrada ¡INVALIDO!\nDebe ser menor que 99" );<br />
exit( 1 );<br />
}<br />
else<br />
*(NumSTR + NumCharsLeidos - 1) = '\0';<br />
<br />
for( i = 0; i < NumCharsLeidos -1; i++ )<br />
if( ( *(NumSTR + i ) >= '0' && *(NumSTR + i ) <= '9' ) )<br />
NumValidosChars++;<br />
<br />
if( NumCharsLeidos == 1 || NumValidosChars != NumCharsLeidos - 1 )<br />
{<br />
puts( "Entrada ¡INVALIDO!" );<br />
exit( 1 );<br />
}<br />
Max = atoi( NumSTR );<br />
<br />
ptd = (double *)malloc( Max * sizeof( double ) );<br />
<br />
if( ptd == NULL )<br />
{<br />
puts( "Falló la asignación de memoria. Adiós." );<br />
exit( EXIT_FAILURE );<br />
}<br />
<br />
puts( "Ingresa los dobles (q para terminar):" );<br />
<br />
NumEntradas = 0;<br />
<br />
while( ( NumEntradas < Max ) && fgets( NumSTR, 8, stdin ) )<br />
{<br />
NumValidosChars = 0;<br />
NumCharsLeidos = strlen( NumSTR );<br />
<br />
if( NumSTR[0] == 'q' && NumCharsLeidos == 2 )<br />
break;<br />
<br />
if( *(NumSTR + NumCharsLeidos - 1) != '\n' )<br />
{<br />
puts( "Entrada ¡INVALIDO! (Tan Grande - No más que 6 chars)" );<br />
while( getchar() != '\n' );<br />
puts( "Ingresa los dobles:" );<br />
continue;<br />
}<br />
else<br />
*(NumSTR + NumCharsLeidos - 1) = '\0';<br />
<br />
NumPuntos = 0;<br />
<br />
for( i = 0; i < NumCharsLeidos -1; i++ )<br />
if( ( *(NumSTR + i ) >= '0' && *(NumSTR + i ) <= '9' ) ||<br />
( *(NumSTR) == '-' && i == '0' ) ||<br />
( *(NumSTR + i ) == '.' && ++NumPuntos < 2 ) )<br />
NumValidosChars++;<br />
<br />
if( NumCharsLeidos == 1 || NumValidosChars != NumCharsLeidos - 1 )<br />
{<br />
puts( "Entrada ¡INVALIDO!" );<br />
puts( "Ingresa los dobles:" );<br />
continue;<br />
}<br />
ptd[NumEntradas++] = strtod( NumSTR, &endptr );<br />
}<br />
<br />
printf( "\nAquí son sus %d dobles:\n", Numero = NumEntradas );<br />
<br />
for( i = 0; i < Numero; i++ )<br />
{<br />
printf("%7.2f ", ptd[i]);<br />
<br />
if( i % 7 == 6 )<br />
putchar( '\n' );<br />
}<br />
<br />
if( i % 7 != 0 )<br />
putchar( '\n' );<br />
<br />
puts("¡Listo!");<br />
free(ptd);<br />
<br />
return 0;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<pre> <br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog109 Prog109.c <br />
[rrc@llawyr CClase]$ ./Prog109<br />
¿Cuál es el máximo número de dobles que vamos a guardar? 25<br />
Ingresa los dobles (q para terminar):<br />
q<br />
<br />
Aquí son sus 0 dobles:<br />
¡Listo!<br />
[rrc@llawyr CClase]$ ./Prog109<br />
¿Cuál es el máximo número de dobles que vamos a guardar? 25<br />
Ingresa los dobles (q para terminar):<br />
23<br />
-23<br />
23.456<br />
-23.456<br />
Entrada ¡INVALIDO! (Tan Grande - No más que 6 chars)<br />
Ingresa los dobles:<br />
-23.45<br />
123456<br />
-123456<br />
Entrada ¡INVALIDO! (Tan Grande - No más que 6 chars)<br />
Ingresa los dobles:<br />
-12345<br />
<br />
Entrada ¡INVALIDO!<br />
Ingresa los dobles:<br />
<br />
Entrada ¡INVALIDO!<br />
Ingresa los dobles:<br />
quit<br />
Entrada ¡INVALIDO!<br />
Ingresa los dobles:<br />
8765.2<br />
45.67<br />
-53.4.4<br />
Entrada ¡INVALIDO! (Tan Grande - No más que 6 chars)<br />
Ingresa los dobles:<br />
5.3.2<br />
Entrada ¡INVALIDO!<br />
Ingresa los dobles:<br />
54-3 <br />
Entrada ¡INVALIDO!<br />
Ingresa los dobles:<br />
66<br />
q<br />
<br />
Aquí son sus 9 dobles:<br />
23.00 -23.00 23.46 -23.45 123456.00 -12345.00 8765.20 <br />
45.67 66.00 <br />
¡Listo!<br />
</pre><br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog105&diff=5495
Curso de Programación en C/Prog105
2014-06-01T15:12:57Z
<p>Perseuz: /* Prog105 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog105 | Multiples Archivos]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog105 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
//Archivo Prog105a.c<br />
#include <stdio.h><br />
<br />
void InformeDelConteo( void );<br />
extern void acumularse( int );<br />
<br />
int Contar = 0;<br />
<br />
int main(void)<br />
{<br />
int Valor;<br />
register int i;<br />
<br />
printf( "Ingresa un número entero positivo (0 a terminar): " );<br />
<br />
while( scanf( "%d", &Valor ) == 1 && Valor > 0 ) // mientras que scanf() lea un dato y este sea positivo<br />
{<br />
++Contar;<br />
<br />
for( i = Valor; i >= 0; i-- )<br />
acumularse(i);<br />
printf( "Ingresa un número entero positivo (0 a terminar): ");<br />
}<br />
InformeDelConteo(); // scanf() recibe un dato negativo o cero<br />
<br />
return 0;<br />
}<br />
<br />
void InformeDelConteo( void )<br />
{<br />
printf( "El while loop fue ejecutado %d veces\n", Contar );<br />
}<br />
<br />
// Archivo Prog105b.c<br />
#include <stdio.h><br />
<br />
extern int Contar; <br />
static int total = 0;<br />
<br />
void acumularse( int k )<br />
{<br />
static int subtotal = 0;<br />
<br />
if( k <= 0 )<br />
{<br />
printf( "ciclo de loop: %d\n", Contar );<br />
printf( "subtotal: %d; total: %d\n", subtotal, total );<br />
subtotal = 0;<br />
}<br />
else<br />
{<br />
subtotal += k;<br />
total += k;<br />
}<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<pre> <br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog105 Prog105a.c Prog105b.c <br />
[rrc@llawyr CClase]$ ./Prog105<br />
Ingresa un númenro entero positivo (0 a terminar): 1<br />
ciclo de loop: 1<br />
subtotal: 1; total: 1<br />
Ingresa un númenro entero positivo (0 a terminar): 1<br />
ciclo de loop: 2<br />
subtotal: 1; total: 2<br />
Ingresa un númenro entero positivo (0 a terminar): 2<br />
ciclo de loop: 3<br />
subtotal: 3; total: 5<br />
Ingresa un númenro entero positivo (0 a terminar): 2<br />
ciclo de loop: 4<br />
subtotal: 3; total: 8<br />
Ingresa un númenro entero positivo (0 a terminar): 3<br />
ciclo de loop: 5<br />
subtotal: 6; total: 14<br />
Ingresa un númenro entero positivo (0 a terminar): 3<br />
ciclo de loop: 6<br />
subtotal: 6; total: 20<br />
Ingresa un númenro entero positivo (0 a terminar): 4<br />
ciclo de loop: 7<br />
subtotal: 10; total: 30<br />
Ingresa un númenro entero positivo (0 a terminar): 0<br />
El while loop fue ejecutado 7 veces<br />
[rrc@llawyr CClase]$ <br />
</pre><br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog68&diff=5491
Curso de Programación en C/Prog68
2014-05-30T16:05:02Z
<p>Perseuz: /* Prog68 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog68 | Más restricciónes locales]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog68 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
<br />
void intercambio( int u, int v );<br />
<br />
int main( void )<br />
{<br />
int x = 5,<br />
y = 10;<br />
<br />
printf( "Originalmente x = %d e y = %d.\n", x , y );<br />
intercambio( x, y );<br />
printf( "En main(), Después de intercambio( x, y ) x = %d e y = %d.\n",<br />
x, y );<br />
<br />
return 0;<br />
}<br />
<br />
void intercambio( int u, int v )<br />
{<br />
int temp;<br />
<br />
printf( "Inicialmente en intercambio u = %d y v = %d.\n", u , v );<br />
temp = u;<br />
u = v;<br />
v = temp;<br />
printf( "En intercambio(), Después de intercambiar u = %d y v = %d.\n",<br />
u, v );<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<br />
[rrc@Pridd CClase]$ gcc -Wall -O2 -o Prog68 Prog68.c<br />
[rrc@Pridd CClase]$ ./Prog68<br />
Originalmente x = 5 e y = 10.<br />
Inicialmente en intercambio u = 5 y v = 10.<br />
En intercambio(), Después de intercambiar u = 10 y v = 5.<br />
En main(), Después de intercambio( x, y ) x = 5 e y = 10.<br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog100&diff=5484
Curso de Programación en C/Prog100
2014-05-28T18:04:15Z
<p>Perseuz: /* Prog100 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog100 | strtol()]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog100 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <string.h><br />
<br />
int main( void )<br />
{<br />
char numero[30];<br />
char * Fin;<br />
long Valor;<br />
<br />
printf( "Ingresa un número (Returno de carro para terminar): " );<br />
<br />
while( fgets( numero, 29, stdin ) && numero[0] != '\n' )<br />
{<br />
*(numero + ( strlen( numero ) -1 )) = '\0';<br />
<br />
Valor = strtol( numero, &Fin, 10 ); /* base 10 */<br />
printf( "Valor: %ld, terminado a %s (%d)\n",<br />
Valor, Fin, *Fin );<br />
Valor = strtol( numero, &Fin, 16 ); /* base 16 */<br />
printf( "Valor: %ld, terminado a %s (%d)\n",<br />
Valor, Fin, *Fin );<br />
printf( "Siguiente numero: " );<br />
}<br />
puts( "\n¡Adios!\n" );<br />
return 0;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<pre><br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog100 Prog100.c<br />
[rrc@llawyr CClase]$ ./Prog100<br />
Ingresa un número (Returno de carro para terminar): 46<br />
Valor: 46, terminado a (0)<br />
Valor: 70, terminado a (0)<br />
Siguiente numero: 356.7<br />
Valor: 356, terminado a .7 (46)<br />
Valor: 854, terminado a .7 (46)<br />
Siguiente numero: -87<br />
Valor: -87, terminado a (0)<br />
Valor: -135, terminado a (0)<br />
Siguiente numero: 765iu45<br />
Valor: 765, terminado a iu45 (105)<br />
Valor: 1893, terminado a iu45 (105)<br />
Siguiente numero: <br />
Ingresa un número (Returno de carro para terminar): 24abcg<br />
Valor: 24, terminado a abcg (97)<br />
Valor: 150204, terminado a g (103)<br />
Siguiente numero: <br />
<br />
¡Adios!<br />
<br />
[rrc@llawyr CClase]$<br />
</pre><br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog89&diff=5478
Curso de Programación en C/Prog89
2014-05-21T16:23:50Z
<p>Perseuz: /* Prog89 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog89 | strcmp()]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog89 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
#include <string.h><br />
<br />
#define PAIS "India"<br />
<br />
void ObtenRespuesta( void );<br />
<br />
char respuesta[40];<br />
<br />
int main( void )<br />
{<br />
printf( "En que pais es el Taj Mahal? " );<br />
ObtenRespuesta();<br />
<br />
while( strcmp( respuesta, PAIS ) ) //strcmp(): Compara dos strings <br />
{<br />
printf( "No, incorrecto. Otra ves: " );<br />
ObtenRespuesta();<br />
}<br />
puts( "¡Correcto!" );<br />
<br />
return 0;<br />
}<br />
<br />
void ObtenRespuesta( void )<br />
{<br />
fgets( respuesta, 37, stdin );<br />
if( *(respuesta + strlen( respuesta ) - 1) == '\n' )<br />
*(respuesta + strlen( respuesta ) - 1) = '\0';<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog89 Prog89.c <br />
[rrc@llawyr CClase]$ ./Prog89<br />
En que pais es el Taj Mahal? Italia<br />
No, incorrecto. Otra ves: Grecia<br />
No, incorrecto. Otra ves: india<br />
No, incorrecto. Otra ves: India<br />
¡Correcto!<br />
[rrc@llawyr CClase]$ <br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog88&diff=5477
Curso de Programación en C/Prog88
2014-05-21T16:17:06Z
<p>Perseuz: /* Resultado */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog88 | Prog87 con fgets()]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog88 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
#include <string.h> /* para usar strcat() */<br />
<br />
#define TAMANO 80<br />
<br />
int main( void )<br />
{<br />
char flor[TAMANO],<br />
agregado[] = "s huelen como zapatos viejos.";<br />
<br />
printf( "¿Cuál es su flor preferida? " );<br />
fgets( flor, 51, stdin ); // char *fgets(char *s, int n, FILE *flujo): Toma un string<br />
// de un flujo<br />
*(flor + strlen( flor ) - 1 ) = '\0'; // strlen(): Calcula la longitud de un string<br />
strcat( flor, agregado );<br />
puts( flor );<br />
<br />
return 0;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog88 Prog88.c<br />
[rrc@llawyr CClase]$ ./Prog88<br />
¿Cuál es su flor preferida? Rosa<br />
Rosas huelen como zapatos viejos.<br />
[rrc@llawyr CClase]$<br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog87&diff=5475
Curso de Programación en C/Prog87
2014-05-21T16:12:37Z
<p>Perseuz: /* Prog87 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog87| strcat()]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog87 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
#include <string.h> /* para usar strcat() */<br />
<br />
#define TAMANO 80<br />
<br />
int main( void )<br />
{<br />
char flor[TAMANO],<br />
agregado[] = "s huelen como zapatos viejos.";<br />
<br />
printf( "¿Cuál es su flor preferida? " );<br />
gets( flor );<br />
strcat( flor, agregado ); //strcat() Añade un string a otro<br />
puts( flor );<br />
<br />
return 0;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog87 Prog87.c<br />
[rrc@llawyr CClase]$ ./Prog87<br />
¿Cuál es su flor preferida? Anthurium<br />
Anthuriums huelen como zapatos viejos.<br />
[rrc@llawyr CClase]$ <br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog77&diff=5472
Curso de Programación en C/Prog77
2014-05-20T01:26:46Z
<p>Perseuz: /* Resultado */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog77 | Arregle de tamaños variables]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog77 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
<br />
#define FILAS 3<br />
#define COLS 4<br />
<br />
int sum2d( int rows, int cols, int ar[rows][cols] );<br />
<br />
int main( void )<br />
{<br />
int cs = 10,<br />
i,<br />
j,<br />
junk[FILAS][COLS] = {<br />
{2,4,6,8},<br />
{3,5,7,9},<br />
{12,10,8,6}<br />
},<br />
masjunk[FILAS-1][COLS+2] = {<br />
{20,30,40,50,60,70},<br />
{5,6,7,8,9,10}<br />
},<br />
rs = 3,<br />
varr[rs][cs];<br />
<br />
for( i = 0; i < rs; i++ )<br />
for( j = 0; j < cs; j++ )<br />
varr[i][j] = i * j + j;<br />
<br />
printf( "3x5 arreglo\n" );<br />
printf( "Sum de todos los elementos = %d\n",<br />
sum2d( FILAS, COLS, junk ) );<br />
<br />
printf( "2x6 arreglo\n" );<br />
printf( "Sum de todos los elementos = %d\n",<br />
sum2d( FILAS-1, COLS+2, masjunk ) );<br />
<br />
printf( "3x10 VLA\n" );<br />
printf( "Sum de todos los elementos = %d\n",<br />
sum2d( rs, cs, varr ) );<br />
<br />
return 0;<br />
}<br />
<br />
int sum2d( int rows, int cols, int ar[rows][cols] )<br />
{<br />
int r;<br />
int c;<br />
int tot = 0;<br />
<br />
for( r = 0; r < rows; r++ )<br />
for( c = 0; c < cols; c++ )<br />
tot += ar[r][c];<br />
<br />
return tot;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<br />
[rrc@Pridd CClase]$ gcc -Wall -O2 -o Prog77 Prog77.c<br />
[rrc@Pridd CClase]$ ./Prog77<br />
3x5 arreglo<br />
Sum de todos los elementos = 80<br />
2x6 arreglo<br />
Sum de todos los elementos = 315<br />
3x10 VLA<br />
Sum de todos los elementos = 270<br />
[rrc@Pridd CClase]$ <br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]<br />
<br />
La asignación de los elementos del arreglo varr = [rs][cs] queda así:<br />
<br />
for( i = 0; i < rs; i++ )<br />
for( j = 0; j < cs; j++ )<br />
varr[i][j] = i * j + j;<br />
<br />
igual a:<br />
<br />
varr = [3][10] = { { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },{ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18 },{ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27 } }</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog66&diff=5433
Curso de Programación en C/Prog66
2014-05-10T18:09:47Z
<p>Perseuz: /* Explicación */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog66 | Función Recursivo]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog66 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
<br />
void a_binario( unsigned long n );<br />
<br />
int main( void )<br />
{<br />
unsigned long numero;<br />
printf( "Que intero quieres convertir en binario (q para terminar)? " );<br />
while( scanf( "%lu", &numero ) == 1 )<br />
{<br />
printf("Equivalente Binario: ");<br />
a_binario( numero );<br />
putchar( '\n' );<br />
putchar( '\n' );<br />
printf( "Que intero quieres convertir en binario (q para terminar)? " );<br />
}<br />
printf( "Listo.\n" );<br />
<br />
return 0;<br />
}<br />
<br />
void a_binario( unsigned long n )<br />
{<br />
int r;<br />
<br />
r = n % 2;<br />
if ( n >= 2 )<br />
a_binario( n / 2 );<br />
putchar( '0' + r );<br />
<br />
return;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<br />
[rrc@Pridd CClase]$ gcc -Wall -O2 -o Prog66 Prog66.c<br />
[rrc@Pridd CClase]$ ./Prog66<br />
Que intero quieres convertir en binario (q para terminar)? 1<br />
Equivalente Binario: 1<br />
<br />
Que intero quieres convertir en binario (q para terminar)? 2<br />
Equivalente Binario: 10<br />
<br />
Que intero quieres convertir en binario (q para terminar)? 3<br />
Equivalente Binario: 11<br />
<br />
Que intero quieres convertir en binario (q para terminar)? 4<br />
Equivalente Binario: 100<br />
<br />
Que intero quieres convertir en binario (q para terminar)? 5<br />
Equivalente Binario: 101<br />
<br />
Que intero quieres convertir en binario (q para terminar)? 55<br />
Equivalente Binario: 110111<br />
<br />
Que intero quieres convertir en binario (q para terminar)? 44444555<br />
Equivalente Binario: 10101001100010101110001011<br />
<br />
Que intero quieres convertir en binario (q para terminar)? q<br />
Listo.<br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]<br />
Ejemplo para el número 4: El truco está en seguir el flujo de control hasta volver a main(). Notece que la variable r de uno a otro bloque, aunque se llama igual no es la misma. Se crea en cada bloque, posee su propia dirección de memoria y no es sobreescrita por la calculada en otro bloque.<br />
<br />
n = 4: <-------- Viene de main()<br />
<br />
a_binario (4) --------> n = 4<br />
{<br />
int r;<br />
r = 4 % 2; --------> r = 0<br />
if (4 >= 2) <-- Verdadero<br />
<br />
a_binario (4/2) --------> n = 2<br />
{<br />
int r;<br />
r = 2 % 2; --------> r = 0<br />
if (2 >= 2) <-- Verdadero<br />
<br />
a_binario (2/2) --------> n = 1<br />
{<br />
int r;<br />
r = 1 % 2; --------> r = 1<br />
if (1 >= 2) <-- Falso<br />
putchar('0' + 1)--------> Imprime 1<br />
return;<br />
}<br />
<br />
putchar('0' + 0)--------> Imprime 0<br />
return;<br />
}<br />
<br />
putchar('0' + 0)--------> Imprime 0<br />
return;<br />
} <-------- Vuelve el control a main()<br />
<br />
Impresión final: 100</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog57&diff=5407
Curso de Programación en C/Prog57
2014-05-02T21:25:41Z
<p>Perseuz: /* Resultado */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog57 | Validación de ingreso]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog57 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
#include <stdbool.h><br />
<br />
int obten_int( void ); // Validar que ingreso es int<br />
bool mal_limites( int inicia, int termina, int bajo, int alto );<br />
double suma_cuadrados( int a, int b );<br />
<br />
int main( void )<br />
{<br />
const int MIN = -1000; <br />
const int MAX = +1000; <br />
int inicio;<br />
int termina;<br />
double respuesta;<br />
<br />
printf( "Este programa calcula la suma de los cuadrados de enteros\n"<br />
"en un rango entre -1000 y +1000.\n"<br />
"Entra los limites (0 en los dos limites para terminar)\n"<br />
"Limite bajo: " );<br />
inicio = obten_int();<br />
printf( "Limite alto: " );<br />
termina = obten_int();<br />
while( inicio !=0 || termina != 0 )<br />
{<br />
if( mal_limites( inicio, termina, MIN, MAX ) )<br />
printf( "Otra vez por favor.\n" );<br />
else<br />
{<br />
respuesta = suma_cuadrados( inicio, termina );<br />
printf( "La suma de los cuadrados de los enteros " );<br />
printf( "entre %d y %d es %g\n", inicio, termina, respuesta );<br />
}<br />
printf( "Entra los limites (0 en los dos "<br />
"para terminar)\n" );<br />
printf( "limite bajo: " );<br />
inicio = obten_int();<br />
printf( "limite alto: " );<br />
termina = obten_int();<br />
}<br />
printf( "Listo.\n" );<br />
<br />
return 0;<br />
}<br />
<br />
int obten_int( void )<br />
{<br />
int ingreso;<br />
char ch;<br />
<br />
while( scanf( "%d", &ingreso ) != 1)<br />
{<br />
while( ( ch = getchar() ) != '\n' )<br />
putchar( ch );<br />
printf( " no es un entero.\nFavor entrar un " );<br />
printf( "entero cómo 25, -178, o 3: " );<br />
}<br />
<br />
return ingreso;<br />
}<br />
<br />
double suma_cuadrados( int a, int b )<br />
{<br />
double total = 0;<br />
int i;<br />
<br />
for( i = a; i <= b; i++ )<br />
total += i * i;<br />
<br />
return total;<br />
}<br />
<br />
bool mal_limites( int inicio, int termina, int bajo, int alto )<br />
{<br />
bool no_bueno = false;<br />
<br />
if( inicio > termina )<br />
{<br />
printf( "%d no es menor que %d.\n", inicio, termina );<br />
no_bueno = true;<br />
}<br />
<br />
if( inicio < bajo || termina < bajo )<br />
{<br />
printf( "Valores deben ser >= %d.\n", bajo );<br />
no_bueno = true;<br />
}<br />
<br />
if( inicio > alto || termina > alto )<br />
{<br />
printf( "Valores deben ser <= %d.\n", alto );<br />
no_bueno = true;<br />
}<br />
<br />
return no_bueno;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<br />
[rrc@Pridd CClase]$ gcc -Wall -O2 -o Prog57 Prog57.c<br />
[rrc@Pridd CClase]$ ./Prog57<br />
Este programa calcula la suma de los cuadrados de enteros<br />
en un rango entre -1000 y +1000.<br />
Entra los limites (0 en los dos limites para terminar)<br />
Limite bajo: 4r<br />
limite alto: r no es un entero.<br />
Favor a entrar un entero cómo 25, -178, o 3: 999<br />
La suma de los cuadrados de los enteros entre 4 y 999 es 3.32833e+08<br />
Entra los limites (0 en los dos para terminar)<br />
limite bajo: 45<br />
limite alto: 33<br />
45 no es menor que 33.<br />
Otra vez por favor.<br />
Entra los limites (0 en los dos para terminar)<br />
limite bajo: 999<br />
limite alto: 2000<br />
Valores deben ser <= 1000.<br />
Otra ves por favor.<br />
Entra los limites (0 en los dos para terminar)<br />
limite bajo: -1200<br />
limite alto: 3<br />
Valores deben ser >= -1000.<br />
Otra vez por favor.<br />
Entra los limites (0 en los dos para terminar)<br />
limite bajo: 3<br />
limite alto: 4<br />
La suma de los cuadrados de los enteros entre 3 y 4 es 25<br />
Entra los limites (0 en los dos para terminar)<br />
limite bajo: -3<br />
limite alto: 3<br />
La suma de los cuadrados de los enteros entre -3 y 3 es 28<br />
Entra los limites (0 en los dos para terminar)<br />
limite bajo: 0<br />
limite alto: 0<br />
Listo.<br />
[rrc@Pridd CClase]$<br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]<br />
Linea 50. scanf() != 1: significa q ingreso no ha sido asignado pq el texto ingresado no coincide con un entero.</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog56&diff=5403
Curso de Programación en C/Prog56
2014-05-02T15:02:38Z
<p>Perseuz: /* Explicación */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog56 | Leer un Archivo]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog56 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
#include <stdlib.h><br />
<br />
int main( void )<br />
{<br />
int ch;<br />
FILE * fp;<br />
char NArchivo[50];<br />
<br />
printf("¿Que archivo quieres ver? ");<br />
scanf("%s", NArchivo);<br />
<br />
if( ( fp = fopen(NArchivo, "r") ) == NULL )<br />
{<br />
printf( "No puedo abrir %s\n", NArchivo );<br />
exit(1);<br />
}<br />
<br />
while( ( ch = getc( fp ) ) != EOF )<br />
putchar( ch );<br />
fclose( fp );<br />
<br />
return 0;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<br />
¿Que archivo quieres ver? Prog56.c<br />
#include <stdio.h><br />
#include <stdlib.h><br />
<br />
int main( void )<br />
{<br />
int ch;<br />
FILE * fp;<br />
char NArchivo[50];<br />
<br />
printf("¿Que archivo quieres ver? ");<br />
scanf("%s", NArchivo);<br />
<br />
if( ( fp = fopen(NArchivo, "r") ) == NULL )<br />
{<br />
printf( "No puedo abrir %s\n", NArchivo );<br />
exit(1);<br />
}<br />
<br />
while( ( ch = getc( fp ) ) != EOF )<br />
putchar( ch );<br />
fclose( fp );<br />
<br />
return 0;<br />
}<br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]<br />
<br />
Para Windows, el archivo Prog01.c que vamos a abrir, debe estar en la carpeta donde se encuentra Prog56.c<br />
El formato de fopen es: fp = fopen(nombre, modo) . En el "nombre" puede especificar un path o ruta donde se encuentra el archivo.</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog49&diff=5393
Curso de Programación en C/Prog49
2014-04-30T15:37:17Z
<p>Perseuz: /* Prog49 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog49 | Funciones para probar un caracter]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog49 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
<br />
int main( void )<br />
{<br />
printf( " Nombre Verdad si su argumento es\n\n"<br />
" isalnum() Alfanumerico\n"<br />
" isalpha() Alfabetico\n"<br />
" isblank() caracter vacio como \' \', \'<tab>\', \'\\n\'\n"<br />
" iscntrl() caracter de control como \'<Ctrl+B>\'\n"<br />
" isdigit() un numeral (\'0\' - \'9\')\n"<br />
" isgraph() un caracter que escribe algo que no es \' \'\n"<br />
" islower() una minuscula\n"<br />
" isprint() que imprime algo en la pantalla\n"<br />
" ispunct() imprime algo que NO es \' \' , o alfanumerico\n"<br />
" isspace() un caracter de espacio blanco\n"<br />
" isupper() una mayuscula\n"<br />
" isxdigit() un numeral hexadecimal\n\n" );<br />
return 0;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<br />
[rrc@Pridd CClase]$ gcc -Wall -O2 -o Prog49 Prog49.c <br />
[rrc@Pridd CClase]$ ./Prog49 <br />
<br />
Nombre Verdad si su argumento es<br />
<br />
isalnum() Alfanumerico<br />
isalpha() Alfabetico<br />
isblank() caracter vacio como ' ', '<tab>', '\n'<br />
iscntrl() caracter de control como '<Ctrl+B>'<br />
isdigit() un numeral ('0' - '9')<br />
isgraph() un caracter que escribe algo que no es ' '<br />
islower() una minuscula<br />
isprint() que imprime algo en la pantalla<br />
ispunct() imprime algo que NO es ' ' , o alfanumerico<br />
isspace() un caracter de espacio blanco<br />
isupper() una mayuscula<br />
isxdigit() un numeral hexadecimal<br />
<br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog24&diff=5390
Curso de Programación en C/Prog24
2014-04-26T01:31:56Z
<p>Perseuz: /* Prog24 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog24 | Prog24]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog24 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
/* Prog24.c - Salta algunas entradas */<br />
<br />
#include <stdio.h><br />
<br />
int main( void )<br />
{<br />
int n;<br />
<br />
printf( "Ingresa tres (3) enteros por favor:\n" );<br />
scanf( "%*d %*d %d", &n );<br />
printf( "El ultimo entero fue %d\n", n );<br />
<br />
return 0;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<br />
[rrc@Pridd CClase]$ gcc -Wall -O2 -o Prog24 Prog24.c<br />
[rrc@Pridd CClase]$ ./Prog24<br />
Ingresa tres (3) enteros por favor:<br />
23 -44 944<br />
El ultimo entero fue 944<br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog21&diff=5389
Curso de Programación en C/Prog21
2014-04-25T19:05:36Z
<p>Perseuz: /* Prog21 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog21 | Prog21]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog21 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
/* Prog21.c -- Valor regresado por printf() */<br />
<br />
#include <stdio.h><br />
<br />
int main( void )<br />
{<br />
int EbullicionH2O = 100,<br />
ValorRegresado;<br />
<br />
ValorRegresado = printf( "%dC es el punto de ebullicion del agua.\n", EbullicionH2O );<br />
printf( "12345678901234567890123456789012345\n" );<br />
printf( "La funcion printf() escribio %d caracteres.\n", ValorRegresado );<br />
<br />
return 0;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<br />
[rrc@Pridd CClase]$ gcc -Wall -O2 -o Prog21 Prog21.c<br />
[rrc@Pridd CClase]$ ./Prog21<br />
100C es el punto de ebullicion del agua.<br />
12345678901234567890123456789012345<br />
La funcion printf() escribio 41 caracteres.<br />
[rrc@Pridd CClase]$<br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog18&diff=5388
Curso de Programación en C/Prog18
2014-04-25T15:31:48Z
<p>Perseuz: /* Prog18 */</p>
<hr />
<div>__NOTOC__<br />
* [[:#Prog18 | Prog18]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog18 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
/* Prog18.c -- flags con strings */<br />
<br />
#include <stdio.h><br />
<br />
#define BLURB "Imitacion autentico"<br />
<br />
int main( void )<br />
{<br />
printf( "/%2s/\n", BLURB );<br />
printf( "/%26s/\n", BLURB );<br />
printf( "/123456789012345678901234567890/\n" );<br />
printf( "/%26.5s/\n", BLURB );<br />
printf( "/123456789012345678901234567890/\n" );<br />
printf( "/%-26.5s/\n", BLURB );<br />
<br />
return 0;<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<br />
[rrc@Pridd CClase]$ gcc -Wall -O2 -o Prog18 Prog18.c<br />
[rrc@Pridd CClase]$ ./Prog18<br />
/Imitacion autentico/<br />
/ Imitacion autentico/<br />
/123456789012345678901234567890/<br />
/ Imita/<br />
/123456789012345678901234567890/<br />
/Imita /<br />
[rrc@Pridd CClase]$<br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz