Por ejemplo, para declarar un arreglo de enteros llamado a con diez elementos se hace de la siguiente forma:

Documentos relacionados
7. Manejo de Archivos en C.

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen

Programación Estructurada

UNAN LEÓN Departamento de Computación. Asignatura: ALGORITMO Y ESTRUCTURA DE DATOS MANEJO DE ARCHIVOS (FICHEROS) EN C

Formatos para prácticas de laboratorio

Entrada y salida en C. Informática II

FILE *nombre_puntero_fichero; fopen(char_nombre_archivo,char_modo_apertura ); MODOS DE APERTURA. Abre un archivo de texto para lectura.

Laboratorio de Arquitectura de Redes. Entrada y salida por archivos en lenguaje C

Lenguaje C Entrada y Salida de Datos. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Repaso 03: Manejo de Archivos en C

ARCHIVOS. 1. Introducción. 2. Definición de archivo. 3. Archivos de acceso secuencial. 4. Gestión de un archivo secuencial de estructuras

Unidad 7: Procesamiento de archivos en el lenguaje C

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

Cadenas y Caracteres. Universidad Católica de Honduras Nuestra Señora Reina de la Paz. Asignatura. Programación Científica. Tema de Exposición

Informática Ingeniería en Electrónica y Automática Industrial

Entrada y Salida de Datos. Lectura de archivos.

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Tema 07: Tipos de datos en C & entrada y salida estándar

Escuela Politécnica Superior de Elche

Programación. Test Autoevaluación Tema 3

Fundamentos de programación

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 2 CADENAS O VECTORES DE CARACTERES 6 3 PASO DE CADENAS Y ARRAYS A FUNCIONES 8

Tipos de Datos Estructurados

PROGRAMACION / Clave: 11214

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

Algoritmos y Programación I

Programación Estructurada

Repaso sobre lectura de datos desde la línea de comandos, manejo de memoria dinámica e introducción a la librería GSL

Programación en C. (Segunda Parte) DATSI, FI, UPM José M. Peña. Programación en C

Elementos de un programa en C

Contenido. Capítulo 1. Introducción a lenguaje C 1

Tema 7 Vectores y cadenas de caracteres. Fundamentos de Informática

Lenguajes de programación LPSI EUI UPM CADENAS DE CARACTERES

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

LEER Y ESCRIBIR ARCHIVOS DE TEXTO CON PHP. FUNCIONES FOPEN (MODOS), FGETS, FPUTS, FCLOSE Y FEOF. EJEMPLOS (CU00836B)

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C

Tema 13: Apuntadores en C

Programación I Ficheros de texto

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Lenguaje de programación C. Introducción

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Tema 14: Arreglos estáticos en C

Computación archivos

2.2 Nombres, Ligado y Ámbito

TEMA 4. ESTRUCTURAS DE CONTROL

Apuntadores en C y C++

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

Tema 9. Vectores y Matrices

Se guardan en archivos con extencion c y los cabezales con extension h

Prof. Dr. Paul Bustamante

funciones printf scanf

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial

Los constructores son funciones miembro especiales que sirven para inicializar un objeto de una determinada clase al mismo tiempo que se declara.

Matías Zabaljáuregui

Apuntadores (Punteros)

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

Guía - Taller # 2 (JAVA)

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS

Programación En Lenguaje C

Introducción a Lenguaje C. Jornadas de Octubre 2009 Grupo de Usuarios de Linux Universidad Carlos III Tania Pérez

MIA RICARDO GONZALEZ LOZANO APLICACIONES EN LENGUAJE C

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

INICIACIÓN A LA PROGRAMACIÓN EN C

Memoria Dinámica. Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez

E/S POR CONSOLA DE C++ Parte I. Elementos Básicos Dr. Oldemar Rodríguez R.

Informática Ingeniería en Electrónica y Automática Industrial

Flujos (streams) Programación. Licenciatura Lingüística y Nuevas Tecnologias Nadjet Bouayad-Agha

Introducción al tipo de dato ARRAY

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

SOLUCION EXAMEN junio 2006

FUNDAMENTOS DE INFORMÁTICA

Manual básico de Programación en C++

Constantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes:

Entrada y salida de datos en C y C++

Anexo. Control de errores

Vectores. 27/05/05 Programación Digital I 1

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Programación estructurada (Introducción a lenguaje C)

Sistemas Operativos Práctica 3

Principios de Computadoras II

TIPOS DE DATOS BASICOS EN LENGUAJE C

INSTITUTO SUPERIOR TECNOLÓGICO NORBERT WIENER

PERIODO 3 HOJA DE CÁLCULO CONCEPTOS INTERMEDIOS OPERACIONES CON CELDAS, FILAS Y COLUMNAS EN EXCEL SELECCIONAR COPIAR MOVER BORRAR

Contenidos. Archivos en C++ Archivos en C++ Introducción

Lenguajes de programación

TIPOS DE CAMPOS Cada Sistema de Base de Datos posee tipos de campos que pueden ser similares o diferentes.

Cadena de caracteres. 1. Fundamentos de cadenas y caracteres

EDITRAN/TR. Windows/Unix. Manual de referencia

Manejo de Archivos en Lenguaje C++

Instituto Tecnológico de Celaya

Transcripción:

Arreglos unidimensionales y multidimensionales Los arreglos son una colección de variables del mismo tipo que se referencian utilizando un nombre común. Un arreglo consta de posiciones de memoria contigua. La dirección más baja corresponde al primer elemento y la más alta al último. Un arreglo puede tener una o varias dimensiones. Para acceder a un elemento en particular de un arreglo se usa un índice. El formato para declarar un arreglo unidimensional es: tipo nombre_arr [ tamaño ] Por ejemplo, para declarar un arreglo de enteros llamado a con diez elementos se hace de la siguiente forma: int a[10]; En C, todos los arreglos usan cero como índice para el primer elemento. Por tanto, el ejemplo anterior declara un arreglo de enteros con diez elementos desde a[0] hasta a[9]. La forma como pueden ser accesados los elementos de un arreglo, es de la siguiente forma: a[2] = 15; /* Asigna 15 al 3er elemento del arreglo a*/ num = a[2]; /* Asigna el contenido del 3er elemento a la variable num */ El lenguaje C no realiza comprobación de contornos en los arreglos. En el caso de que sobrepase el final durante una operación de asignación, entonces se asignarán valores a otra variable o a un trozo del código, esto es, si se dimensiona un arreglo de tamaño N, se puede referenciar el arreglo por encima de N sin provocar ningún mensaje de error en tiempo de compilación o ejecución, incluso aunque probablemente se provoque un error en el programa. Como programador se es responsable de asegurar que todos los arreglos sean lo suficientemente grandes para guardar lo que pondrá en ellos el programa. C permite arreglos con más de una dimensión, el formato general es: tipo nombre_arr [ tam1 ][ tam2 ]... [ tamn]; Por ejemplo un arreglo de enteros bidimensionales se escribirá como: int b[50][50]; Observar que para declarar cada dimensión lleva sus propios paréntesis cuadrados.

