SlideShare uma empresa Scribd logo
1 de 32
Nombre de la Asignatura: Programación I<br />Ejemplo de Pagina 1:<br />Universidad Simón Bolívar<br />Departamento de Computación<br />CI2126 Computación II  <br />Gabriela Ochoa<br />Lectura y Escritura en Archivos Secuenciales<br />La clase de hoy cubre la creación, lectura y escritura de archivos. Adicionalmente veremos como pasar argumentos desde la línea de comandos al programa. Un aspecto importante de cualquier programa, es su habilidad de comunicarse con el mundo exterior. La lectura de archivos con datos de entrada, y la escritura de archivos de salida con los resultados, constituye una manera simple pero efectiva de comunicación.<br />Funciones de Librería para la Entrada y Salida (E/S) de Archivos<br />Existen rutinas para abrir y cerrar archivos, y para leer y escribir en ellos utilizando datos formateados, de manera similar a como se hace el formato de datos para entrada y salida en pantalla.<br />La función fopen se utiliza para abrir un archivo, y asociarle una variable apuntador a archivo con la cual el programa puede referirse a la fuente del archivo. El prototipo de fopen es:<br />FILE *fopen(const char *filename, const char *modo);<br />fopen retorna un apundador al archivo si la llamada fue exitosa, y si no, retorna NULL. El apuntador al archivo se utiliza para identificar la fuente del mismo, se pasa como parámetro a las rutinas de escritura, lectura y manejo del archivo. El filename y modo son cadenas de caracteres. Los modos válidos son:<br />ModoUsorAbre para lecturawAbre o crea para escritura. Descarta (destruye) cualquier contenido previoaAbre o crea para escritura. Agrega a (escribe después de) cualquier contenido previor+Abre para modificaciones (lectura y escritura)w+Abre o crea para modificación. Descarta (destruye) cualquier contenido previoa+Abre o crea para modificación. Agrega a cualquier contenido previo<br />Para declarar una variable de tipo apuntador a archivo:<br />#include <stdlib.h><br />FILE *fp;<br />Ejemplo de apertura de un archivo:<br />fp = fopen(quot;
datos.txtquot;
,quot;
wquot;
);<br />La función fflush se usa para físicamente escribir (bajar) en el archivo cualquier data almacenada en el quot;
bufferquot;
 intermedio. Para hacer los programas más eficientes y reducir las llamadas al sistema, los archivos mantienen un buffer (memoria) intermedia, una vez que el buffer está lleno, los datos se escriben en el archivo. La rutina fflush fuerza a que el buffer sea escrito en el archivo asociado. Su prototipo es:<br />int fflush(FILE *fp);<br />Recibe un apuntador a archivo como parámetro. Retorna cero si la llamada fue exitosa y EOF si no lo fue. EOF es una constante especial que denota que se ha llegado al final del archivo.<br />Para cerrar los archivos se utiliza la función fclose. Su prototipo es:<br />int fclose(FILE *fp);<br />Fclose retorna cero si fue exitosa y EOF si hubo alguna falla.<br />Para escribir datos en un archivo se utiliza la fprintf. Esta función es muy similar a printf, que ya sabemos manejar bien. La única diferencia es que fprintf tiene un argumento adicional, el apuntador a archivo que especifica la fuente donde queremos escribir. Su prototipo es:<br />int fprintf(FILE *fp, const char* format, ....);<br />fprintf retorna el número de caracteres que fueron escritos exitosamente o un número negativo en caso de falla.<br />Para leer datos de un archivo se utiliza la función fscanf. Esta función es muy similar a scanf, que ya sabemos manejar bien. La única diferencia es que fscanf tiene un argumento adicional, el apundador a archivo que especifica la fuente de donde queremos leer. Recuerden que los argumentos para guardar datos deben ser apuntadores (i.e, llevan & en caso de ser variables simples, y solo el nombre en caso de ser arreglos de caracteres). Su prototipo es:<br />int fscanf(FILE *stream, const char* format, ....);<br />Ejemplo<br />El siguiente programa abre un archivo que contiene un nombre y cedula de identidad. Luego abre un archivo de salida y escribe estos datos (pero en orden invertido). El archivo de entrada fue creado con un editor de texto.<br />Archivo de entrada: entrada.txt<br />Pedro 18878798<br />#include <stdio.h><br />int main()<br />{ <br />   char ifilename[] = quot;
entrada.txtquot;
;<br />   char ofilename[] = quot;
salida.txtquot;
;<br />   char name[30];<br />   int idNum;<br />   FILE *ofp, *ifp;                    /* Declara apuntadores a archivo */<br />   ifp = fopen(ifilename,quot;
rquot;
);         /* Abre archivo de entrada */<br />   fscanf(ifp,quot;
%s %dquot;
,name,&idNum);     /* Lee datos de entrada */<br />   ofp = fopen(ofilename,quot;
wquot;
);         /* Abre archivo de salida */<br />   fprintf(ofp,quot;
%d %squot;
,idNum, name); /* Escribe los datos */<br />   fclose(ifp); fclose(ofp);           /* Cierra los archivos */<br />   return 0;<br />} <br />Archivo de salida: salida.txt<br />18878798 Pedro <br />Ejercicio de Practica<br />Extender el ejercicio anterior para que sea capaz de leer y escribir múltiples pares de nombres y cédulas. Sugerencia: Crear un ciclo y chequear cuando la rutina scanf retorna EOF.<br />Solucion:<br />#include <stdio.h><br />int main(){<br />char ifilename[] = quot;
c:/entrada.txtquot;
;<br />char ofilename[] = quot;
c:/salida.txtquot;
;<br />char name[30];<br />int idNum;<br />FILE *ofp, *ifp;<br />ifp = fopen(ifilename,quot;
rquot;
);   /* Abrir archivo entrada     */<br />ofp = fopen(ofilename,quot;
wquot;
);   /* Abrir archivo salida      */<br />while (fscanf(ifp,quot;
%s %dquot;
,name,&idNum) != EOF) {/*Leer datos */<br />     fprintf(ofp,quot;
%d %squot;
,idNum, name);   /* Escribir datos */<br />}<br />fclose(ifp); fclose(ofp);     /* Cerrar archivos */<br />return 0;<br />} <br />Otras Rutinas Útiles<br />int fgetc(FILE *fp); Retorna el siguiente carácter del archivo referenciado por fp, o EOF si se ha llegado al final del archivo. El tipo de retorno es int en lugar de char, debido a que el carácter EOF debe ser manejado.<br />int *fgets(char *s, int n, FILE *fp); Retorna un apuntador a la cadena de caracteres leída si resulta exitoso, o NULL si se llega al final del archivo o si ocurre un error. La cadena es también almacenada en el arreglo de caracteres especificado como argumento. Un máximo de n-1 caracteres serán leídos. Lo cual da espacio para guardar el carácter de fin de cadena ''.<br />int fputs(const char s*, FILE *fp); Escribe una cadena de caracteres en el archivo, retorna EOF si hubo alguna falla. <br />int fputc(int c, FILE *fp); Escribe un carácter solo en el archivo, si hubo algún problema devuelve EOF.<br />int sprintf(char *buffer, const char *format, ...); Esta función es similar a fprintf, excepto que los datos son escritos en un arreglo (o buffer) de caracteres en lugar de en un archivo de salida.<br />int sscanf(char *buffer, const char *format, ...); Esta función es similar a fscanf, excepto que los datos son leídos de un arreglo (o buffer) de caracteres en lugar de un archivo de entrada.<br />Argumentos de Línea de Comando<br />C provee un mecanismo para pasar argumentos desde la línea de comandos al programa que se va a ejecutar. Cuando el programa comienza su ejecución, la rutina main es llamada con dos argumentos: un contador y un apuntador a un arreglo de cadenas de caracteres. El contador es llamado por convención argc y el apuntador argv. El uso de  argv es un poco truculento. Dado que argv es un apuntador a un arreglo de cadenas de caracteres, la primera cadena de caracteres es referenciada por argv[0] (o *argv). La segunda cadena es referenciada por argv[1] (o *(argv + 1)), la tercera por argv[2], y así sucesivamente. La primera cadena de caracteres, argv[0], contiene el nombre del programa. Los argumentos comienzan realmente con argv[1]. <br />Un ejemplo de llamada de un programa llamado copia, que copie un archivo en otro archivo seria: copia fuente.txt destino.txt. Esto es, el nombre del programa más dos argumentos que corresponderían a los nombres de los archivos fuente y destino.<br />Veamos un ejemplo que simplemente muestra los argumentos de un programa.<br />#include <stdio.h><br />int main(int argc, char *argv[])<br />{<br />   int i;<br />   fprintf(quot;
The number of command line arguments is %dquot;
, argc);<br />   fprintf(quot;
The program name is %squot;
,argv[0]);<br />   for (i = 1; i < argc; i++) {<br />      fprintf(quot;
%squot;
,argv[i]);<br />   }<br />   fprintf(quot;
quot;
);<br />   return 0;<br />}<br />Referencias<br />Tutorial de Programación en C , conciso y bien escrito, con enlaces a muchos otros recursos para la programación en C y C ++.<br />Ir a Pagina del Curso<br />Aspectos Generales:<br />URL:http://www.ldc.usb.ve/~gabro/teaching/CI2126/Clase2_Archivos.htm<br />Utilización en el Aula:<br />Tipología: La Universidad Simón Bolívar, Departamento de Computación, por :Gabriela Ochoa. No especifica su cargo o grado de Instrucción.<br />Destinatario: La página fue pensada para ser usada por alumnos de niveles avanzados, especialistas e investigadores.<br />Nivel: usuarios de superior, o profesional.<br />Actividades: El sitio no incluye actividades para realizar con los alumnos.<br />La página pertenece a la Universidad Simón Bolívar destinada al área educativa tecnológica. <br />La página es no es de tipo portal ya que no cuenta con diversos recursos y herramientas que permiten la interacción, descarga de materiales y suscripción a revistas. Está destinada principalmente a profesionales de la educación, siendo el nivel académico de sus contenidos en el área de educación profesional o superior. La página se encuentra en Venezuela.<br />Aspectos Curriculares:<br />Interés para el Profesorado: la página sirve solo para uso del docente. <br />La página no permite descarga de materiales, libros digitales y pero si hay vínculos hacia otras páginas.<br />Aspectos Gráficos:<br />El entorno estático está diseñado con una fuente de tamaño muy pequeño lo cual puede dificultar su lectura, los colores son suaves lo cual hace agradable la interfaz y no posee imágenes.<br />En relación al entorno dinámico, posee ningún elemento animado.<br />No tiene elementos multimedia, tales como videos, archivos de imágenes o sonidos.<br />Aspectos Técnicos: <br />Libertad de Acceso: El acceso a la página es gratis y los usuarios no pueden suscribir a un envío de noticias vía correo electrónico para enterarse de las novedades de allí descritas.<br />Publicidad: no cuenta con enlaces a cursos pagos y promoción de eventos ni posee spam de publicidad.<br />Navegabilidad: si posee hipervínculos o enlaces dentro de la página. La navegabilidad en la página se hace ligera y no tarda en cargar , los vínculos no todos están correctamente activos.<br />Interactividad : No posee, foros, chat, envío de mensajes, o cuestionarios. No cuenta con un blog y correo de contacto.<br />Conclusión:<br />La página no se adapta a los requerimientos académicos de la asignatura por lo que no será utilizada como material de consulta para mis estudiantes. Solo como material de apoyo docente.<br />Ejemplo 2:<br />Versión 3.0 <br />800x600 mínimo <br />En esta lección:Escritura-----Abrir un archivo-----Cerrar un archivo-----Concatenar datos-----Lectura-----Leer una palabra-----Leer una línea-----Asignación especial-----Otras secciones:Conceptos básicos-----Programando en C-----Programando en C++-----Programando Windows 9x.-----Teoría electrónica-----Circuitos electrónicos-----Actividades adicionales-----Hipervínculos-----Contácteme:Dudas y comentarios-----Escritura de un archivoA lo largo de ésta lección veremos la mecánica necesaria para escribir y leer datos a un archivo, empezaremos con la escritura. Como siempre, los códigos especifican en primer lugar algunas sentencias #include, y en el caso concreto del primer código de ejemplo se ha declarado un nuevo tipo de variable. Estudie el siguiente código:#include <stdio.h>#include <string.h>int main(){    FILE *fp;    fp = fopen(quot;
prueba.htmquot;
, quot;
wquot;
);   /* Abrir archivo para escritura */    fprintf(fp, quot;
<HTML> quot;
);    fprintf(fp, quot;
<BODY> quot;
);    fprintf(fp, quot;
Esta es la primera linea de texto. quot;
);    fprintf(fp, quot;
<CENTER>Esta es la segundaquot;
      quot;
linea</CENTER> quot;
);    fprintf(fp, quot;
Y esta es la <B>tercera lineaquot;
      quot;
de texto.</B> quot;
);    fclose(fp);    /* Cerrar el archivo antes de terminar el programa */    printf(quot;
Se ha creado el archivo: prueba.htm quot;
);    return 0;}El tipo FILE es una estructura (misma que estudiaremos en la siguiente lección) que estádefinida en el archivo de cabecera stdio.h, se usa para definir un puntero que se utilizará en operaciones con archivos. Por definición, C requiere para accesar a un archivo de un puntero de tipo FILE, como es normal, se puede utilizar cualquier nombre para representar dicho puntero, es común utilizar fp, así que éste nombre utilizamos en el primer código.Cómo abrir un archivoAntes de poder escribir datos en un archivo, debemos abrirlo, esto significa que debemos decirle al sistema que deseamos escribir en un archivo especificando el nombre del mismo, para esto utilizamos  la   función   fopen ( ), especificada en la línea   8   del   código. El puntero de archivo, fp en   éste   caso,  señala   a  la   estructura para el   archivo   siendo necesarios dos argumentos para ésta función, el nombre del archivo en primer lugar, y  el atributo del archivo. El nombre del archivo es cualquier nombre   válido  para  su  sistema operativo y puede ser expresado sea en minúsculas ó mayúsculas, incluso si  así  lo desea, como una combinación de ámbas, el nombre se  encierra  entre   comillas. En el   ejemplo escogí el nombre prueba.htm. Es importante  que  en  el  directorio  donde  trabaje éstos ejemplos no exista un archivo con éste nombre pues al ejecutar el programa se sustituirán los datos del mismo, en caso de no existir un archivo   con el   nombre   especificado,   el programa lo creará.Lectura (quot;
rquot;
)El segundo parámetro es el atributo del archivo y puede ser cualquiera de éstas tres letras, quot;
rquot;
, quot;
wquot;
, ó quot;
aquot;
, y deben estar en letra minúscula. Existen atributos adicionales en  C  que permiten operaciones de Entrada/Salida (E/S) más flexibles por lo que es recomendable laconsulta de la documentación del compilador. Cuando se utiliza quot;
rquot;
 el archivo se abre paraoperaciones de lectura, para   operaciones   de   escritura   utilizamos quot;
