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

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Prog115&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__NOTOC__&lt;br /&gt;
* [[:#Prog115 | fopen con &amp;quot;a&amp;quot;, setvbuf() y ferror() ]]&lt;br /&gt;
** [[:#Resultado | Resultado]]&lt;br /&gt;
** [[:#Explicación | Explicación]]&lt;br /&gt;
&lt;br /&gt;
== Prog115 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_FANCY_LINE_NUMBERS&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define BUFTAMANO 1024&lt;br /&gt;
#define STROZO 81&lt;br /&gt;
&lt;br /&gt;
void append( FILE *Fuente, FILE *dest );&lt;br /&gt;
&lt;br /&gt;
int main( void )&lt;br /&gt;
{&lt;br /&gt;
  FILE *ADest,&lt;br /&gt;
       *AFuente;&lt;br /&gt;
&lt;br /&gt;
  int  Archivos = 0;&lt;br /&gt;
&lt;br /&gt;
  char ArchivoDestino[STROZO],  // Nombre de archivo de fuente&lt;br /&gt;
       ArchivoFuente[STROZO];  // Nombre de archivo de destino&lt;br /&gt;
&lt;br /&gt;
  printf( &amp;quot;Ingresa el nombre del archivo de destino: &amp;quot; );&lt;br /&gt;
  fgets( ArchivoDestino, STROZO - 2, stdin );&lt;br /&gt;
&lt;br /&gt;
  if( *(ArchivoDestino + strlen( ArchivoDestino ) -1 ) != &amp;#039;\n&amp;#039; )&lt;br /&gt;
  {&lt;br /&gt;
    printf( &amp;quot;El nombre que entraste es demasiado largo.\n&amp;quot;&lt;br /&gt;
            &amp;quot;Solo %d chars MAX\n&amp;quot;, STROZO - 2 );&lt;br /&gt;
    exit(1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
    *(ArchivoDestino + strlen( ArchivoDestino ) -1 ) = &amp;#039;\0&amp;#039;; &lt;br /&gt;
&lt;br /&gt;
  if( ( ADest = fopen( ArchivoDestino, &amp;quot;a&amp;quot; ) ) == NULL )&lt;br /&gt;
  {&lt;br /&gt;
    fprintf( stderr, &amp;quot;No puedo abrir %s\n&amp;quot;, ArchivoDestino );&lt;br /&gt;
    exit( 2 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if( setvbuf( ADest, NULL, _IOFBF, BUFTAMANO ) != 0 )&lt;br /&gt;
  {&lt;br /&gt;
    fputs( &amp;quot;No puedo crear el buffer de salida\n&amp;quot;, stderr );&lt;br /&gt;
    exit( 3 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  puts( &amp;quot;Ingresa el nombre del primer archivo de fuente (Línea vacio para terminar):&amp;quot; );&lt;br /&gt;
  while( fgets( ArchivoFuente, STROZO - 2, stdin ) &amp;amp;&amp;amp; ArchivoFuente[0] != &amp;#039;\n&amp;#039; )&lt;br /&gt;
  {&lt;br /&gt;
    if( *(ArchivoFuente + strlen( ArchivoFuente ) -1 ) != &amp;#039;\n&amp;#039; )&lt;br /&gt;
    {&lt;br /&gt;
      printf( &amp;quot;El nombre que entraste es demasiado largo.\n&amp;quot;&lt;br /&gt;
              &amp;quot;Solo %d chars MAX\n&amp;quot;, STROZO - 2 );&lt;br /&gt;
      exit(1);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
      *(ArchivoFuente + strlen( ArchivoFuente ) -1 ) = &amp;#039;\0&amp;#039;; &lt;br /&gt;
&lt;br /&gt;
    if( strcmp( ArchivoFuente, ArchivoDestino ) == 0 )&lt;br /&gt;
      fputs( &amp;quot;No puedo usar el mismo archivo por fuente y destino\n&amp;quot;, stderr );&lt;br /&gt;
    else if( ( AFuente = fopen( ArchivoFuente, &amp;quot;r&amp;quot; ) ) == NULL )&lt;br /&gt;
      fprintf( stderr, &amp;quot;No puedo abrir %s\n&amp;quot;, ArchivoFuente );&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      if( setvbuf( AFuente, NULL, _IOFBF, BUFTAMANO ) != 0 )&lt;br /&gt;
      {&lt;br /&gt;
        fputs( &amp;quot;No puedo crear el buffer de ingreso\n&amp;quot;, stderr );&lt;br /&gt;
        continue;&lt;br /&gt;
      }&lt;br /&gt;
      append( AFuente, ADest );&lt;br /&gt;
      if( ferror( AFuente ) != 0 )&lt;br /&gt;
        fprintf( stderr, &amp;quot;Error en leer el archivo %s.\n&amp;quot;, ArchivoFuente );&lt;br /&gt;
      if( ferror( ADest ) != 0 )&lt;br /&gt;
        fprintf( stderr, &amp;quot;Error in escribir el archivo file %s.\n&amp;quot;, ArchivoDestino );&lt;br /&gt;
      fclose( AFuente );&lt;br /&gt;
      Archivos++;&lt;br /&gt;
      printf( &amp;quot;Archivo %s agregado.\n&amp;quot;, ArchivoFuente );&lt;br /&gt;
      puts( &amp;quot;Siguiente archivo (Línea vacio para terminar):&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  printf( &amp;quot;Listo. %d archivos agregados.\n&amp;quot;, Archivos );&lt;br /&gt;
  fclose( ADest );&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void append( FILE *Fuente, FILE *dest )&lt;br /&gt;
{&lt;br /&gt;
  size_t bytes;&lt;br /&gt;
  static char temp[BUFTAMANO]; // allocate once&lt;br /&gt;
  while( ( bytes = fread( temp, sizeof( char ), BUFTAMANO, Fuente ) ) &amp;gt; 0 )&lt;br /&gt;
    fwrite( temp, sizeof (char), bytes, dest );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resultado ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[rrc@llawyr CClase]$ gcc -Wall -o Prog115 Prog115.c&lt;br /&gt;
[rrc@llawyr CClase]$ ./Prog115&lt;br /&gt;
Ingresa el nombre del archivo de destino: Dest&lt;br /&gt;
Ingresa el nombre del primer archivo de fuente (Línea vacio a terminar):&lt;br /&gt;
Prog1.c&lt;br /&gt;
Archivo Prog1.c agregado.&lt;br /&gt;
Siguiente archivo (Línea vacio para terminar):&lt;br /&gt;
Prog2.c&lt;br /&gt;
Archivo Prog2.c agregado.&lt;br /&gt;
Siguiente archivo (Línea vacio para terminar):&lt;br /&gt;
Prog3.c&lt;br /&gt;
Archivo Prog3.c agregado.&lt;br /&gt;
Siguiente archivo (Línea vacio para terminar):&lt;br /&gt;
&lt;br /&gt;
Listo. 3 archivos agregados.&lt;br /&gt;
[rrc@llawyr CClase]$ cat Dest&lt;br /&gt;
/*  Prog4.c -- Asignación de resultados aritméticos */&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
int main( void )&lt;br /&gt;
{&lt;br /&gt;
  int n  = 5,&lt;br /&gt;
      n2 = n * n,&lt;br /&gt;
      n3 = n2 * n; /* decleración y asignación de resultado de multiplicación */&lt;br /&gt;
&lt;br /&gt;
  printf( &amp;quot;n = %d, n cuadrado = %d, n cubo = %d\n&amp;quot;, n, n2, n3 );&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
/* Prog5.c  -- floats y scanf()                 */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    float peso; &lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;¿Vale usted su peso en rhodium?\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;Vamos a ver.\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;Ingrese su peso en libras: &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
/* Obtener peso del usuario                         */&lt;br /&gt;
    scanf(&amp;quot;%f&amp;quot;, &amp;amp;peso);&lt;br /&gt;
&lt;br /&gt;
/* Si rhodium vale $770 el once                     */&lt;br /&gt;
/* 14.5833 para convertir pounds avd. a ounces troy */&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;Su peso en rhodium vale $%.2f.\n&amp;quot;, (770.0 * peso * 14.5833) );&lt;br /&gt;
    printf(&amp;quot;Si el valor de rhodium baja,\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;come más a mantener su valor.\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Prog1.c&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void)               /* Un programa simple               */&lt;br /&gt;
{&lt;br /&gt;
   int num;                  /* definir una variable llamada num */&lt;br /&gt;
   num = 1;                  /* asignar una valor a num          */&lt;br /&gt;
&lt;br /&gt;
   printf(&amp;quot;Soy una computadora &amp;quot;); /* use the printf() function  */&lt;br /&gt;
   printf(&amp;quot;simple.\n&amp;quot;);&lt;br /&gt;
   printf(&amp;quot;Mi número favorito es %d porque el es el primer.\n&amp;quot;, num);&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Prog2.c */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main (void)&lt;br /&gt;
{&lt;br /&gt;
  int fathoms = 2,&lt;br /&gt;
      feet    = 6 * fathoms;&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;Son %d pies en %d fathoms!\n&amp;quot;, feet, fathoms);&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Prog3.c&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void macero( void );  /* Prototipo de la función macero() */&lt;br /&gt;
      &lt;br /&gt;
int main(void)&lt;br /&gt;
{ &lt;br /&gt;
   printf( &amp;quot;Voy a convocar el macero.\n&amp;quot; );&lt;br /&gt;
   macero();&lt;br /&gt;
   printf( &amp;quot;Si. Me traen algunos DVDs grabables y té.\n&amp;quot; );&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void macero(void)            /* Definición de la función macero() */&lt;br /&gt;
{&lt;br /&gt;
   printf( &amp;quot;Me llamaste, señor?\n&amp;quot; );&lt;br /&gt;
} &lt;br /&gt;
[rrc@llawyr CClase]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Explicación ===&lt;br /&gt;
 &lt;br /&gt;
[[Category:Programación en C]]&lt;br /&gt;
[[Category:CCabal]]&lt;br /&gt;
[[Category:CursoC]]&lt;/div&gt;</summary>
		<author><name>Perseuz</name></author>
		
	</entry>
</feed>