Para acceder los elementos se procede de forma similar al ejemplo del arreglo unidimensional, esto es, b[2][3] = 15; /* Asigna 15 al elemento de la 3ª fila y la 4ª columna*/ num = b[25][16]; A continuación se muestra un ejemplo que asigna al primer elemento de un arreglo bidimensional cero, al siguiente 1, y así sucesivamente. main() { int t,i,num[3][4]; for(t=0; t<3; ++t) for(i=0; i<4; ++i) num[t][i]=(t*4)+i*1; for(t=0; t<3; ++t){ for(i=0; i<4; ++i) printf("num[%d][%d]=%d ", t,i,num[t][i]); printf("\n"); En C se permite la inicialización de arreglos, debiendo seguir el siguiente formato: tipo nombre_arr[ tam1 ][ tam2 ]... [ tamn] = {lista-valores; Por ejemplo: int c[10] = {1,2,3,4,5,6,7,8,9,10; int num[3][4]={0,1,2,3,4,5,6,7,8,9,10,11;

Tipo FILE: C define la estructura de datos FILE en el archivo de cabecera "stdio.h" para el manejo de archivos. Nosotros siempre usaremos punteros a estas estructuras. La definición de ésta estructura depende del compilador, pero en general mantienen un campo con la posición actual de lectura/escritura, un buffer para mejorar las prestaciones de acceso al archivo y algunos campos para uso interno. Función fopen: FILE *fopen(char *nombre, char *modo); ésta función sirve para abrir y crear archivos en disco. El valor de retorno es un puntero a una estructura FILE. Los parámetros de entrada son: nombre: una cadena que contiene un nombre de archivo válido, esto depende del sistema operativo que estemos usando. El nombre puede incluir el camino completo. modo: especifica en tipo de archivo que se abrirá o se creará y el tipo de datos que puede contener, de texto o binarios: r: sólo lectura. El archivo debe existir. w: se abre para escritura, se crea un archivo nuevo o se sobrescribe si ya existe. a: añadir, se abre para escritura, el cursor se sitúa al final del archivo. Si el archivo no existe, se crea. r+: lectura y escritura. El archivo debe existir. w+: lectura y escritura, se crea un archivo nuevo o se sobrescribe si ya existe. a+: añadir, lectura y escritura, el cursor se sitúa al final del archivo. Si el archivo no existe, se crea. t: tipo texto, si no se especifica "t" ni "b", se asume por defecto que es "t"

b: tipo binario. Función fclose: int fclose(file *archivo); Es importante cerrar los archivos abiertos antes de abandonar la aplicación. Esta función sirve para eso. Cerrar un archivo almacena los datos que aún están en el buffer de memoria, y actualiza algunos datos de la cabecera del archivo que mantiene el sistema operativo. Además permite que otros programas puedan abrir el archivo para su uso. Muy a menudo, los archivos no pueden ser compartidos por varios programas. Un valor de retorno cero indica que el archivo ha sido correctamente cerrado, si ha habido algún error, el valor de retorno es la constante EOF. El parámetro es un puntero a la estructura FILE del archivo que queremos cerrar. Función fgetc: int fgetc(file *archivo); Esta función lee un carácter desde un archivo. El valor de retorno es el carácter leído como un unsigned char convertido a int. Si no hay ningún carácter disponible, el valor de retorno es EOF. El parámetro es un puntero a una estructura FILE del archivo del que se hará la lectura. Función fputc: int fputc(int caracter, FILE *archivo); Esta función escribe un carácter a un archivo.

El valor de retorno es el carácter escrito, si la operación fue completada con éxito, en caso contrario será EOF. Los parámetros de entrada son el carácter a escribir, convertido a int y un puntero a una estructura FILE del archivo en el que se hará la escritura. Función feof: int feof(file *archivo); Esta función sirve para comprobar si se ha alcanzado el final del archivo. Muy frecuentemente deberemos trabajar con todos los valores almacenados en un archivo de forma secuencial, la forma que suelen tener los bucles para leer todos los datos de un archivo es permanecer leyendo mientras no se detecte el fin de archivo. Esta función suele usarse como prueba para verificar si se ha alcanzado o no ese punto. El valor de retorno es distinto de cero sólo si no se ha alcanzado el fin de archivo. El parámetro es un puntero a la estructura FILE del archivo que queremos verificar. Función rewind: void rewind(file *archivo) Es una función heredada de los tiempos de las cintas magnéticas. Literalmente significa "rebobinar", y hace referencia a que para volver al principio de un archivo almacenado en cinta, había que rebobinarla. Eso es lo que hace ésta función, sitúa el cursor de lectura/escritura al principio del archivo. El parámetro es un puntero a la estructura FILE del archivo que queremos rebobinar. Ejemplos: // ejemplo1.c: Muestra un archivo dos veces. #include <stdio.h> int main()

{ FILE *archivo; archivo = fopen("ejemplo1.c", "r"); while(!feof(archivo)) fputc(fgetc(archivo), stdout); rewind(archivo); while(!feof(archivo)) fputc(fgetc(archivo), stdout); fclose(archivo); getchar(); return 0; Función fgets: char *fgets(char *cadena, int n, FILE *archivo); Esta función está diseñada para leer cadenas de caracteres. Leerá hasta n- 1 caracteres o hasta que lea un retorno de línea. En este último caso, el carácter de retorno de línea también es leído. El parámetro n nos permite limitar la lectura para evitar derbordar el espacio disponible en la cadena. El valor de retorno es un puntero a la cadena leída, si se leyó con éxito, y es NULL si se detecta el final del archivo o si hay un error. Los parámetros son: la cadena a leer, el número de caracteres máximo a leer y un puntero a una estructura FILE del archivo del que se leerá. Función fputs: int fputs(const char *cadena, FILE *stream); La función fputs escribe una cadena en un archivo. No se añade el carácter de retorno de línea ni el carácter nulo final. El valor de retorno es un número no negativo o EOF en caso de error. Los parámetros de entrada son la cadena a escribir y un puntero a la estructura FILE del archivo donde se realizará la escritura.

Función fread: size_t fread(void *puntero, size_t tamaño, size_t nregistros, FILE *archivo); Esta función está pensada para trabajar con registros de longitud constante. Es capaz de leer desde un archivo uno o varios registros de la misma longitud y a partir de una dirección de memoria determinada. El usuario es responsable de asegurarse de que hay espacio suficiente para contener la información leída. El valor de retorno es el número de registros leídos, no el número de bytes. Los parámetros son: un puntero a la zona de memoria donde se almacenarán los datos leídos, el tamaño de cada registro, el número de registros a leer y un puntero a la estructura FILE del archivo del que se hará la lectura. Función fwrite: size_t fwrite(void *puntero, size_t tamaño, size_t nregistros, FILE *archivo); Esta función también está pensada para trabajar con registros de longitud constante y forma pareja con fread. Es capaz de escribir hacia un archivo uno o varios registros de la misma longitud almacenados a partir de una dirección de memoria determinada. El valor de retorno es el número de registros escritos, no el número de bytes. Los parámetros son: un puntero a la zona de memoria donde se almacenarán los datos leídos, el tamaño de cada registro, el número de registros a leer y un puntero a la estructura FILE del archivo del que se hará la lectura. Ejemplo: // copia.c: Copia de archivos // Uso: copia <archivo_origen> <archivo_destino> #include <stdio.h> int main(int argc, char **argv) {

FILE *fe, *fs; unsigned char buffer[2048]; // Buffer de 2 Kbytes int bytesleidos; if(argc!= 3) { printf("usar: copia <archivo_origen> <archivo_destino>\n"); return 1; // Abrir el archivo de entrada en lectura y binario fe = fopen(argv[1], "rb"); if(!fe) { printf("el archivo %s no existe o no puede ser abierto.\n", argv[1]); return 1; // Crear o sobreescribir el archivo de salida en binario fs = fopen(argv[2], "wb"); if(!fs) { printf("el archivo %s no puede ser creado.\n", argv[2]); fclose(fe); return 1; // Bucle de copia: while((bytesleidos = fread(buffer, 1, 2048, fe))) fwrite(buffer, 1, bytesleidos, fs); // Cerrar archivos: fclose(fe); fclose(fs); return 0; Función fprintf: int fprintf(file *archivo, const char *formato,...); La función fprintf funciona igual que printf en cuanto a parámetros, pero la salida se dirige a un archivo en lugar de a la pantalla. Función fscanf: int fscanf(file *archivo, const char *formato,...);

La función fscanf funciona igual que scanf en cuanto a parámetros, pero la entrada se toma de un archivo en lugar del teclado. Función fflush: int fflush(file *archivo); Esta función fuerza la salida de los datos acumulados en el buffer de salida del archivo. Para mejorar las prestaciones del manejo de archivos se utilizan buffers, almacenes temporales de datos en memoria, las operaciones de salida se hacen a través del buffer, y sólo cuando el buffer se llena se realiza la escritura en el disco y se vacía el buffer. En ocasiones nos hace falta vaciar ese buffer de un modo manual, para eso sirve ésta función. El valor de retorno es cero si la función se ejecutó con éxito, y EOF si hubo algún error. El parámetro de entrada es un puntero a la estructura FILE del archivo del que se quiere vaciar el buffer. Si es NULL se hará el vaciado de todos los archivos abiertos.