wquot;
   y   cuando  se especifica quot;
aquot;
 es porque deseamos agregar datos adicionales a   los   ya  existentes  en el archivo, o sea concatenar datos. Abrir un archivo para lectura   implica la   existencia  del mismo, si ésta condición no es válida el puntero de archivo será igual a NULL y ésto puede ser verificado utilizando el siguiente código:if (fp==NULL){    printf(quot;
Error al abrir el archivo quot;
);    exit (1);}Es una buena práctica de programación checar todos los punteros de archivo en una forma similar al código de arriba, el valor de 1 utilizado como parámetro de exit ( ) será explicado más adelante.Escritura (quot;
wquot;
)Cuando un archivo se abre para operaciones de escritura, si éste no existe  entonces  será creado, y si existe será reescrito dando como resultado la pérdida de los  datos  existentes en el archivo previo. Si ocurre por alguna razón un error al abrir el archivo, el puntero  dearchivo retorna un valor de NULL que puede ser checado como se especificó arriba.Concatenar (quot;
aquot;
)Cuando un archivo se abre para concatenar datos, si no  existe   será creado   inicialmente vacío. Si el archivo existe, el punto de entrada de datos se  situa al   final   de   los   datos existentes en el archivo, de ésta manera es como se agregan nuevos datos al archivo. El puntero de archivo se puede verificar como yá se explicó.Salida al archivoLa salida   de   datos   hacia un   archivo   es  prácticamente  idéntica a  la  forma  en  quedesplegamos datos en el dispositivo estándar de salida, las únicas diferencias  reales   son el nombre de una nueva función y  la  adición  del  puntero  de  archivo  como  uno de  los argumentos de la función. En el código de ejemplo, la función fprintf ( ) reemplaza  a  la familiar printf ( ) y el puntero de archivo vá como argumento dentro del paréntesis de lafunción, como se aprecia en las líneas 9 a la 13 del código de ejemplo.Cerrando el archivoPara cerrar un archivo se utiliza la función fclose ( ) con el puntero de archivo dentro delparéntesis. En algunos programas sencillos no es necesario cerrar el archivo   ya   que  el sistema operativo se encarga de cerrar los archivos que hayan quedado abiertos antes de retornar el control al usuario, sin embargo es buena práctica cerrar  en código todo aquel archivo que se abra.Compile y ejecute el programa, la única salida que verá en  pantalla es la línea  que  indica la  creación  del  archivo  especificado,  después  de  correr el  programa  verifique  en  su directorio de trabajo la existencia del archivo  prueba.htm. Por  la  extensión  utilizada es fácil suponer que se trata de un pequeño archivo web, su  navegador  lo  puede  visualizar de la forma convencional, pero también puede abrir  éste archivo con  un  editor  de  texto común (como Notepad), entonces se dará cuenta que el código HTML está inconcluso,estequot;
problemitaquot;
 lo resolveremos más adelante por lo  que  le recomiendo  que  conserve  éste archivo pues se utilizará en las prácticas que siguen.Volver al principioConcatenar datosComo  vimos  en  el  programa  anterior, el  archivo  generado  llamado prueba.htm está Inconcluso  así  que es hora de corregir ésta situación, lo haremos utilizando el código que Sigue  el  cual hace  uso del atributo para  concatenar  datos  y  además  utilizaremos una nueva función para escribir en el archivo un solo dato a la vez:#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){    FILE *final;    final = fopen(quot;
Prueba.htmquot;
, quot;
aquot;
); /* Abrir archivo para concatenar */    if (final == NULL)    {        printf(quot;
Falla al abrir el archivo quot;
);        exit (EXIT_FAILURE);    }    putc('', final);    putc('<', final);    putc('/', final);    putc('B', final);    putc('O', final);    putc('D', final);    putc('Y', final);    putc('>', final);    putc('', final);    putc('<', final);    putc('/', final);    putc('H', final);    putc('T', final);    putc('M', final);    putc('L', final);    putc('>', final);    putc('', final);    fclose(final);    return EXIT_SUCCESS;}En primer lugar observe que en este programa se efectúa  la verificación del éxito  al abrir el archivo, la constante llamada EXIT_FAILURE está definida en el  archivo  de  cabecera stdlib.h generalmente con el valor de 1. La constante llamada  EXIT_SUCESS  a  su  vez está definida generalmente con el valor de 0. El sistema operativo puede utilizar  el  valor retornado para determinar si el programa está  operando  normalmente ó si  es  necesario tomar alguna acción correctiva, por ejemplo, si  un  programa se ejecuta en dos partes  y la primera de ellas retorna un valor de  error,  entonces  no  hay  necesidad de ejecutar la segunda parte del programa.La función putc ( )La parte del programa que nos interesa es la función llamada putc ( ) ejemplificada de  la línea 16 a la 32,  ésta  función  extrae  al  archivo  un  carácter  a  la vez,  el  caracter en cuestión es el primer  argumento de  la  función  y  el  puntero  de  archivo  el  segundo y último  argumento  dentro  del  paréntesis.  Observe   que  para  especificar  un   caracter determinado se utiliza la comilla sencilla, incluyendo el caso   del caracter de  retorno   de carro ''. Compile y ejecute el programa. Antes de correr el  programa  asegurese  de  la existencia del archivo prueba.htm en su directorio de trabajo, generado en el programa anterior, después de correr el programa, abra el archivo con un editor de texto y observe que ahora el documento web está completo.Volver al principioLectura de un archivoComo ya tenemos un archivo para leer podemos utilizar un  nuevo programa, como en los Programas  anteriores,  éste  empieza  con  algunas  declaraciones y abriendo  el  archivo prueba.htm especificando que deseamos efectuar  operaciones  de  lectura  mediante  el atributo quot;
rquot;
, el programa ejecuta un bucle do while para leer del archivo un solo  carácter a la vez y desplegarlo en  pantalla  hasta  detectar  un  caracter  EOF  (End Of File, Fin de Archivo). Por último cerramos el archivo y el programa termina.#include <stdio.h>#include <stdlib.h>int main(){    FILE *nombre;    int c;    nombre = fopen(quot;
Prueba.htmquot;
, quot;
rquot;
);    if (nombre == NULL)    {        printf(quot;
El archivo no existe quot;
);        exit (EXIT_FAILURE);    }    else    {        do        {            c = getc(nombre); /* Obtiene un caracter del archivo */            putchar(c); /* Lo despliega en pantalla y continua... */        }        while (c != EOF); /* hasta encontrar EOF (el final del archivo)*/    }    fclose(nombre);    return EXIT_SUCCESS;}En este punto afrontamos un problema común en  programación C. La  variable regresada por la función getc ( ) es un caracter, por lo que podemos  utilizar  para el propósito una variable de tipo char, el problema  empieza si  tratamos de utilizar una  variable  de  tipo unsigned char, ya que C regresa -1  para  EOF. Una  variable de tipo  unsigned char no puede  contener  valores   negativos   ya  que  su  rango  está entre  0 y 255  por  lo  que retornará 255 para un valor negativo valor que  no  compara  con  EOF, en  este  caso   el programa nunca terminará. Para prevenir esta situación, utilice una  variable de  tipo  int, ya que este tipo de variable siempre incluye el signo. En este programa leimos del archivoun caracter a la vez, en el siguiente leeremos una palabra a la vez.Lectura de una palabraEl siguiente programa es  prácticamente igual que el  anterior  excepto que  ésta  vez  se utiliza la función fscanf ( ) para  leer una cadena  a la vez, como  fscanf ( )  detiene  la lectura de caracteres al encontrar un caracter de espacio ó uno de nueva línea, lee por lo tanto una palabra a la vez desplegando los resultados en una palabra por línea, el nuevo código es:#include <stdio.h>int main(){    FILE *fp1;    char palabra[100];    int c;    fp1 = fopen(quot;
Prueba.htmquot;
, quot;
rquot;
);    do    {        /* Obtiene una palabra del archivo */        c = fscanf(fp1, quot;
%squot;
, palabra);        printf(quot;
%squot;
, palabra); /* la despliega en pantalla */    }    while (c != EOF);            /* Se repite hasta encontrar EOF */    fclose(fp1);    return 0;}Al ejecutar éste programa la salida es la siguiente: El problema es que se imprime dos veces la última palabra, para resolver este detalle modificamos el anterior código así:#include <stdio.h>int main(){    FILE *fp1;    char palabra[100];    int c;    fp1 = fopen(quot;
Prueba.htmquot;
, quot;
rquot;
);    do    {        /* Obtiene una palabra del archivo */        c = fscanf(fp1, quot;
%squot;
, palabra);        if (c != EOF)        printf(quot;
%squot;
, palabra); /* La despliega en pantalla */    }    while (c != EOF);            /* Se repite hasta encontrar EOF */    fclose(fp1);    return 0;}Es bueno hacer notar que un programador experimentado no escribiría el  código como  lo hicimos en el ejemplo ya que compara c con EOF dos veces por cada ciclo del bucle y esto es ineficiente.   Utilizamos   código   que trabaja y es fácil  de leer pero  conforme   usted gane experiencia en C, Usted utilizará métodos más eficientes  de codificar,  aunque  sean más difíciles de leer, por ejemplo:while((c = fscanf(fp1, quot;
%squot;
, palabra) != EOF){    printf(quot;
%squot;
, palabra);}Lectura de una líneaSiguiendo la misma secuencia de los ejemplos de éste capítulo, analizaremos  la forma de leer una línea completa de texto, para esto tenemos el código que detallo enseguida:#include <stdio.h>#include <stdlib.h>int main(){    FILE *fp1;    char palabra[100];    char *c;    fp1 = fopen(quot;
Prueba.htmquot;
, quot;
rquot;
);    if (fp1 == NULL)    {        printf(quot;
Error al abrir el archivo quot;
);        exit (EXIT_FAILURE);    }    do    {        c = fgets(palabra, 100, fp1); /* Obtiene una linea del archivo */        if (c != NULL)        printf(quot;
%squot;
, palabra);        /* La despliega en pantalla */    }    while (c != NULL);                /* Se repite hasta encontrar NULL */    fclose(fp1);    return EXIT_SUCCESS;}Ahora utilizamos la función fgets ( ) la cual lee una línea completa, incluyendo el carácterde nueva línea y coloca los datos en un buffer (espacio  de  memoria  RAM  temporal). El buffer a ser leído es el  primer argumento   en   la   llamada a la función en tanto  que  el máximo número de caracteres a ser  leídos   es el  segundo  argumento,  seguido  por  el puntero de archivo. Esta función leerá   caracteres en el buffer  hasta  que   encuentre  el caracter de nueva línea, ó lea el máximo número de caracteres menos uno, lo que ocurraprimero. El espacio final se reserva para el caracter nulo   (NULL) del   fin de  la   cadena. Además, si se encuentra un EOF, la función retorna NULL. NULL está definido a cero en elarchivo stdio.hLos ejemplos de éste  capítulo realmente no  requieren de mucha explicación, el  código lo podemos modificar para  introducir  el  nombre  del  archivo  que  deseamos  abrir de ésta forma:#include <stdio.h>#include <stdlib.h>int main(){    FILE *fp1;    char palabra[100], nombre[25];    char *c;    printf(quot;
Introduzca el nombre del archivo -> quot;
);    scanf(quot;
%squot;
, nombre);        /* Lee el archivo deseado */    fp1 = fopen(nombre, quot;
rquot;
);    if (fp1 == NULL)    {        printf(quot;
Error al abrir el archivo quot;
);        exit (EXIT_FAILURE);    }    do    {        c = fgets(palabra, 100, fp1);   /* Obtiene una linea del archivo */        if (c != NULL)        printf(quot;
%squot;
, palabra);          /* La despliega en pantalla */    }    while (c != NULL);                  /* Hasta encontrar NULL */    fclose(fp1);    return EXIT_SUCCESS;}La salida del programa es la siguiente:Volver al principioAsignación especialA lo largo de este capítulo hemos tratado el uso de  diferentes funciones para operaciones de lectura y escritura, se trata de  un  tema  particularmente útil en el  desarrollo  de  un programa.  Como  seguramente  habrá  notado, utilizamos para los  ejemplos un   archivo llamado   Prueba.htm,  por la extensión utilizada y  por  la naturaleza  del  texto  incluído en el mismo sabemos que se trata de un documento web que puede ser visualizado en su navegador. Para terminar este capítulo y a manera de resumen que a la vez nos sirva de introducción al siguiente capítulo, le presento el siguiente código que Yo espero despierte en Usted un poco (ó un mucho)  de curiosidad, experimente con el programa y  si  Usted desea, mándeme su opinión por correo electrónico.#include <stdio.h>#include <stdlib.h>enum HTMLid{    HTML_NINGUNO,    HTML_BODY,    HTML_cBODY,    HTML_B,    HTML_cB,    HTML_HTML,    HTML_cHTML,    HTML_CENTER,    HTML_cCENTER};static struct{    char    *htmlcodigo;    enum HTMLid id;}lista_de_codigos[]={    {quot;
<HTML>quot;
,      HTML_HTML},    {quot;
</HTML>quot;
,     HTML_cHTML},    {quot;
<BODY>quot;
,      HTML_BODY},    {quot;
</BODY>quot;
,     HTML_cBODY},    {quot;
<CENTER>quot;
,    HTML_CENTER},    {quot;
</CENTER>quot;
,   HTML_cCENTER},    {quot;
<B>quot;
,         HTML_B},    {quot;
</B>quot;
,        HTML_cB},    {NULL,          HTML_NINGUNO}};char        texto[128];int         itexto=0, c;int main(){    int             i, ietiqueta=0;    char            etiqueta[64];    FILE            *archivo;    enum HTMLid     codigo;    archivo = fopen(quot;
Prueba.htmquot;
, quot;
rquot;
); /* Abre el archivo para lectura */    if (archivo == NULL)    {        printf(quot;
El archivo no existe...quot;
);        exit (EXIT_FAILURE);    }    else    {        do      /* Checa todos los caracteres del archivo */        {            c=getc(archivo);            if (c=='<')     /* Lee la etiqueta html */            {                /* incluye el principio de la etiqueta */                etiqueta[ietiqueta++]=c;                do                {                    c=getc(archivo);                    etiqueta[ietiqueta++]=c;                }                while(c!='>');                etiqueta[ietiqueta]=0;                codigo=HTML_NINGUNO;                for(i=0; lista_de_codigos[i].htmlcodigo!=NULL; i++)                {                    if(stricmp(etiqueta,                      lista_de_codigos[i].htmlcodigo)==0)                    {                        codigo=lista_de_codigos[i].id;                        break;                    }                }                switch (codigo)                {                    case HTML_NINGUNO:                    break;                    case HTML_HTML:                    printf(quot;
Empieza el documento web quot;
);                    break;                    case HTML_cHTML:                    printf(quot;
Fin del documento web quot;
);                    break;                    case HTML_B:                    printf(quot;
Empieza la etiqueta B quot;
);                    break;                    case HTML_cB:                    printf(quot;
Termina la etiqueta B quot;
);                    break;                    case HTML_BODY:                    printf(quot;
Empieza la etiqueta BODY quot;
);                    break;                    case HTML_cBODY:                    printf(quot;
Termina la etiqueta BODY quot;
);                    break;                    case HTML_CENTER:                    printf(quot;
Empieza la etiqueta CENTER quot;
);                    break;                    case HTML_cCENTER:                    printf(quot;
Termina la etiqueta CENTER quot;
);                    break;                }                ietiqueta=0;            }            else            rollo();        }        while(c!=EOF);    }    fclose(archivo);    texto[itexto]=0;    printf(texto);    return EXIT_SUCCESS;}rollo(){    texto[itexto++]=c;}La salida del programa es la siguiente:Volver al principio© 1998, 1999 Virgilio Gómez Negrete, Derechos Reservados <br />Aspectos Generales:<br />URL: http://www.modelo.edu.mx/univ/virtech/prograc/clecesc.htm#superior <br />Utilización en el Aula:<br />Tipología: <br />Hecha por :Virgilio Gómez Negrete.No especifica su cargo o grado de Instrucción.<br />Destinatario: La página fue pensada para ser usada por alumnos de niveles avanzados, especialistas e investigadores y estudiantes.<br />Nivel: usuarios de nivel superior, estudiantes y profesionales.<br />Actividades: El sitio incluye actividades para realizar con los alumnos.<br />La página cuenta con diversos recursos y herramientas que  permiten la interacción, más no la descarga de materiales y suscripción a revistas. Está destinada principalmente a profesionales de la educación, siendo el nivel académico de sus contenidos en el área de educación profesional o superior. La página fue hecha en ciudad de  México.<br />Aspectos Curriculares:<br />Interés para el Profesorado y Estudiantil : La página sirve para uso del docente, y usuario común o estudiantil. <br />La página no permite descarga de materiales, libros digitales y si hay vínculos hacia otras páginas.<br />Aspectos Gráficos:<br />El entorno estático está diseñado con una fuente de tamaño normal para su lectura, los colores son suaves lo cual hace agradable la interfaz y posee imágenes.<br />En relación al entorno dinámico, posee ningún elemento animado.<br />No tiene elementos multimedia, tales como videos, archivos de imágenes o sonidos.<br />Aspectos Técnicos: <br />Libertad de Acceso: El acceso a la página es gratis y los usuarios no pueden suscribir a un envío de noticias vía correo electrónico para enterarse de las novedades de allí descritas.<br />Publicidad: no cuenta con enlaces a cursos pagos y promoción de eventos ni posee spam de publicidad.<br />Navegabilidad: si posee hipervínculos o enlaces dentro de la página. La navegabilidad en la página se hace ligera y no tarda en cargar , los vínculos uno solo no está correctamente activos.<br />Interactividad: No posee, foros, chat, si posee posibilidad de envío de mensajes, no cuenta con cuestionarios. No tiene un blog y si un correo de contacto.<br />Conclusión:<br />La página se adapta un poco más a los requerimientos académicos de la asignatura pero no totalmente lo que será utilizada como material de consulta para el profesor. <br />Ejemplo de página 3:<br />Previo:  HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/manual.htmlquot;
 Manual de C Arriba:  HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/manual.htmlquot;
 Manual de C Siguiente:  HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
 1. Compilación de un programa <br />Regresar <br />Índice General <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
 1. Compilación de un programa en C/C++ <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
  quot;
SECTION00210000000000000000quot;
 1.1 Creación, compilación y ejecución de un programa <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
  quot;
SECTION00211000000000000000quot;
 1.1.1 Creación del programa <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
  quot;
SECTION00212000000000000000quot;
 1.1.2 Compilación <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
  quot;
SECTION00213000000000000000quot;
 1.1.3 Ejecución del programa <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
  quot;
SECTION00220000000000000000quot;
 1.2 El modelo de compilación de C <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
  quot;
SECTION00230000000000000000quot;
 1.3 El preprocesador <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
  quot;
SECTION00240000000000000000quot;
 1.4 Compilador de C <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
  quot;
SECTION00250000000000000000quot;
 1.5 Ensamblador <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
  quot;
SECTION00260000000000000000quot;
 1.6 Ligador <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
  quot;
SECTION00270000000000000000quot;
 1.7 Algunas opciones útiles del compilador <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
  quot;
SECTION00280000000000000000quot;
 1.8 Uso de las bibliotecas <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
  quot;
SECTION00290000000000000000quot;
 1.9 Ejemplos <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
  quot;
SECTION00291000000000000000quot;
 1.9.1 Creación de una biblioteca estática <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
  quot;
SECTION00292000000000000000quot;
 1.9.2 Creación de una biblioteca compartida <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
  quot;
SECTION002100000000000000000quot;
 1.10 Funciones de la biblioteca de UNIX <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
  quot;
SECTION002101000000000000000quot;
 1.10.1 Encontrando información acerca de las bibliotecas. <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node2.htmlquot;
  quot;
SECTION002110000000000000000quot;
 1.11 Ejercicios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node3.htmlquot;
 2. Principios de C <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node3.htmlquot;
  quot;
SECTION00310000000000000000quot;
 2.1 Orígenes del C <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node3.htmlquot;
  quot;
SECTION00320000000000000000quot;
 2.2 Características de C <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node3.htmlquot;
  quot;
SECTION00330000000000000000quot;
 2.3 Estructura de un programa en C <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node3.htmlquot;
  quot;
SECTION00340000000000000000quot;
 2.4 Variables <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node3.htmlquot;
  quot;
SECTION00341000000000000000quot;
 2.4.1 Definición de variables globales <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node3.htmlquot;
  quot;
SECTION00342000000000000000quot;
 2.4.2 Lectura y escritura de variables <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node3.htmlquot;
  quot;
SECTION00350000000000000000quot;
 2.5 Constantes <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node3.htmlquot;
  quot;
SECTION00360000000000000000quot;
 2.6 Operadores Aritméticos <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node3.htmlquot;
  quot;
SECTION00370000000000000000quot;
 2.7 Operadores de Comparación <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node3.htmlquot;
  quot;
SECTION00380000000000000000quot;
 2.8 Operadores lógicos <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node3.htmlquot;
  quot;
SECTION00390000000000000000quot;
 2.9 Orden de precedencia <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node3.htmlquot;
  quot;
SECTION003100000000000000000quot;
 2.10 Ejercicios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node4.htmlquot;
 3. Estructuras Condicionales <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node4.htmlquot;
  quot;
SECTION00410000000000000000quot;
 3.1 La sentencia if <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node4.htmlquot;
  quot;
SECTION00420000000000000000quot;
 3.2 El operador ? <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node4.htmlquot;
  quot;
SECTION00430000000000000000quot;
 3.3 La sentencia switch <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node4.htmlquot;
  quot;
SECTION00440000000000000000quot;
 3.4 Ejercicios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node5.htmlquot;
 4. Iteración <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node5.htmlquot;
  quot;
SECTION00510000000000000000quot;
 4.1 La sentencia for <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node5.htmlquot;
  quot;
SECTION00520000000000000000quot;
 4.2 La sentencia while <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node5.htmlquot;
  quot;
SECTION00530000000000000000quot;
 4.3 La sentencia do-while <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node5.htmlquot;
  quot;
SECTION00540000000000000000quot;
 4.4 Uso de break y continue <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node5.htmlquot;
  quot;
SECTION00550000000000000000quot;
 4.5 Ejercicios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node6.htmlquot;
 5. Arreglos y cadenas <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node6.htmlquot;
  quot;
SECTION00610000000000000000quot;
 5.1 Arreglos unidimensionales y multidimensionales <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node6.htmlquot;
  quot;
SECTION00620000000000000000quot;
 5.2 Cadenas <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node6.htmlquot;
  quot;
SECTION00630000000000000000quot;
 5.3 Ejercicios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node7.htmlquot;
 6. Funciones <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node7.htmlquot;
  quot;
SECTION00710000000000000000quot;
 6.1 Funciones void <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node7.htmlquot;
  quot;
SECTION00720000000000000000quot;
 6.2 Funciones y arreglos <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node7.htmlquot;
  quot;
SECTION00730000000000000000quot;
 6.3 Prototipos de funciones <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node7.htmlquot;
  quot;
SECTION00740000000000000000quot;
 6.4 Ejercicios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node8.htmlquot;
 7. Más tipos de datos <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node8.htmlquot;
  quot;
SECTION00810000000000000000quot;
 7.1 Estructuras <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node8.htmlquot;
  quot;
SECTION00811000000000000000quot;
 7.1.1 Definición de nuevos tipos de datos <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node8.htmlquot;
  quot;
SECTION00820000000000000000quot;
 7.2 Uniones <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node8.htmlquot;
  quot;
SECTION00830000000000000000quot;
 7.3 Conversión de tipos (casts) <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node8.htmlquot;
  quot;
SECTION00840000000000000000quot;
 7.4 Enumeraciones <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node8.htmlquot;
  quot;
SECTION00850000000000000000quot;
 7.5 Variables estáticas <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node8.htmlquot;
  quot;
SECTION00860000000000000000quot;
 7.6 Ejercicios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node9.htmlquot;
 8. Apuntadores <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node9.htmlquot;
  quot;
SECTION00910000000000000000quot;
 8.1 Definición de un apuntador <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node9.htmlquot;
  quot;
SECTION00920000000000000000quot;
 8.2 Apuntadores y Funciones <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node9.htmlquot;
  quot;
SECTION00930000000000000000quot;
 8.3 Apuntadores y arreglos <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node9.htmlquot;
  quot;
SECTION00940000000000000000quot;
 8.4 Arreglos de apuntadores <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node9.htmlquot;
  quot;
SECTION00950000000000000000quot;
 8.5 Arreglos multidimensionales y apuntadores <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node9.htmlquot;
  quot;
SECTION00960000000000000000quot;
 8.6 Inicialización estática de arreglos de apuntadores <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node9.htmlquot;
  quot;
SECTION00970000000000000000quot;
 8.7 Apuntadores y estructuras <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node9.htmlquot;
  quot;
SECTION00980000000000000000quot;
 8.8 Fallas comunes con apuntadores <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node9.htmlquot;
  quot;
SECTION00990000000000000000quot;
 8.9 Ejercicios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node10.htmlquot;
 9. Asignación dinámica de memoria y Estructuras dinámicas <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node10.htmlquot;
  quot;
SECTION001010000000000000000quot;
 9.1 Uso de malloc, sizeof y free <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node10.htmlquot;
  quot;
SECTION001020000000000000000quot;
 9.2 calloc y realloc <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node10.htmlquot;
  quot;
SECTION001030000000000000000quot;
 9.3 Listas ligadas <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node10.htmlquot;
  quot;
SECTION001040000000000000000quot;
 9.4 Programa de revisión <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node10.htmlquot;
  quot;
SECTION001050000000000000000quot;
 9.5 Ejercicios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node11.htmlquot;
 10. Tópicos avanzados con apuntadores <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node11.htmlquot;
  quot;
SECTION001110000000000000000quot;
 10.1 Apuntadores a apuntadores <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node11.htmlquot;
  quot;
SECTION001120000000000000000quot;
 10.2 Entrada en la línea de comandos <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node11.htmlquot;
  quot;
SECTION001130000000000000000quot;
 10.3 Apuntadores a funciones <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node11.htmlquot;
  quot;
SECTION001140000000000000000quot;
 10.4 Ejercicios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node12.htmlquot;
 11. Operadores de bajo nivel y campos de bit <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node12.htmlquot;
  quot;
SECTION001210000000000000000quot;
 11.1 Operadores sobre bits <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node12.htmlquot;
  quot;
SECTION001220000000000000000quot;
 11.2 Campos de bit <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node12.htmlquot;
  quot;
SECTION001221000000000000000quot;
 11.2.1 Portabilidad <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node12.htmlquot;
  quot;
SECTION001230000000000000000quot;
 11.3 Ejercicios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node13.htmlquot;
 12. El preprocesador de C <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node13.htmlquot;
  quot;
SECTION001310000000000000000quot;
 12.1 Directivas del preprocesador <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node13.htmlquot;
  quot;
SECTION001311000000000000000quot;
 12.1.1 #define <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node13.htmlquot;
  quot;
SECTION001312000000000000000quot;
 12.1.2 #undef <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node13.htmlquot;
  quot;
SECTION001313000000000000000quot;
 12.1.3 #include <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node13.htmlquot;
  quot;
SECTION001314000000000000000quot;
 12.1.4 #if Inclusión condicional <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node13.htmlquot;
  quot;
SECTION001320000000000000000quot;
 12.2 Control del preprocesador del compilador <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node13.htmlquot;
  quot;
SECTION001330000000000000000quot;
 12.3 Otras directivas del preprocesador <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node13.htmlquot;
  quot;
SECTION001340000000000000000quot;
 12.4 Ejercicios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node14.htmlquot;
 13. C, UNIX y las bibliotecas estándar <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node14.htmlquot;
  quot;
SECTION001410000000000000000quot;
 13.1 Ventajas del usar UNIX con C <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node14.htmlquot;
  quot;
SECTION001420000000000000000quot;
 13.2 Uso de funciones de bibliotecas y llamadas del sistema <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node15.htmlquot;
 14. Biblioteca <stdlib.h> <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node15.htmlquot;
  quot;
SECTION001510000000000000000quot;
 14.1 Funciones aritméticas <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node15.htmlquot;
  quot;
SECTION001520000000000000000quot;
 14.2 Números aleatorios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node15.htmlquot;
  quot;
SECTION001530000000000000000quot;
 14.3 Conversión de cadenas <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node15.htmlquot;
  quot;
SECTION001540000000000000000quot;
 14.4 Búsqueda y ordenamiento <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node15.htmlquot;
  quot;
SECTION001550000000000000000quot;
 14.5 Ejercicios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node16.htmlquot;
 15. Biblioteca <math.h> <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node16.htmlquot;
  quot;
SECTION001610000000000000000quot;
 15.1 Funciones matemáticas <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node16.htmlquot;
  quot;
SECTION001620000000000000000quot;
 15.2 Constantes matemáticas <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node17.htmlquot;
 16. Entrada y salida (E/S) stdio.h <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node17.htmlquot;
  quot;
SECTION001710000000000000000quot;
 16.1 Reportando errores <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node17.htmlquot;
  quot;
SECTION001711000000000000000quot;
 16.1.1 perror() <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node17.htmlquot;
  quot;
SECTION001712000000000000000quot;
 16.1.2 errno <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node17.htmlquot;
  quot;
SECTION001713000000000000000quot;
 16.1.3 exit <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node17.htmlquot;
  quot;
SECTION001720000000000000000quot;
 16.2 Flujos <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node17.htmlquot;
  quot;
SECTION001721000000000000000quot;
 16.2.1 Flujos predefinidos <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node17.htmlquot;
  quot;
SECTION001730000000000000000quot;
 16.3 E/S Basica <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node17.htmlquot;
  quot;
SECTION001740000000000000000quot;
 16.4 E/S formateada <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node17.htmlquot;
  quot;
SECTION001741000000000000000quot;
 16.4.1 printf <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node17.htmlquot;
  quot;
SECTION001742000000000000000quot;
 16.4.2 scanf <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node17.htmlquot;
  quot;
SECTION001750000000000000000quot;
 16.5 Archivos <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node17.htmlquot;
  quot;
SECTION001751000000000000000quot;
 16.5.1 Lectura y escritura de archivos <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node17.htmlquot;
  quot;
SECTION001760000000000000000quot;
 16.6 sprintf y sscanf <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node17.htmlquot;
  quot;
SECTION001761000000000000000quot;
 16.6.1 Petición del estado del flujo <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node17.htmlquot;
  quot;
SECTION001770000000000000000quot;
 16.7 E/S de bajo nivel o sin almacenamiento intermedio <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node17.htmlquot;
  quot;
SECTION001780000000000000000quot;
 16.8 Ejercicios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node18.htmlquot;
 17. Manejo de cadenas <string.h> <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node18.htmlquot;
  quot;
SECTION001810000000000000000quot;
 17.1 Funciones básicas para el manejo de cadenas <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node18.htmlquot;
  quot;
SECTION001811000000000000000quot;
 17.1.1 Búsqueda en cadenas <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node18.htmlquot;
  quot;
SECTION001820000000000000000quot;
 17.2 Prueba y conversión de caracteres <ctype.h> <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node18.htmlquot;
  quot;
SECTION001830000000000000000quot;
 17.3 Operaciones con la memoria <memory.h> <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node18.htmlquot;
  quot;
SECTION001840000000000000000quot;
 17.4 Ejercicios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node19.htmlquot;
 18. Acceso de Archivos y llamadas al sistema de directorios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node19.htmlquot;
  quot;
SECTION001910000000000000000quot;
 18.1 Funciones para el manejo de directorios <unistd.h> <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node19.htmlquot;
  quot;
SECTION001911000000000000000quot;
 18.1.1 Busqueda y ordenamiento de directorios: sys/types.h,sys/dir.h <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node19.htmlquot;
  quot;
SECTION001920000000000000000quot;
 18.2 Rutinas de manipulación de archivos: unistd.h, sys/types.h, sys/stat.h <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node19.htmlquot;
  quot;
SECTION001921000000000000000quot;
 18.2.1 Permisos de accesos a archivos <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node19.htmlquot;
  quot;
SECTION001922000000000000000quot;
 18.2.2 Estado de un archivo <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node19.htmlquot;
  quot;
SECTION001923000000000000000quot;
 18.2.3 Manipulación de archivos: stdio.h, unistd.h <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node19.htmlquot;
  quot;
SECTION001924000000000000000quot;
 18.2.4 Creación de archivos temporales: <stdio.h> <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node19.htmlquot;
  quot;
SECTION001930000000000000000quot;
 18.3 Ejercicios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node20.htmlquot;
 19. Funciones para el tiempo <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node20.htmlquot;
  quot;
SECTION002010000000000000000quot;
 19.1 Funciones básicas para el tiempo <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node20.htmlquot;
  quot;
SECTION002020000000000000000quot;
 19.2 Ejemplos de aplicaciones de funciones del tiempo. <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node20.htmlquot;
  quot;
SECTION002021000000000000000quot;
 19.2.1 Ejemplo 1: Tiempo (en segundos) para hacer algún cálculo. <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node20.htmlquot;
  quot;
SECTION002022000000000000000quot;
 19.2.2 Ejemplo 2: Inicializar la semilla de un número aleatorio. <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node20.htmlquot;
  quot;
SECTION002030000000000000000quot;
 19.3 Ejercicios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node21.htmlquot;
 20. Control de procesos: <stdlib.h>, <unistd.h> <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node21.htmlquot;
  quot;
SECTION002110000000000000000quot;
 20.1 Ejecutando comandos de UNIX desde C <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node21.htmlquot;
  quot;
SECTION002120000000000000000quot;
 20.2 execl() <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node21.htmlquot;
  quot;
SECTION002130000000000000000quot;
 20.3 fork() <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node21.htmlquot;
  quot;
SECTION002140000000000000000quot;
 20.4 wait() <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node21.htmlquot;
  quot;
SECTION002150000000000000000quot;
 20.5 exit() <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node21.htmlquot;
  quot;
SECTION002160000000000000000quot;
 20.6 Ejercicios <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node22.htmlquot;
 21. Compilación de Programas con Archivos Múltiples <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node22.htmlquot;
  quot;
SECTION002210000000000000000quot;
 21.1 Archivos Cabezera <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node22.htmlquot;
  quot;
SECTION002220000000000000000quot;
 21.2 Variables y Funciones Externas <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node22.htmlquot;
  quot;
SECTION002221000000000000000quot;
 21.2.1 Alcance de las variables externas <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node22.htmlquot;
  quot;
SECTION002230000000000000000quot;
 21.3 Ventajas de Usar Varios Archivos <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node22.htmlquot;
  quot;
SECTION002240000000000000000quot;
 21.4 Como dividir un programa en varios archivos <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node22.htmlquot;
  quot;
SECTION002250000000000000000quot;
 21.5 Organización de los Datos en cada Archivo <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node22.htmlquot;
  quot;
SECTION002260000000000000000quot;
 21.6 La utilería Make <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node22.htmlquot;
  quot;
SECTION002261000000000000000quot;
 21.6.1 Programando Make <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node22.htmlquot;
  quot;
SECTION002270000000000000000quot;
 21.7 Creación de un Archivo Make (Makefile) <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node22.htmlquot;
  quot;
SECTION002280000000000000000quot;
 21.8 Uso de macros con Make <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node22.htmlquot;
  quot;
SECTION002290000000000000000quot;
 21.9 Ejecución de Make <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node23.htmlquot;
 22. Comunicación entre procesos (IPC Interprocess Communication), PIPES <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node23.htmlquot;
  quot;
SECTION002310000000000000000quot;
 22.1 Entubando en un programa de C <stdio.h> <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node23.htmlquot;
  quot;
SECTION002311000000000000000quot;
 22.1.1 popen() Tubería formateada <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node23.htmlquot;
  quot;
SECTION002312000000000000000quot;
 22.1.2 pipe() Tubería de bajo nivel <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node24.htmlquot;
 23. Sockets <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node24.htmlquot;
  quot;
SECTION002410000000000000000quot;
 23.1 Creación y nombrado de sockets <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node24.htmlquot;
  quot;
SECTION002420000000000000000quot;
 23.2 Conectando sockets de flujo <br /> HYPERLINK quot;
http://www.fismat.umich.mx/mn1/manual/node24.htmlquot;
  quot;
SECTION002421000000000000000quot;
 23.2.1 Transferencia de datos en un flujo y cerrado <br />Última modificación : 2005-08-12Héctor Tejeda Vhtejeda@fismat.umich.mx <br />Aspectos Generales:<br />URL: http://www.fismat.umich.mx/mn1/manual/node1.html<br />Utilización en el Aula:<br />Tipología: <br />Hecha por : Héctor Tejeda V. No especifica su cargo o grado de Instrucción.<br />Destinatario: La página fue pensada para ser usada por alumnos de niveles avanzados, especialistas e investigadores y estudiantes.<br />Nivel: usuarios de nivel superior, estudiantes y profesionales.<br />Actividades: El sitio no incluye actividades para realizar con los alumnos.<br />La página no cuenta con diversos recursos y herramientas que  permiten la interacción, más no la descarga de materiales y suscripción a revistas. Está destinada principalmente a profesionales de la educación, siendo el nivel académico de sus contenidos en el área de educación profesional o superior. La página fue hecha en ciudad de  México.<br />Aspectos Curriculares:<br />Interés para el Profesorado y Estudiantil: La página sirve para uso del docente, y usuario común o estudiantil. <br />La página no permite descarga de materiales, libros digitales y si hay vínculos hacia otras páginas.<br />Aspectos Gráficos:<br />El entorno estático está diseñado con una fuente de tamaño normal para su lectura, los colores son suaves lo cual hace agradable la interfaz y no posee imágenes.<br />En relación al entorno dinámico, no posee ningún elemento animado.<br />No tiene elementos multimedia, tales como videos, archivos de imágenes o sonidos.<br />Aspectos Técnicos: <br />Libertad de Acceso: El acceso a la página es gratis y los usuarios no pueden suscribir a un envío de noticias vía correo electrónico para enterarse de las novedades de allí descritas.<br />Publicidad: no cuenta con enlaces a cursos pagos y promoción de eventos ni posee spam de publicidad.<br />Navegabilidad: si posee hipervínculos o enlaces dentro de la página. La navegabilidad en la página se hace ligera y no tarda en cargar, los vínculos están correctamente activos.<br />Interactividad: No posee, foros, chat, si posee posibilidad de envío de mensajes, no cuenta con cuestionarios. No tiene un blog y si posee  un correo de contacto.<br />Conclusión:<br />La página se adapta un poco más a los requerimientos académicos de la asignatura pero no totalmente por lo que será utilizada solo como material de consulta para el profesor.<br />
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb
Tarea pagweb

Mais conteúdo relacionado

Mais procurados

Mais procurados (17)

Archivos en c clase unsam
Archivos en c clase unsamArchivos en c clase unsam
Archivos en c clase unsam
 
Gestion de archivos
Gestion de archivosGestion de archivos
Gestion de archivos
 
Ficheros C++
Ficheros C++Ficheros C++
Ficheros C++
 
Manejo de archivosss
Manejo de archivosssManejo de archivosss
Manejo de archivosss
 
Manejo de archivos en c++
Manejo de archivos en c++Manejo de archivos en c++
Manejo de archivos en c++
 
77 Php. AñAdir Nuevas Fuentes Para Pdf
77 Php. AñAdir Nuevas Fuentes Para Pdf77 Php. AñAdir Nuevas Fuentes Para Pdf
77 Php. AñAdir Nuevas Fuentes Para Pdf
 
Archivos en C
Archivos en CArchivos en C
Archivos en C
 
Lectura y-escritura-desde-archivos
Lectura y-escritura-desde-archivosLectura y-escritura-desde-archivos
Lectura y-escritura-desde-archivos
 
Dev c++
Dev c++Dev c++
Dev c++
 
TALLER FLEX Y BISON
TALLER FLEX Y BISONTALLER FLEX Y BISON
TALLER FLEX Y BISON
 
Python para ingenieros civiles.pdf
Python para ingenieros civiles.pdfPython para ingenieros civiles.pdf
Python para ingenieros civiles.pdf
 
Archivos de Cabecera.
Archivos de Cabecera.Archivos de Cabecera.
Archivos de Cabecera.
 
Ficheros de cabecera
Ficheros de cabecera Ficheros de cabecera
Ficheros de cabecera
 
16 Archivos
16 Archivos16 Archivos
16 Archivos
 
Ficheros
FicherosFicheros
Ficheros
 
Procedimiento Para Utilizar Flex Y Bison
Procedimiento Para Utilizar Flex Y Bison Procedimiento Para Utilizar Flex Y Bison
Procedimiento Para Utilizar Flex Y Bison
 
Ficheros cyc++
Ficheros cyc++Ficheros cyc++
Ficheros cyc++
 

Destaque

Discover Nilgiri's Best Kept Secret
Discover Nilgiri's Best Kept SecretDiscover Nilgiri's Best Kept Secret
Discover Nilgiri's Best Kept SecretDreeme Kochi
 
Elementos factores-clima-1193079532996218-1
Elementos factores-clima-1193079532996218-1Elementos factores-clima-1193079532996218-1
Elementos factores-clima-1193079532996218-1pilarpallardo
 
Terzo fumetto opel adam
Terzo fumetto opel adamTerzo fumetto opel adam
Terzo fumetto opel adamAutoblog.it
 
KNBCongres2012
KNBCongres2012KNBCongres2012
KNBCongres2012Erik Vos
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativoconrado123
 
Palestina
PalestinaPalestina
PalestinaNyme He
 
2011 DFC taiwan-CHI-017 多種樹,拯救地球
2011 DFC taiwan-CHI-017 多種樹,拯救地球2011 DFC taiwan-CHI-017 多種樹,拯救地球
2011 DFC taiwan-CHI-017 多種樹,拯救地球Design For Change Taiwan
 
Clase de música de educación primaría
Clase de música de educación primaríaClase de música de educación primaría
Clase de música de educación primaríacrisrosado
 
Power point gimp 1º
Power point gimp 1ºPower point gimp 1º
Power point gimp 1ºcarlarincon
 
A4 diseno 2010_es (1)
A4 diseno 2010_es (1)A4 diseno 2010_es (1)
A4 diseno 2010_es (1)Ruth Ribera
 
Conmutacion en los equipos telefonicos
Conmutacion en los equipos telefonicosConmutacion en los equipos telefonicos
Conmutacion en los equipos telefonicosJulio T
 
Aplicaciones de Office
Aplicaciones de OfficeAplicaciones de Office
Aplicaciones de OfficeUNID
 
2011 DFC taiwan-CHI-023 節能減碳-走路上下學
2011 DFC taiwan-CHI-023 節能減碳-走路上下學2011 DFC taiwan-CHI-023 節能減碳-走路上下學
2011 DFC taiwan-CHI-023 節能減碳-走路上下學Design For Change Taiwan
 

Destaque (20)

Discover Nilgiri's Best Kept Secret
Discover Nilgiri's Best Kept SecretDiscover Nilgiri's Best Kept Secret
Discover Nilgiri's Best Kept Secret
 
Elementos factores-clima-1193079532996218-1
Elementos factores-clima-1193079532996218-1Elementos factores-clima-1193079532996218-1
Elementos factores-clima-1193079532996218-1
 
Terzo fumetto opel adam
Terzo fumetto opel adamTerzo fumetto opel adam
Terzo fumetto opel adam
 
KNBCongres2012
KNBCongres2012KNBCongres2012
KNBCongres2012
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 
Palestina
PalestinaPalestina
Palestina
 
Merchandising (1)
Merchandising (1)Merchandising (1)
Merchandising (1)
 
Vg proyecto 2012
Vg proyecto 2012Vg proyecto 2012
Vg proyecto 2012
 
Presemte simple 2
Presemte simple 2Presemte simple 2
Presemte simple 2
 
Edital efetivo uva
Edital efetivo uvaEdital efetivo uva
Edital efetivo uva
 
2011 DFC taiwan-CHI-017 多種樹,拯救地球
2011 DFC taiwan-CHI-017 多種樹,拯救地球2011 DFC taiwan-CHI-017 多種樹,拯救地球
2011 DFC taiwan-CHI-017 多種樹,拯救地球
 
Clase de música de educación primaría
Clase de música de educación primaríaClase de música de educación primaría
Clase de música de educación primaría
 
Power point gimp 1º
Power point gimp 1ºPower point gimp 1º
Power point gimp 1º
 
A4 diseno 2010_es (1)
A4 diseno 2010_es (1)A4 diseno 2010_es (1)
A4 diseno 2010_es (1)
 
Conmutacion en los equipos telefonicos
Conmutacion en los equipos telefonicosConmutacion en los equipos telefonicos
Conmutacion en los equipos telefonicos
 
O que é uma constituição
O que é uma constituiçãoO que é uma constituição
O que é uma constituição
 
Ley cexma 2008
Ley cexma 2008Ley cexma 2008
Ley cexma 2008
 
Salud y Etiica
Salud y EtiicaSalud y Etiica
Salud y Etiica
 
Aplicaciones de Office
Aplicaciones de OfficeAplicaciones de Office
Aplicaciones de Office
 
2011 DFC taiwan-CHI-023 節能減碳-走路上下學
2011 DFC taiwan-CHI-023 節能減碳-走路上下學2011 DFC taiwan-CHI-023 節能減碳-走路上下學
2011 DFC taiwan-CHI-023 節能減碳-走路上下學
 

Semelhante a Tarea pagweb

Semelhante a Tarea pagweb (20)

Manejo dearchivosc
Manejo dearchivoscManejo dearchivosc
Manejo dearchivosc
 
Archivos c
Archivos cArchivos c
Archivos c
 
Archivos c
Archivos cArchivos c
Archivos c
 
Fichero c y c++
Fichero c y c++Fichero c y c++
Fichero c y c++
 
Grupo nro4ficheros
Grupo nro4ficherosGrupo nro4ficheros
Grupo nro4ficheros
 
Archivos
ArchivosArchivos
Archivos
 
Manejo_archivos.ppt
Manejo_archivos.pptManejo_archivos.ppt
Manejo_archivos.ppt
 
Lectura y Escritura de archivos a MatLab
Lectura y Escritura de archivos a MatLabLectura y Escritura de archivos a MatLab
Lectura y Escritura de archivos a MatLab
 
Utp pti_s11_archivos
 Utp pti_s11_archivos Utp pti_s11_archivos
Utp pti_s11_archivos
 
Funciones C (gnu/linux)
Funciones C (gnu/linux)Funciones C (gnu/linux)
Funciones C (gnu/linux)
 
Archivo de datos
Archivo de datosArchivo de datos
Archivo de datos
 
ARCHIVOS DEL LENGUAJE C
ARCHIVOS DEL LENGUAJE CARCHIVOS DEL LENGUAJE C
ARCHIVOS DEL LENGUAJE C
 
2-Archivos.ppt
2-Archivos.ppt2-Archivos.ppt
2-Archivos.ppt
 
PERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSPERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOS
 
Lab archivos
Lab archivosLab archivos
Lab archivos
 
Manejo de archivos en el lenguaje C
Manejo de archivos en el lenguaje CManejo de archivos en el lenguaje C
Manejo de archivos en el lenguaje C
 
03. Archivos Completo Obliogatorio Para Imprimir.pdf
03. Archivos Completo Obliogatorio Para Imprimir.pdf03. Archivos Completo Obliogatorio Para Imprimir.pdf
03. Archivos Completo Obliogatorio Para Imprimir.pdf
 
Primera Clase
Primera ClasePrimera Clase
Primera Clase
 
Ficheros Php
Ficheros PhpFicheros Php
Ficheros Php
 
ARCHIVO EN LENGUAJE C
ARCHIVO EN LENGUAJE C ARCHIVO EN LENGUAJE C
ARCHIVO EN LENGUAJE C
 

Último

5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONALMiNeyi1
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptxRigoTito
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfMercedes Gonzalez
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfpatriciaines1993
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosJonathanCovena1
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfPaolaRopero2
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdfValeriaCorrea29
 
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOBRIGIDATELLOLEONARDO
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfUPTAIDELTACHIRA
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfAlfaresbilingual
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Juan Martín Martín
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdfMiNeyi1
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 

Último (20)

5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficios
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdf
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdf
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 

Tarea pagweb

  • 1. Nombre de la Asignatura: Programación I<br />Ejemplo de Pagina 1:<br />Universidad Simón Bolívar<br />Departamento de Computación<br />CI2126 Computación II <br />Gabriela Ochoa<br />Lectura y Escritura en Archivos Secuenciales<br />La clase de hoy cubre la creación, lectura y escritura de archivos. Adicionalmente veremos como pasar argumentos desde la línea de comandos al programa. Un aspecto importante de cualquier programa, es su habilidad de comunicarse con el mundo exterior. La lectura de archivos con datos de entrada, y la escritura de archivos de salida con los resultados, constituye una manera simple pero efectiva de comunicación.<br />Funciones de Librería para la Entrada y Salida (E/S) de Archivos<br />Existen rutinas para abrir y cerrar archivos, y para leer y escribir en ellos utilizando datos formateados, de manera similar a como se hace el formato de datos para entrada y salida en pantalla.<br />La función fopen se utiliza para abrir un archivo, y asociarle una variable apuntador a archivo con la cual el programa puede referirse a la fuente del archivo. El prototipo de fopen es:<br />FILE *fopen(const char *filename, const char *modo);<br />fopen retorna un apundador al archivo si la llamada fue exitosa, y si no, retorna NULL. El apuntador al archivo se utiliza para identificar la fuente del mismo, se pasa como parámetro a las rutinas de escritura, lectura y manejo del archivo. El filename y modo son cadenas de caracteres. Los modos válidos son:<br />ModoUsorAbre para lecturawAbre o crea para escritura. Descarta (destruye) cualquier contenido previoaAbre o crea para escritura. Agrega a (escribe después de) cualquier contenido previor+Abre para modificaciones (lectura y escritura)w+Abre o crea para modificación. Descarta (destruye) cualquier contenido previoa+Abre o crea para modificación. Agrega a cualquier contenido previo<br />Para declarar una variable de tipo apuntador a archivo:<br />#include <stdlib.h><br />FILE *fp;<br />Ejemplo de apertura de un archivo:<br />fp = fopen(quot; datos.txtquot; ,quot; wquot; );<br />La función fflush se usa para físicamente escribir (bajar) en el archivo cualquier data almacenada en el quot; bufferquot; intermedio. Para hacer los programas más eficientes y reducir las llamadas al sistema, los archivos mantienen un buffer (memoria) intermedia, una vez que el buffer está lleno, los datos se escriben en el archivo. La rutina fflush fuerza a que el buffer sea escrito en el archivo asociado. Su prototipo es:<br />int fflush(FILE *fp);<br />Recibe un apuntador a archivo como parámetro. Retorna cero si la llamada fue exitosa y EOF si no lo fue. EOF es una constante especial que denota que se ha llegado al final del archivo.<br />Para cerrar los archivos se utiliza la función fclose. Su prototipo es:<br />int fclose(FILE *fp);<br />Fclose retorna cero si fue exitosa y EOF si hubo alguna falla.<br />Para escribir datos en un archivo se utiliza la fprintf. Esta función es muy similar a printf, que ya sabemos manejar bien. La única diferencia es que fprintf tiene un argumento adicional, el apuntador a archivo que especifica la fuente donde queremos escribir. Su prototipo es:<br />int fprintf(FILE *fp, const char* format, ....);<br />fprintf retorna el número de caracteres que fueron escritos exitosamente o un número negativo en caso de falla.<br />Para leer datos de un archivo se utiliza la función fscanf. Esta función es muy similar a scanf, que ya sabemos manejar bien. La única diferencia es que fscanf tiene un argumento adicional, el apundador a archivo que especifica la fuente de donde queremos leer. Recuerden que los argumentos para guardar datos deben ser apuntadores (i.e, llevan & en caso de ser variables simples, y solo el nombre en caso de ser arreglos de caracteres). Su prototipo es:<br />int fscanf(FILE *stream, const char* format, ....);<br />Ejemplo<br />El siguiente programa abre un archivo que contiene un nombre y cedula de identidad. Luego abre un archivo de salida y escribe estos datos (pero en orden invertido). El archivo de entrada fue creado con un editor de texto.<br />Archivo de entrada: entrada.txt<br />Pedro 18878798<br />#include <stdio.h><br />int main()<br />{ <br /> char ifilename[] = quot; entrada.txtquot; ;<br /> char ofilename[] = quot; salida.txtquot; ;<br /> char name[30];<br /> int idNum;<br /> FILE *ofp, *ifp; /* Declara apuntadores a archivo */<br /> ifp = fopen(ifilename,quot; rquot; ); /* Abre archivo de entrada */<br /> fscanf(ifp,quot; %s %dquot; ,name,&idNum); /* Lee datos de entrada */<br /> ofp = fopen(ofilename,quot; wquot; ); /* Abre archivo de salida */<br /> fprintf(ofp,quot; %d %squot; ,idNum, name); /* Escribe los datos */<br /> fclose(ifp); fclose(ofp); /* Cierra los archivos */<br /> return 0;<br />} <br />Archivo de salida: salida.txt<br />18878798 Pedro <br />Ejercicio de Practica<br />Extender el ejercicio anterior para que sea capaz de leer y escribir múltiples pares de nombres y cédulas. Sugerencia: Crear un ciclo y chequear cuando la rutina scanf retorna EOF.<br />Solucion:<br />#include <stdio.h><br />int main(){<br />char ifilename[] = quot; c:/entrada.txtquot; ;<br />char ofilename[] = quot; c:/salida.txtquot; ;<br />char name[30];<br />int idNum;<br />FILE *ofp, *ifp;<br />ifp = fopen(ifilename,quot; rquot; ); /* Abrir archivo entrada */<br />ofp = fopen(ofilename,quot; wquot; ); /* Abrir archivo salida */<br />while (fscanf(ifp,quot; %s %dquot; ,name,&idNum) != EOF) {/*Leer datos */<br /> fprintf(ofp,quot; %d %squot; ,idNum, name); /* Escribir datos */<br />}<br />fclose(ifp); fclose(ofp); /* Cerrar archivos */<br />return 0;<br />} <br />Otras Rutinas Útiles<br />int fgetc(FILE *fp); Retorna el siguiente carácter del archivo referenciado por fp, o EOF si se ha llegado al final del archivo. El tipo de retorno es int en lugar de char, debido a que el carácter EOF debe ser manejado.<br />int *fgets(char *s, int n, FILE *fp); Retorna un apuntador a la cadena de caracteres leída si resulta exitoso, o NULL si se llega al final del archivo o si ocurre un error. La cadena es también almacenada en el arreglo de caracteres especificado como argumento. Un máximo de n-1 caracteres serán leídos. Lo cual da espacio para guardar el carácter de fin de cadena ''.<br />int fputs(const char s*, FILE *fp); Escribe una cadena de caracteres en el archivo, retorna EOF si hubo alguna falla. <br />int fputc(int c, FILE *fp); Escribe un carácter solo en el archivo, si hubo algún problema devuelve EOF.<br />int sprintf(char *buffer, const char *format, ...); Esta función es similar a fprintf, excepto que los datos son escritos en un arreglo (o buffer) de caracteres en lugar de en un archivo de salida.<br />int sscanf(char *buffer, const char *format, ...); Esta función es similar a fscanf, excepto que los datos son leídos de un arreglo (o buffer) de caracteres en lugar de un archivo de entrada.<br />Argumentos de Línea de Comando<br />C provee un mecanismo para pasar argumentos desde la línea de comandos al programa que se va a ejecutar. Cuando el programa comienza su ejecución, la rutina main es llamada con dos argumentos: un contador y un apuntador a un arreglo de cadenas de caracteres. El contador es llamado por convención argc y el apuntador argv. El uso de argv es un poco truculento. Dado que argv es un apuntador a un arreglo de cadenas de caracteres, la primera cadena de caracteres es referenciada por argv[0] (o *argv). La segunda cadena es referenciada por argv[1] (o *(argv + 1)), la tercera por argv[2], y así sucesivamente. La primera cadena de caracteres, argv[0], contiene el nombre del programa. Los argumentos comienzan realmente con argv[1]. <br />Un ejemplo de llamada de un programa llamado copia, que copie un archivo en otro archivo seria: copia fuente.txt destino.txt. Esto es, el nombre del programa más dos argumentos que corresponderían a los nombres de los archivos fuente y destino.<br />Veamos un ejemplo que simplemente muestra los argumentos de un programa.<br />#include <stdio.h><br />int main(int argc, char *argv[])<br />{<br /> int i;<br /> fprintf(quot; The number of command line arguments is %dquot; , argc);<br /> fprintf(quot; The program name is %squot; ,argv[0]);<br /> for (i = 1; i < argc; i++) {<br /> fprintf(quot; %squot; ,argv[i]);<br /> }<br /> fprintf(quot; quot; );<br /> return 0;<br />}<br />Referencias<br />Tutorial de Programación en C , conciso y bien escrito, con enlaces a muchos otros recursos para la programación en C y C ++.<br />Ir a Pagina del Curso<br />Aspectos Generales:<br />URL:http://www.ldc.usb.ve/~gabro/teaching/CI2126/Clase2_Archivos.htm<br />Utilización en el Aula:<br />Tipología: La Universidad Simón Bolívar, Departamento de Computación, por :Gabriela Ochoa. No especifica su cargo o grado de Instrucción.<br />Destinatario: La página fue pensada para ser usada por alumnos de niveles avanzados, especialistas e investigadores.<br />Nivel: usuarios de superior, o profesional.<br />Actividades: El sitio no incluye actividades para realizar con los alumnos.<br />La página pertenece a la Universidad Simón Bolívar destinada al área educativa tecnológica. <br />La página es no es de tipo portal ya que no cuenta con diversos recursos y herramientas que permiten la interacción, descarga de materiales y suscripción a revistas. Está destinada principalmente a profesionales de la educación, siendo el nivel académico de sus contenidos en el área de educación profesional o superior. La página se encuentra en Venezuela.<br />Aspectos Curriculares:<br />Interés para el Profesorado: la página sirve solo para uso del docente. <br />La página no permite descarga de materiales, libros digitales y pero si hay vínculos hacia otras páginas.<br />Aspectos Gráficos:<br />El entorno estático está diseñado con una fuente de tamaño muy pequeño lo cual puede dificultar su lectura, los colores son suaves lo cual hace agradable la interfaz y no posee imágenes.<br />En relación al entorno dinámico, posee ningún elemento animado.<br />No tiene elementos multimedia, tales como videos, archivos de imágenes o sonidos.<br />Aspectos Técnicos: <br />Libertad de Acceso: El acceso a la página es gratis y los usuarios no pueden suscribir a un envío de noticias vía correo electrónico para enterarse de las novedades de allí descritas.<br />Publicidad: no cuenta con enlaces a cursos pagos y promoción de eventos ni posee spam de publicidad.<br />Navegabilidad: si posee hipervínculos o enlaces dentro de la página. La navegabilidad en la página se hace ligera y no tarda en cargar , los vínculos no todos están correctamente activos.<br />Interactividad : No posee, foros, chat, envío de mensajes, o cuestionarios. No cuenta con un blog y correo de contacto.<br />Conclusión:<br />La página no se adapta a los requerimientos académicos de la asignatura por lo que no será utilizada como material de consulta para mis estudiantes. Solo como material de apoyo docente.<br />Ejemplo 2:<br />Versión 3.0 <br />800x600 mínimo <br />En esta lección:Escritura-----Abrir un archivo-----Cerrar un archivo-----Concatenar datos-----Lectura-----Leer una palabra-----Leer una línea-----Asignación especial-----Otras secciones:Conceptos básicos-----Programando en C-----Programando en C++-----Programando Windows 9x.-----Teoría electrónica-----Circuitos electrónicos-----Actividades adicionales-----Hipervínculos-----Contácteme:Dudas y comentarios-----Escritura de un archivoA lo largo de ésta lección veremos la mecánica necesaria para escribir y leer datos a un archivo, empezaremos con la escritura. Como siempre, los códigos especifican en primer lugar algunas sentencias #include, y en el caso concreto del primer código de ejemplo se ha declarado un nuevo tipo de variable. Estudie el siguiente código:#include <stdio.h>#include <string.h>int main(){ FILE *fp; fp = fopen(quot; prueba.htmquot; , quot; wquot; ); /* Abrir archivo para escritura */ fprintf(fp, quot; <HTML> quot; ); fprintf(fp, quot; <BODY> quot; ); fprintf(fp, quot; Esta es la primera linea de texto. quot; ); fprintf(fp, quot; <CENTER>Esta es la segundaquot; quot; linea</CENTER> quot; ); fprintf(fp, quot; Y esta es la <B>tercera lineaquot; quot; de texto.</B> quot; ); fclose(fp); /* Cerrar el archivo antes de terminar el programa */ printf(quot; Se ha creado el archivo: prueba.htm quot; ); return 0;}El tipo FILE es una estructura (misma que estudiaremos en la siguiente lección) que estádefinida en el archivo de cabecera stdio.h, se usa para definir un puntero que se utilizará en operaciones con archivos. Por definición, C requiere para accesar a un archivo de un puntero de tipo FILE, como es normal, se puede utilizar cualquier nombre para representar dicho puntero, es común utilizar fp, así que éste nombre utilizamos en el primer código.Cómo abrir un archivoAntes de poder escribir datos en un archivo, debemos abrirlo, esto significa que debemos decirle al sistema que deseamos escribir en un archivo especificando el nombre del mismo, para esto utilizamos la función fopen ( ), especificada en la línea 8 del código. El puntero de archivo, fp en éste caso, señala a la estructura para el archivo siendo necesarios dos argumentos para ésta función, el nombre del archivo en primer lugar, y el atributo del archivo. El nombre del archivo es cualquier nombre válido para su sistema operativo y puede ser expresado sea en minúsculas ó mayúsculas, incluso si así lo desea, como una combinación de ámbas, el nombre se encierra entre comillas. En el ejemplo escogí el nombre prueba.htm. Es importante que en el directorio donde trabaje éstos ejemplos no exista un archivo con éste nombre pues al ejecutar el programa se sustituirán los datos del mismo, en caso de no existir un archivo con el nombre especificado, el programa lo creará.Lectura (quot; rquot; )El segundo parámetro es el atributo del archivo y puede ser cualquiera de éstas tres letras, quot; rquot; , quot; wquot; , ó quot; aquot; , y deben estar en letra minúscula. Existen atributos adicionales en C que permiten operaciones de Entrada/Salida (E/S) más flexibles por lo que es recomendable laconsulta de la documentación del compilador. Cuando se utiliza quot; rquot; el archivo se abre paraoperaciones de lectura, para operaciones de escritura utilizamos quot; wquot; y cuando se especifica quot; aquot; es porque deseamos agregar datos adicionales a los ya existentes en el archivo, o sea concatenar datos. Abrir un archivo para lectura implica la existencia del mismo, si ésta condición no es válida el puntero de archivo será igual a NULL y ésto puede ser verificado utilizando el siguiente código:if (fp==NULL){ printf(quot; Error al abrir el archivo quot; ); exit (1);}Es una buena práctica de programación checar todos los punteros de archivo en una forma similar al código de arriba, el valor de 1 utilizado como parámetro de exit ( ) será explicado más adelante.Escritura (quot; wquot; )Cuando un archivo se abre para operaciones de escritura, si éste no existe entonces será creado, y si existe será reescrito dando como resultado la pérdida de los datos existentes en el archivo previo. Si ocurre por alguna razón un error al abrir el archivo, el puntero dearchivo retorna un valor de NULL que puede ser checado como se especificó arriba.Concatenar (quot; aquot; )Cuando un archivo se abre para concatenar datos, si no existe será creado inicialmente vacío. Si el archivo existe, el punto de entrada de datos se situa al final de los datos existentes en el archivo, de ésta manera es como se agregan nuevos datos al archivo. El puntero de archivo se puede verificar como yá se explicó.Salida al archivoLa salida de datos hacia un archivo es prácticamente idéntica a la forma en quedesplegamos datos en el dispositivo estándar de salida, las únicas diferencias reales son el nombre de una nueva función y la adición del puntero de archivo como uno de los argumentos de la función. En el código de ejemplo, la función fprintf ( ) reemplaza a la familiar printf ( ) y el puntero de archivo vá como argumento dentro del paréntesis de lafunción, como se aprecia en las líneas 9 a la 13 del código de ejemplo.Cerrando el archivoPara cerrar un archivo se utiliza la función fclose ( ) con el puntero de archivo dentro delparéntesis. En algunos programas sencillos no es necesario cerrar el archivo ya que el sistema operativo se encarga de cerrar los archivos que hayan quedado abiertos antes de retornar el control al usuario, sin embargo es buena práctica cerrar en código todo aquel archivo que se abra.Compile y ejecute el programa, la única salida que verá en pantalla es la línea que indica la creación del archivo especificado, después de correr el programa verifique en su directorio de trabajo la existencia del archivo prueba.htm. Por la extensión utilizada es fácil suponer que se trata de un pequeño archivo web, su navegador lo puede visualizar de la forma convencional, pero también puede abrir éste archivo con un editor de texto común (como Notepad), entonces se dará cuenta que el código HTML está inconcluso,estequot; problemitaquot; lo resolveremos más adelante por lo que le recomiendo que conserve éste archivo pues se utilizará en las prácticas que siguen.Volver al principioConcatenar datosComo vimos en el programa anterior, el archivo generado llamado prueba.htm está Inconcluso así que es hora de corregir ésta situación, lo haremos utilizando el código que Sigue el cual hace uso del atributo para concatenar datos y además utilizaremos una nueva función para escribir en el archivo un solo dato a la vez:#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){ FILE *final; final = fopen(quot; Prueba.htmquot; , quot; aquot; ); /* Abrir archivo para concatenar */ if (final == NULL) { printf(quot; Falla al abrir el archivo quot; ); exit (EXIT_FAILURE); } putc('', final); putc('<', final); putc('/', final); putc('B', final); putc('O', final); putc('D', final); putc('Y', final); putc('>', final); putc('', final); putc('<', final); putc('/', final); putc('H', final); putc('T', final); putc('M', final); putc('L', final); putc('>', final); putc('', final); fclose(final); return EXIT_SUCCESS;}En primer lugar observe que en este programa se efectúa la verificación del éxito al abrir el archivo, la constante llamada EXIT_FAILURE está definida en el archivo de cabecera stdlib.h generalmente con el valor de 1. La constante llamada EXIT_SUCESS a su vez está definida generalmente con el valor de 0. El sistema operativo puede utilizar el valor retornado para determinar si el programa está operando normalmente ó si es necesario tomar alguna acción correctiva, por ejemplo, si un programa se ejecuta en dos partes y la primera de ellas retorna un valor de error, entonces no hay necesidad de ejecutar la segunda parte del programa.La función putc ( )La parte del programa que nos interesa es la función llamada putc ( ) ejemplificada de la línea 16 a la 32, ésta función extrae al archivo un carácter a la vez, el caracter en cuestión es el primer argumento de la función y el puntero de archivo el segundo y último argumento dentro del paréntesis. Observe que para especificar un caracter determinado se utiliza la comilla sencilla, incluyendo el caso del caracter de retorno de carro ''. Compile y ejecute el programa. Antes de correr el programa asegurese de la existencia del archivo prueba.htm en su directorio de trabajo, generado en el programa anterior, después de correr el programa, abra el archivo con un editor de texto y observe que ahora el documento web está completo.Volver al principioLectura de un archivoComo ya tenemos un archivo para leer podemos utilizar un nuevo programa, como en los Programas anteriores, éste empieza con algunas declaraciones y abriendo el archivo prueba.htm especificando que deseamos efectuar operaciones de lectura mediante el atributo quot; rquot; , el programa ejecuta un bucle do while para leer del archivo un solo carácter a la vez y desplegarlo en pantalla hasta detectar un caracter EOF (End Of File, Fin de Archivo). Por último cerramos el archivo y el programa termina.#include <stdio.h>#include <stdlib.h>int main(){ FILE *nombre; int c; nombre = fopen(quot; Prueba.htmquot; , quot; rquot; ); if (nombre == NULL) { printf(quot; El archivo no existe quot; ); exit (EXIT_FAILURE); } else { do { c = getc(nombre); /* Obtiene un caracter del archivo */ putchar(c); /* Lo despliega en pantalla y continua... */ } while (c != EOF); /* hasta encontrar EOF (el final del archivo)*/ } fclose(nombre); return EXIT_SUCCESS;}En este punto afrontamos un problema común en programación C. La variable regresada por la función getc ( ) es un caracter, por lo que podemos utilizar para el propósito una variable de tipo char, el problema empieza si tratamos de utilizar una variable de tipo unsigned char, ya que C regresa -1 para EOF. Una variable de tipo unsigned char no puede contener valores negativos ya que su rango está entre 0 y 255 por lo que retornará 255 para un valor negativo valor que no compara con EOF, en este caso el programa nunca terminará. Para prevenir esta situación, utilice una variable de tipo int, ya que este tipo de variable siempre incluye el signo. En este programa leimos del archivoun caracter a la vez, en el siguiente leeremos una palabra a la vez.Lectura de una palabraEl siguiente programa es prácticamente igual que el anterior excepto que ésta vez se utiliza la función fscanf ( ) para leer una cadena a la vez, como fscanf ( ) detiene la lectura de caracteres al encontrar un caracter de espacio ó uno de nueva línea, lee por lo tanto una palabra a la vez desplegando los resultados en una palabra por línea, el nuevo código es:#include <stdio.h>int main(){ FILE *fp1; char palabra[100]; int c; fp1 = fopen(quot; Prueba.htmquot; , quot; rquot; ); do { /* Obtiene una palabra del archivo */ c = fscanf(fp1, quot; %squot; , palabra); printf(quot; %squot; , palabra); /* la despliega en pantalla */ } while (c != EOF); /* Se repite hasta encontrar EOF */ fclose(fp1); return 0;}Al ejecutar éste programa la salida es la siguiente: El problema es que se imprime dos veces la última palabra, para resolver este detalle modificamos el anterior código así:#include <stdio.h>int main(){ FILE *fp1; char palabra[100]; int c; fp1 = fopen(quot; Prueba.htmquot; , quot; rquot; ); do { /* Obtiene una palabra del archivo */ c = fscanf(fp1, quot; %squot; , palabra); if (c != EOF) printf(quot; %squot; , palabra); /* La despliega en pantalla */ } while (c != EOF); /* Se repite hasta encontrar EOF */ fclose(fp1); return 0;}Es bueno hacer notar que un programador experimentado no escribiría el código como lo hicimos en el ejemplo ya que compara c con EOF dos veces por cada ciclo del bucle y esto es ineficiente. Utilizamos código que trabaja y es fácil de leer pero conforme usted gane experiencia en C, Usted utilizará métodos más eficientes de codificar, aunque sean más difíciles de leer, por ejemplo:while((c = fscanf(fp1, quot; %squot; , palabra) != EOF){ printf(quot; %squot; , palabra);}Lectura de una líneaSiguiendo la misma secuencia de los ejemplos de éste capítulo, analizaremos la forma de leer una línea completa de texto, para esto tenemos el código que detallo enseguida:#include <stdio.h>#include <stdlib.h>int main(){ FILE *fp1; char palabra[100]; char *c; fp1 = fopen(quot; Prueba.htmquot; , quot; rquot; ); if (fp1 == NULL) { printf(quot; Error al abrir el archivo quot; ); exit (EXIT_FAILURE); } do { c = fgets(palabra, 100, fp1); /* Obtiene una linea del archivo */ if (c != NULL) printf(quot; %squot; , palabra); /* La despliega en pantalla */ } while (c != NULL); /* Se repite hasta encontrar NULL */ fclose(fp1); return EXIT_SUCCESS;}Ahora utilizamos la función fgets ( ) la cual lee una línea completa, incluyendo el carácterde nueva línea y coloca los datos en un buffer (espacio de memoria RAM temporal). El buffer a ser leído es el primer argumento en la llamada a la función en tanto que el máximo número de caracteres a ser leídos es el segundo argumento, seguido por el puntero de archivo. Esta función leerá caracteres en el buffer hasta que encuentre el caracter de nueva línea, ó lea el máximo número de caracteres menos uno, lo que ocurraprimero. El espacio final se reserva para el caracter nulo (NULL) del fin de la cadena. Además, si se encuentra un EOF, la función retorna NULL. NULL está definido a cero en elarchivo stdio.hLos ejemplos de éste capítulo realmente no requieren de mucha explicación, el código lo podemos modificar para introducir el nombre del archivo que deseamos abrir de ésta forma:#include <stdio.h>#include <stdlib.h>int main(){ FILE *fp1; char palabra[100], nombre[25]; char *c; printf(quot; Introduzca el nombre del archivo -> quot; ); scanf(quot; %squot; , nombre); /* Lee el archivo deseado */ fp1 = fopen(nombre, quot; rquot; ); if (fp1 == NULL) { printf(quot; Error al abrir el archivo quot; ); exit (EXIT_FAILURE); } do { c = fgets(palabra, 100, fp1); /* Obtiene una linea del archivo */ if (c != NULL) printf(quot; %squot; , palabra); /* La despliega en pantalla */ } while (c != NULL); /* Hasta encontrar NULL */ fclose(fp1); return EXIT_SUCCESS;}La salida del programa es la siguiente:Volver al principioAsignación especialA lo largo de este capítulo hemos tratado el uso de diferentes funciones para operaciones de lectura y escritura, se trata de un tema particularmente útil en el desarrollo de un programa. Como seguramente habrá notado, utilizamos para los ejemplos un archivo llamado Prueba.htm, por la extensión utilizada y por la naturaleza del texto incluído en el mismo sabemos que se trata de un documento web que puede ser visualizado en su navegador. Para terminar este capítulo y a manera de resumen que a la vez nos sirva de introducción al siguiente capítulo, le presento el siguiente código que Yo espero despierte en Usted un poco (ó un mucho) de curiosidad, experimente con el programa y si Usted desea, mándeme su opinión por correo electrónico.#include <stdio.h>#include <stdlib.h>enum HTMLid{ HTML_NINGUNO, HTML_BODY, HTML_cBODY, HTML_B, HTML_cB, HTML_HTML, HTML_cHTML, HTML_CENTER, HTML_cCENTER};static struct{ char *htmlcodigo; enum HTMLid id;}lista_de_codigos[]={ {quot; <HTML>quot; , HTML_HTML}, {quot; </HTML>quot; , HTML_cHTML}, {quot; <BODY>quot; , HTML_BODY}, {quot; </BODY>quot; , HTML_cBODY}, {quot; <CENTER>quot; , HTML_CENTER}, {quot; </CENTER>quot; , HTML_cCENTER}, {quot; <B>quot; , HTML_B}, {quot; </B>quot; , HTML_cB}, {NULL, HTML_NINGUNO}};char texto[128];int itexto=0, c;int main(){ int i, ietiqueta=0; char etiqueta[64]; FILE *archivo; enum HTMLid codigo; archivo = fopen(quot; Prueba.htmquot; , quot; rquot; ); /* Abre el archivo para lectura */ if (archivo == NULL) { printf(quot; El archivo no existe...quot; ); exit (EXIT_FAILURE); } else { do /* Checa todos los caracteres del archivo */ { c=getc(archivo); if (c=='<') /* Lee la etiqueta html */ { /* incluye el principio de la etiqueta */ etiqueta[ietiqueta++]=c; do { c=getc(archivo); etiqueta[ietiqueta++]=c; } while(c!='>'); etiqueta[ietiqueta]=0; codigo=HTML_NINGUNO; for(i=0; lista_de_codigos[i].htmlcodigo!=NULL; i++) { if(stricmp(etiqueta, lista_de_codigos[i].htmlcodigo)==0) { codigo=lista_de_codigos[i].id; break; } } switch (codigo) { case HTML_NINGUNO: break; case HTML_HTML: printf(quot; Empieza el documento web quot; ); break; case HTML_cHTML: printf(quot; Fin del documento web quot; ); break; case HTML_B: printf(quot; Empieza la etiqueta B quot; ); break; case HTML_cB: printf(quot; Termina la etiqueta B quot; ); break; case HTML_BODY: printf(quot; Empieza la etiqueta BODY quot; ); break; case HTML_cBODY: printf(quot; Termina la etiqueta BODY quot; ); break; case HTML_CENTER: printf(quot; Empieza la etiqueta CENTER quot; ); break; case HTML_cCENTER: printf(quot; Termina la etiqueta CENTER quot; ); break; } ietiqueta=0; } else rollo(); } while(c!=EOF); } fclose(archivo); texto[itexto]=0; printf(texto); return EXIT_SUCCESS;}rollo(){ texto[itexto++]=c;}La salida del programa es la siguiente:Volver al principio© 1998, 1999 Virgilio Gómez Negrete, Derechos Reservados <br />Aspectos Generales:<br />URL: http://www.modelo.edu.mx/univ/virtech/prograc/clecesc.htm#superior <br />Utilización en el Aula:<br />Tipología: <br />Hecha por :Virgilio Gómez Negrete.No especifica su cargo o grado de Instrucción.<br />Destinatario: La página fue pensada para ser usada por alumnos de niveles avanzados, especialistas e investigadores y estudiantes.<br />Nivel: usuarios de nivel superior, estudiantes y profesionales.<br />Actividades: El sitio incluye actividades para realizar con los alumnos.<br />La página cuenta con diversos recursos y herramientas que permiten la interacción, más no la descarga de materiales y suscripción a revistas. Está destinada principalmente a profesionales de la educación, siendo el nivel académico de sus contenidos en el área de educación profesional o superior. La página fue hecha en ciudad de México.<br />Aspectos Curriculares:<br />Interés para el Profesorado y Estudiantil : La página sirve para uso del docente, y usuario común o estudiantil. <br />La página no permite descarga de materiales, libros digitales y si hay vínculos hacia otras páginas.<br />Aspectos Gráficos:<br />El entorno estático está diseñado con una fuente de tamaño normal para su lectura, los colores son suaves lo cual hace agradable la interfaz y posee imágenes.<br />En relación al entorno dinámico, posee ningún elemento animado.<br />No tiene elementos multimedia, tales como videos, archivos de imágenes o sonidos.<br />Aspectos Técnicos: <br />Libertad de Acceso: El acceso a la página es gratis y los usuarios no pueden suscribir a un envío de noticias vía correo electrónico para enterarse de las novedades de allí descritas.<br />Publicidad: no cuenta con enlaces a cursos pagos y promoción de eventos ni posee spam de publicidad.<br />Navegabilidad: si posee hipervínculos o enlaces dentro de la página. La navegabilidad en la página se hace ligera y no tarda en cargar , los vínculos uno solo no está correctamente activos.<br />Interactividad: No posee, foros, chat, si posee posibilidad de envío de mensajes, no cuenta con cuestionarios. No tiene un blog y si un correo de contacto.<br />Conclusión:<br />La página se adapta un poco más a los requerimientos académicos de la asignatura pero no totalmente lo que será utilizada como material de consulta para el profesor. <br />Ejemplo de página 3:<br />Previo: HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/manual.htmlquot; Manual de C Arriba: HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/manual.htmlquot; Manual de C Siguiente: HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; 1. Compilación de un programa <br />Regresar <br />Índice General <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; 1. Compilación de un programa en C/C++ <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; quot; SECTION00210000000000000000quot; 1.1 Creación, compilación y ejecución de un programa <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; quot; SECTION00211000000000000000quot; 1.1.1 Creación del programa <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; quot; SECTION00212000000000000000quot; 1.1.2 Compilación <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; quot; SECTION00213000000000000000quot; 1.1.3 Ejecución del programa <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; quot; SECTION00220000000000000000quot; 1.2 El modelo de compilación de C <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; quot; SECTION00230000000000000000quot; 1.3 El preprocesador <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; quot; SECTION00240000000000000000quot; 1.4 Compilador de C <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; quot; SECTION00250000000000000000quot; 1.5 Ensamblador <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; quot; SECTION00260000000000000000quot; 1.6 Ligador <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; quot; SECTION00270000000000000000quot; 1.7 Algunas opciones útiles del compilador <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; quot; SECTION00280000000000000000quot; 1.8 Uso de las bibliotecas <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; quot; SECTION00290000000000000000quot; 1.9 Ejemplos <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; quot; SECTION00291000000000000000quot; 1.9.1 Creación de una biblioteca estática <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; quot; SECTION00292000000000000000quot; 1.9.2 Creación de una biblioteca compartida <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; quot; SECTION002100000000000000000quot; 1.10 Funciones de la biblioteca de UNIX <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; quot; SECTION002101000000000000000quot; 1.10.1 Encontrando información acerca de las bibliotecas. <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node2.htmlquot; quot; SECTION002110000000000000000quot; 1.11 Ejercicios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node3.htmlquot; 2. Principios de C <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node3.htmlquot; quot; SECTION00310000000000000000quot; 2.1 Orígenes del C <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node3.htmlquot; quot; SECTION00320000000000000000quot; 2.2 Características de C <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node3.htmlquot; quot; SECTION00330000000000000000quot; 2.3 Estructura de un programa en C <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node3.htmlquot; quot; SECTION00340000000000000000quot; 2.4 Variables <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node3.htmlquot; quot; SECTION00341000000000000000quot; 2.4.1 Definición de variables globales <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node3.htmlquot; quot; SECTION00342000000000000000quot; 2.4.2 Lectura y escritura de variables <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node3.htmlquot; quot; SECTION00350000000000000000quot; 2.5 Constantes <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node3.htmlquot; quot; SECTION00360000000000000000quot; 2.6 Operadores Aritméticos <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node3.htmlquot; quot; SECTION00370000000000000000quot; 2.7 Operadores de Comparación <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node3.htmlquot; quot; SECTION00380000000000000000quot; 2.8 Operadores lógicos <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node3.htmlquot; quot; SECTION00390000000000000000quot; 2.9 Orden de precedencia <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node3.htmlquot; quot; SECTION003100000000000000000quot; 2.10 Ejercicios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node4.htmlquot; 3. Estructuras Condicionales <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node4.htmlquot; quot; SECTION00410000000000000000quot; 3.1 La sentencia if <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node4.htmlquot; quot; SECTION00420000000000000000quot; 3.2 El operador ? <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node4.htmlquot; quot; SECTION00430000000000000000quot; 3.3 La sentencia switch <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node4.htmlquot; quot; SECTION00440000000000000000quot; 3.4 Ejercicios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node5.htmlquot; 4. Iteración <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node5.htmlquot; quot; SECTION00510000000000000000quot; 4.1 La sentencia for <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node5.htmlquot; quot; SECTION00520000000000000000quot; 4.2 La sentencia while <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node5.htmlquot; quot; SECTION00530000000000000000quot; 4.3 La sentencia do-while <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node5.htmlquot; quot; SECTION00540000000000000000quot; 4.4 Uso de break y continue <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node5.htmlquot; quot; SECTION00550000000000000000quot; 4.5 Ejercicios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node6.htmlquot; 5. Arreglos y cadenas <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node6.htmlquot; quot; SECTION00610000000000000000quot; 5.1 Arreglos unidimensionales y multidimensionales <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node6.htmlquot; quot; SECTION00620000000000000000quot; 5.2 Cadenas <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node6.htmlquot; quot; SECTION00630000000000000000quot; 5.3 Ejercicios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node7.htmlquot; 6. Funciones <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node7.htmlquot; quot; SECTION00710000000000000000quot; 6.1 Funciones void <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node7.htmlquot; quot; SECTION00720000000000000000quot; 6.2 Funciones y arreglos <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node7.htmlquot; quot; SECTION00730000000000000000quot; 6.3 Prototipos de funciones <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node7.htmlquot; quot; SECTION00740000000000000000quot; 6.4 Ejercicios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node8.htmlquot; 7. Más tipos de datos <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node8.htmlquot; quot; SECTION00810000000000000000quot; 7.1 Estructuras <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node8.htmlquot; quot; SECTION00811000000000000000quot; 7.1.1 Definición de nuevos tipos de datos <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node8.htmlquot; quot; SECTION00820000000000000000quot; 7.2 Uniones <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node8.htmlquot; quot; SECTION00830000000000000000quot; 7.3 Conversión de tipos (casts) <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node8.htmlquot; quot; SECTION00840000000000000000quot; 7.4 Enumeraciones <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node8.htmlquot; quot; SECTION00850000000000000000quot; 7.5 Variables estáticas <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node8.htmlquot; quot; SECTION00860000000000000000quot; 7.6 Ejercicios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node9.htmlquot; 8. Apuntadores <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node9.htmlquot; quot; SECTION00910000000000000000quot; 8.1 Definición de un apuntador <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node9.htmlquot; quot; SECTION00920000000000000000quot; 8.2 Apuntadores y Funciones <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node9.htmlquot; quot; SECTION00930000000000000000quot; 8.3 Apuntadores y arreglos <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node9.htmlquot; quot; SECTION00940000000000000000quot; 8.4 Arreglos de apuntadores <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node9.htmlquot; quot; SECTION00950000000000000000quot; 8.5 Arreglos multidimensionales y apuntadores <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node9.htmlquot; quot; SECTION00960000000000000000quot; 8.6 Inicialización estática de arreglos de apuntadores <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node9.htmlquot; quot; SECTION00970000000000000000quot; 8.7 Apuntadores y estructuras <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node9.htmlquot; quot; SECTION00980000000000000000quot; 8.8 Fallas comunes con apuntadores <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node9.htmlquot; quot; SECTION00990000000000000000quot; 8.9 Ejercicios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node10.htmlquot; 9. Asignación dinámica de memoria y Estructuras dinámicas <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node10.htmlquot; quot; SECTION001010000000000000000quot; 9.1 Uso de malloc, sizeof y free <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node10.htmlquot; quot; SECTION001020000000000000000quot; 9.2 calloc y realloc <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node10.htmlquot; quot; SECTION001030000000000000000quot; 9.3 Listas ligadas <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node10.htmlquot; quot; SECTION001040000000000000000quot; 9.4 Programa de revisión <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node10.htmlquot; quot; SECTION001050000000000000000quot; 9.5 Ejercicios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node11.htmlquot; 10. Tópicos avanzados con apuntadores <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node11.htmlquot; quot; SECTION001110000000000000000quot; 10.1 Apuntadores a apuntadores <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node11.htmlquot; quot; SECTION001120000000000000000quot; 10.2 Entrada en la línea de comandos <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node11.htmlquot; quot; SECTION001130000000000000000quot; 10.3 Apuntadores a funciones <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node11.htmlquot; quot; SECTION001140000000000000000quot; 10.4 Ejercicios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node12.htmlquot; 11. Operadores de bajo nivel y campos de bit <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node12.htmlquot; quot; SECTION001210000000000000000quot; 11.1 Operadores sobre bits <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node12.htmlquot; quot; SECTION001220000000000000000quot; 11.2 Campos de bit <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node12.htmlquot; quot; SECTION001221000000000000000quot; 11.2.1 Portabilidad <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node12.htmlquot; quot; SECTION001230000000000000000quot; 11.3 Ejercicios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node13.htmlquot; 12. El preprocesador de C <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node13.htmlquot; quot; SECTION001310000000000000000quot; 12.1 Directivas del preprocesador <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node13.htmlquot; quot; SECTION001311000000000000000quot; 12.1.1 #define <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node13.htmlquot; quot; SECTION001312000000000000000quot; 12.1.2 #undef <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node13.htmlquot; quot; SECTION001313000000000000000quot; 12.1.3 #include <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node13.htmlquot; quot; SECTION001314000000000000000quot; 12.1.4 #if Inclusión condicional <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node13.htmlquot; quot; SECTION001320000000000000000quot; 12.2 Control del preprocesador del compilador <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node13.htmlquot; quot; SECTION001330000000000000000quot; 12.3 Otras directivas del preprocesador <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node13.htmlquot; quot; SECTION001340000000000000000quot; 12.4 Ejercicios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node14.htmlquot; 13. C, UNIX y las bibliotecas estándar <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node14.htmlquot; quot; SECTION001410000000000000000quot; 13.1 Ventajas del usar UNIX con C <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node14.htmlquot; quot; SECTION001420000000000000000quot; 13.2 Uso de funciones de bibliotecas y llamadas del sistema <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node15.htmlquot; 14. Biblioteca <stdlib.h> <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node15.htmlquot; quot; SECTION001510000000000000000quot; 14.1 Funciones aritméticas <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node15.htmlquot; quot; SECTION001520000000000000000quot; 14.2 Números aleatorios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node15.htmlquot; quot; SECTION001530000000000000000quot; 14.3 Conversión de cadenas <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node15.htmlquot; quot; SECTION001540000000000000000quot; 14.4 Búsqueda y ordenamiento <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node15.htmlquot; quot; SECTION001550000000000000000quot; 14.5 Ejercicios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node16.htmlquot; 15. Biblioteca <math.h> <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node16.htmlquot; quot; SECTION001610000000000000000quot; 15.1 Funciones matemáticas <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node16.htmlquot; quot; SECTION001620000000000000000quot; 15.2 Constantes matemáticas <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node17.htmlquot; 16. Entrada y salida (E/S) stdio.h <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node17.htmlquot; quot; SECTION001710000000000000000quot; 16.1 Reportando errores <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node17.htmlquot; quot; SECTION001711000000000000000quot; 16.1.1 perror() <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node17.htmlquot; quot; SECTION001712000000000000000quot; 16.1.2 errno <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node17.htmlquot; quot; SECTION001713000000000000000quot; 16.1.3 exit <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node17.htmlquot; quot; SECTION001720000000000000000quot; 16.2 Flujos <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node17.htmlquot; quot; SECTION001721000000000000000quot; 16.2.1 Flujos predefinidos <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node17.htmlquot; quot; SECTION001730000000000000000quot; 16.3 E/S Basica <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node17.htmlquot; quot; SECTION001740000000000000000quot; 16.4 E/S formateada <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node17.htmlquot; quot; SECTION001741000000000000000quot; 16.4.1 printf <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node17.htmlquot; quot; SECTION001742000000000000000quot; 16.4.2 scanf <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node17.htmlquot; quot; SECTION001750000000000000000quot; 16.5 Archivos <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node17.htmlquot; quot; SECTION001751000000000000000quot; 16.5.1 Lectura y escritura de archivos <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node17.htmlquot; quot; SECTION001760000000000000000quot; 16.6 sprintf y sscanf <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node17.htmlquot; quot; SECTION001761000000000000000quot; 16.6.1 Petición del estado del flujo <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node17.htmlquot; quot; SECTION001770000000000000000quot; 16.7 E/S de bajo nivel o sin almacenamiento intermedio <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node17.htmlquot; quot; SECTION001780000000000000000quot; 16.8 Ejercicios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node18.htmlquot; 17. Manejo de cadenas <string.h> <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node18.htmlquot; quot; SECTION001810000000000000000quot; 17.1 Funciones básicas para el manejo de cadenas <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node18.htmlquot; quot; SECTION001811000000000000000quot; 17.1.1 Búsqueda en cadenas <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node18.htmlquot; quot; SECTION001820000000000000000quot; 17.2 Prueba y conversión de caracteres <ctype.h> <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node18.htmlquot; quot; SECTION001830000000000000000quot; 17.3 Operaciones con la memoria <memory.h> <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node18.htmlquot; quot; SECTION001840000000000000000quot; 17.4 Ejercicios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node19.htmlquot; 18. Acceso de Archivos y llamadas al sistema de directorios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node19.htmlquot; quot; SECTION001910000000000000000quot; 18.1 Funciones para el manejo de directorios <unistd.h> <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node19.htmlquot; quot; SECTION001911000000000000000quot; 18.1.1 Busqueda y ordenamiento de directorios: sys/types.h,sys/dir.h <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node19.htmlquot; quot; SECTION001920000000000000000quot; 18.2 Rutinas de manipulación de archivos: unistd.h, sys/types.h, sys/stat.h <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node19.htmlquot; quot; SECTION001921000000000000000quot; 18.2.1 Permisos de accesos a archivos <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node19.htmlquot; quot; SECTION001922000000000000000quot; 18.2.2 Estado de un archivo <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node19.htmlquot; quot; SECTION001923000000000000000quot; 18.2.3 Manipulación de archivos: stdio.h, unistd.h <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node19.htmlquot; quot; SECTION001924000000000000000quot; 18.2.4 Creación de archivos temporales: <stdio.h> <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node19.htmlquot; quot; SECTION001930000000000000000quot; 18.3 Ejercicios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node20.htmlquot; 19. Funciones para el tiempo <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node20.htmlquot; quot; SECTION002010000000000000000quot; 19.1 Funciones básicas para el tiempo <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node20.htmlquot; quot; SECTION002020000000000000000quot; 19.2 Ejemplos de aplicaciones de funciones del tiempo. <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node20.htmlquot; quot; SECTION002021000000000000000quot; 19.2.1 Ejemplo 1: Tiempo (en segundos) para hacer algún cálculo. <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node20.htmlquot; quot; SECTION002022000000000000000quot; 19.2.2 Ejemplo 2: Inicializar la semilla de un número aleatorio. <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node20.htmlquot; quot; SECTION002030000000000000000quot; 19.3 Ejercicios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node21.htmlquot; 20. Control de procesos: <stdlib.h>, <unistd.h> <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node21.htmlquot; quot; SECTION002110000000000000000quot; 20.1 Ejecutando comandos de UNIX desde C <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node21.htmlquot; quot; SECTION002120000000000000000quot; 20.2 execl() <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node21.htmlquot; quot; SECTION002130000000000000000quot; 20.3 fork() <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node21.htmlquot; quot; SECTION002140000000000000000quot; 20.4 wait() <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node21.htmlquot; quot; SECTION002150000000000000000quot; 20.5 exit() <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node21.htmlquot; quot; SECTION002160000000000000000quot; 20.6 Ejercicios <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node22.htmlquot; 21. Compilación de Programas con Archivos Múltiples <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node22.htmlquot; quot; SECTION002210000000000000000quot; 21.1 Archivos Cabezera <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node22.htmlquot; quot; SECTION002220000000000000000quot; 21.2 Variables y Funciones Externas <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node22.htmlquot; quot; SECTION002221000000000000000quot; 21.2.1 Alcance de las variables externas <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node22.htmlquot; quot; SECTION002230000000000000000quot; 21.3 Ventajas de Usar Varios Archivos <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node22.htmlquot; quot; SECTION002240000000000000000quot; 21.4 Como dividir un programa en varios archivos <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node22.htmlquot; quot; SECTION002250000000000000000quot; 21.5 Organización de los Datos en cada Archivo <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node22.htmlquot; quot; SECTION002260000000000000000quot; 21.6 La utilería Make <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node22.htmlquot; quot; SECTION002261000000000000000quot; 21.6.1 Programando Make <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node22.htmlquot; quot; SECTION002270000000000000000quot; 21.7 Creación de un Archivo Make (Makefile) <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node22.htmlquot; quot; SECTION002280000000000000000quot; 21.8 Uso de macros con Make <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node22.htmlquot; quot; SECTION002290000000000000000quot; 21.9 Ejecución de Make <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node23.htmlquot; 22. Comunicación entre procesos (IPC Interprocess Communication), PIPES <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node23.htmlquot; quot; SECTION002310000000000000000quot; 22.1 Entubando en un programa de C <stdio.h> <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node23.htmlquot; quot; SECTION002311000000000000000quot; 22.1.1 popen() Tubería formateada <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node23.htmlquot; quot; SECTION002312000000000000000quot; 22.1.2 pipe() Tubería de bajo nivel <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node24.htmlquot; 23. Sockets <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node24.htmlquot; quot; SECTION002410000000000000000quot; 23.1 Creación y nombrado de sockets <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node24.htmlquot; quot; SECTION002420000000000000000quot; 23.2 Conectando sockets de flujo <br /> HYPERLINK quot; http://www.fismat.umich.mx/mn1/manual/node24.htmlquot; quot; SECTION002421000000000000000quot; 23.2.1 Transferencia de datos en un flujo y cerrado <br />Última modificación : 2005-08-12Héctor Tejeda Vhtejeda@fismat.umich.mx <br />Aspectos Generales:<br />URL: http://www.fismat.umich.mx/mn1/manual/node1.html<br />Utilización en el Aula:<br />Tipología: <br />Hecha por : Héctor Tejeda V. No especifica su cargo o grado de Instrucción.<br />Destinatario: La página fue pensada para ser usada por alumnos de niveles avanzados, especialistas e investigadores y estudiantes.<br />Nivel: usuarios de nivel superior, estudiantes y profesionales.<br />Actividades: El sitio no incluye actividades para realizar con los alumnos.<br />La página no cuenta con diversos recursos y herramientas que permiten la interacción, más no la descarga de materiales y suscripción a revistas. Está destinada principalmente a profesionales de la educación, siendo el nivel académico de sus contenidos en el área de educación profesional o superior. La página fue hecha en ciudad de México.<br />Aspectos Curriculares:<br />Interés para el Profesorado y Estudiantil: La página sirve para uso del docente, y usuario común o estudiantil. <br />La página no permite descarga de materiales, libros digitales y si hay vínculos hacia otras páginas.<br />Aspectos Gráficos:<br />El entorno estático está diseñado con una fuente de tamaño normal para su lectura, los colores son suaves lo cual hace agradable la interfaz y no posee imágenes.<br />En relación al entorno dinámico, no posee ningún elemento animado.<br />No tiene elementos multimedia, tales como videos, archivos de imágenes o sonidos.<br />Aspectos Técnicos: <br />Libertad de Acceso: El acceso a la página es gratis y los usuarios no pueden suscribir a un envío de noticias vía correo electrónico para enterarse de las novedades de allí descritas.<br />Publicidad: no cuenta con enlaces a cursos pagos y promoción de eventos ni posee spam de publicidad.<br />Navegabilidad: si posee hipervínculos o enlaces dentro de la página. La navegabilidad en la página se hace ligera y no tarda en cargar, los vínculos están correctamente activos.<br />Interactividad: No posee, foros, chat, si posee posibilidad de envío de mensajes, no cuenta con cuestionarios. No tiene un blog y si posee un correo de contacto.<br />Conclusión:<br />La página se adapta un poco más a los requerimientos académicos de la asignatura pero no totalmente por lo que será utilizada solo como material de consulta para el profesor.<br />