Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C. Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas.

Documentos relacionados
Operaciones de E/S en ANSI C

Programación. Test Autoevaluación Tema 3

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

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

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

Entrada y Salida de Datos. Lectura de archivos.

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Elementos de un programa en C

Escuela Politécnica Superior de Elche

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

Examen Fundamentos de Programación 15 de enero de 2016 Curso 2015/16

Fundamentos de programación

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

Tema 13: Apuntadores en C

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

CAPITULO 4: ENTRADA Y SALIDA DE DATOS.

En un arreglo x de n elementos los elementos del arreglo son: El número de índices determina la dimensionalidad del arreglo.

funciones printf scanf

Cadena de caracteres. 1. Fundamentos de cadenas y caracteres

Programación Básica Apuntadores y Archivos en C

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

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

5. Sentencias selectivas o condicionales

LENGUAJE. Tema 8 Ficheros

Funciones Definición de función

Informática II Vectores y Matrices

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

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

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

Guía práctica de estudio 12: Lectura y escritura de datos

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

Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior PUNTEROS

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

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

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

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial

12 símbolos (13 si se incluye el espacio en blanco)

Uso avanzado de punteros

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

Lenguaje de programación C. Introducción

PROGRAMACION MODULAR FUNCIONES

7. Manejo de Archivos en C.

TEMA 02 TIPOS, OPERADORES Y EXPRESIONES

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

Ejercicios Tema 6. Funciones

Tema 10: Estructuras de control de entrada y salida

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

Programación Estructurada

UNIVERSIDAD NACIONAL DE SALTA Sede Regional Orán AÑO: 2013 Carreras: TIG - TUP

Escuela Politécnica Superior de Elche

Formatos para prácticas de laboratorio

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C

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

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

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

Lenguajes de programación

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

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador

Esquema de un programa en C: bloques básicos

MIA RICARDO GONZALEZ LOZANO APLICACIONES EN LENGUAJE C

El lenguaje de Programación C. Fernando J. Pereda

Paso de Parámetros a una Función

Algoritmos y Programación I

TEMA 4. ESTRUCTURAS DE CONTROL

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

INDICE Parte 1. Visual Basic Capitulo 1. Qué es Visual Basic? Capitulo 22. Mi Primera Aplicación Capitulo 3. Elementos del lenguaje

Prof. Dr. Paul Bustamante

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

Tema 6: Memoria dinámica

PROGRAMACION / Clave: 11214

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

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE

Sistemas Operativos Práctica 3

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Programación en Lenguaje C

Paso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1.

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

FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4

Las plantillas permiten definir funciones genéricas.

Lenguajes de programación LPSI EUI UPM CADENAS DE CARACTERES

SOLUCION EXAMEN junio 2006

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

2^10 2^9 2^8 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 SUMA

Programación en java. Estructuras algorítmicas

Características. Recordando C. Generación de un programa ejecutable cabeceras. Estructura general de un programa. Elementos de programación.

Funciones y paso de parámetros

Hacer ejercicios del libro (Cap. 9 Seguridad): 4,5,6,7,8,9,10,12,13

Archivos. qué es un archivo?

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

INTRODUCCIÓN AL LENGUAJE C

TEMA 4. ELEMENTOS BÁSICOS DE PROGRAMACIÓN

Guía práctica de estudio 03: Algoritmos

Entrada y salida de datos en C y C++

Programación Estructurada

Tema 14: Arreglos estáticos en C

Tema 8 Vectores y Matrices

UNIDAD 1. Algoritmo se define como un conjunto de instrucciones que la computadora debe seguir para resolver un problema.

Introducción al lenguaje C

Universidad Nacional del Santa FACULTAD DE INGENIERIA E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0 MI PRIMER PROYECTO

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

Transcripción:

Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas. Febrero 2016 [Curso de programación en C] - Archivos & Cadenas 1/17

Archivos de Datos Muchas aplicaciones requieren escribir o leer información de un archivo de datos. Los archivos de datos permiten almacenar información de modo permanente y acceder y modificar la misma cuando sea necesario. En C existe un conjunto de funciones de biblioteca para crear y procesar archivos de datos, algunas de las cuales están contenidas en stdio.h [Curso de programación en C] - Archivos & Cadenas 2/17

Apertura de Archivos de Datos Cuando se trabaja con archivos de texto, el primer paso es establecer un área de buffer, donde la información se almacena temporalmente mientras se está transfiriendo entre la memoria de la computadora y el archivo de datos. El área de búffer se establece escribiendo: FILE *ptvar; FILE ptvar Tipo especial de estructura que establece el área de búffer Puntero a archivo secuencial Un archivo debe ser abierto antes de ser creado o procesado, esto asocia el nombre del archivo con el área de búffer Se debe especificar cómo se va a usar el archivo, sólo para lectura, sólo para escritura, o para lectura/escritura [Curso de programación en C] - Archivos & Cadenas 3/17

Tipos de Apertura de Archivos de Datos Para abrir un archivo se usa la función de biblioteca fopen, la cual se escribe típicamente como: ptvar = fopen(nombre-archivo, tipo-archivo); tipo-archivo r Abrir un archivo existente sólo para lectura w Abre un archivo nuevo sólo para escritura a Abrir un archivo existente para añadir información al final r+ Abrir un archivo existente tanto para lectura como para escritura w+ Abrir un archivo nuevo para lectura y escritura a+ Abrir un archivo existente para leer y añadir w, w+ Si existe un archivo con nombre-archivo especificado, será destruido y creado uno nuevo en su lugar. a, a+ Se creará un archivo nuevo si no existe un archivo con el nombre-archivo especificado. [Curso de programación en C] - Archivos & Cadenas 4/17

Tipos de Apertura de Archivos de Datos La función fopen devuelve un puntero al principio del área de buffer asociada al archivo, se devuelve NULL si no se puede abrir el archivo. Un archivo de datos debe cerrarse al final del programa, esto puede realizarse con la función de biblioteca fclose. La sintaxis es: fclose (ptvar); Apertura y cierre de un archivo nuevo para escritura #include<stdio.h> int main(){ FILE *pt; pt = fopen( Datos.txt, w );... fclose(pt); return 0; } [Curso de programación en C] - Archivos & Cadenas 5/17

Error en la Apertura de un Archivo En la siguiente condición se trata de abrir para lectura y escritura un archivo de datos previamente existente llamado Muestra.txt. Se mostrará un mensaje de error si no se encuentra este archivo, en otro caso, el archivo de datos se abrirá y procesará. if ((pt = fopen( Muestra.txt, r+ )) == NULL) printf( \nerror - No se puede abrir el archivo indicado\n ); En caso de no producir error, pt apunta al área de buffer asociada con el archivo Muestra.txt. Todas las subsiguientes instrucciones de proceso accederán al archivo mediante el puntero pt en lugar del nombre del archivo. [Curso de programación en C] - Archivos & Cadenas 6/17

Archivo para Escritura - Procesamiento por Caracter Un archivo puede crearse con w, w+, a, a+, dependiendo del propósito requerido. Archivo para escritura (w) #include<stdio.h> #include<ctype.h> int main(){ FILE *pt; char c; if ((pt = fopen( Datos.txt, w )) == NULL){ printf( \nerror - No se puede crear el archivo\n ); exit(-1); } printf( Escriba un texto y termine con <enter>: ); do{ putc(toupper(c = getchar()), pt); }while(c!= \n ); fclose(pt); return 0; } [Curso de programación en C] - Archivos & Cadenas 7/17

Archivo para Lectura - Procesamiento por Caracter Un archivo puede abrirse para sólo lectura con r. Archivo para lectura (r) #include<stdio.h> #include<ctype.h> int main(){ FILE *pt; char c; if ((pt = fopen( Datos.txt, r )) == NULL){ printf( \nerror - No se puede abrir el archivo\n ); exit(-1); } do{ putchar(c = getc(pt)); }while(c!= \n ); fclose(pt); return 0; } [Curso de programación en C] - Archivos & Cadenas 8/17

Archivo para Escritura - Procesamiento por Cadena de Caracteres Archivo para escritura (w) #include<stdio.h> #include<string.h> int main(){ FILE *pt; char texto[50]; if ((pt = fopen( Nombres.txt, w )) == NULL){ printf( \nerror - No se puede abrir el archivo\n ); exit(-1); } printf( Escriba el texto en una nueva línea\n ); printf( Escriba \ FIN\ para terminar\n\n ); do{ scanf( %[ˆ\n],texto); getchar(); if(strcmp(texto, FIN )!=0) fprintf(pt, %s\n,texto); }while(strcmp(texto, FIN )!=0); fclose(pt); return 0; } [Curso de programación en C] - Archivos & Cadenas 9/17

Archivo para Lectura - Procesamiento por Cadena de Caracteres Archivo para lectura (r) #include<stdio.h> #include<string.h> int main(){ FILE *pt; char texto[50]; if ((pt = fopen( Nombres.txt, r )) == NULL){ printf( \nerror - No se puede abrir el archivo\n ); exit(-1); } while(!feof(pt)){ fscanf(pt, %[ˆ\n],texto); printf( %s\n,texto); fscanf(pt, %[\n],texto); }; fclose(pt); return 0; } [Curso de programación en C] - Archivos & Cadenas 10/17

Arrays y Cadena de Caracteres Una cadena de caracteres puede ser representada por un array unidimensional de caracteres. Cada caracter de la cadena será almacenado en un elemento del array. Algunos problemas requieren que las cadenas de caracteres se procesen como entidades completas. Tales problemas pueden simplificarse utilizando funciones especiales de biblioteca orientadas a cadenas de caracteres. La mayoría de los compiladores de C incluyen funciones de biblioteca que permiten comparar, copiar o concatenar cadenas de caracteres. [Curso de programación en C] - Archivos & Cadenas 11/17

[Curso de programación en C] - Archivos Pone & Cadenas todos los caracteres de s a c ex- 12/17 Arrays y Cadena de Caracteres Funciones Propósito Biblioteca ANSI strcmp(s1,s2) Compara dos cadenas de caracteres lexicográficamente. Devuelve un valor negativo si s1 < s2; 0 si s1 y s2 son idénticas; y un valor positivo si s1 > s2 string.h strcmpi(s1,s2) strcpy(s1,s2) strlen(s) strcat(s1,s2) Compara dos cadenas de caracteres lexicográficamente, sin diferenciar mayúsculas de minúsculas. Devuelve un valor negativo si s1 < s2; 0 si s1 y s2 son idénticas; y un valor positivo si s1 > s2 Copia la cadena de caracteres s2 en la cadena s1 Devuelve el número de caracteres de una cadena Concatena la cadena de caracteres s2 a s1 y agrega string.h string.h string.h string.h

Paso de Argumentos en la Función main La ejecución de un programa en C comienza por la función main. En ocasiones, es requerido que los programas acepten una serie de parámetros al iniciar su ejecución y especificar estos valores desde la línea de comandos. Para este propósito, la función main tiene los siguientes parámetros: main(int argc, char *argv[]); Argumento argc argv[0] argv[1] argv[argc-1] argv[argc] Descripción Número de argumentos pasados a la función Nombre del programa 1er argumento después del nombre del programa Último argumento NULL [Curso de programación en C] - Archivos & Cadenas 13/17

Paso de Argumentos en la Función main Suponga que quiere ejecutar en el programa «Convertir» para obtener la equivalencia un número decimal a uno de base n-ádica y lo quiere hacer mediante línea de comandos../convertir -NUM 168 -BASE 2 Argumento Valor argc 5 argv[0]./convertir argv[1] -NUM argv[2] 168 argv[3] -BASE argv[4] 2 argv[5] NULL Para transformar un número recibido en argv a su tipo correspondiente se puede hacer uso de las funciones de biblioteca: numdecimal = atoi(argv[2]); [Curso de programación en C] - Archivos & Cadenas 14/17

Ejercicios para aplicar los temas (Archivos) - Codificar un programa que reciba como entrada 2 archivos y compare el contenido de ambos. Los archivos contienen números enteros, uno en cada línea. Características adicionales: El programa debe tener el patrón de ejecución./archivoexe -file NombreArch1 NombreArch2 Si el número de parámetros es diferente de 4, desplegar: El número de parámetros debe ser 4 Si el patrón de entrada no coincide con el especificado, desplegar: La entrada debe ser:./archivoexe -file NombreArch1 NombreArch2 Si el contenido de los archivos difiere, desplegar: Valores diferentes en Línea #: val 1 val 2 # se sustituye por el número de línea val 1 val 2 por los valores en cada archivo. En todos los casos de error, así como en los que no coincidan los datos, se debe terminar la ejecución del programa Si el contenido de ambos archivos coincide, desplegar: El contenido del ambos archivos coincide [Curso de programación en C] - Archivos & Cadenas 15/17

Ejercicios para aplicar los temas (Cadenas) - Codificar un programa con las siguientes características: Recibir una cadena de entrada mediante línea de comandos que acepte todo tipo de caracteres excepto enter \n. Solicitar memoria dinámica del tamaño de la cadena de entrada (considerando los espacios en blanco y el \0 ) y copiar en ésta la información de la cadena introducida. Declarar en el main 5 variables locales de tipo entero para contabilizar la cantidad de vocales, consonantes, números, espacios en blanco y otros caracteres en la cadena de entrada. Pasar a una función (de tipo void) la cadena de entrada y las 5 variables para contabilizar los diferentes tipos de caracteres. El paso de argumentos debe ser por referencia. Modificar los contadores de los tipos de caracteres en la función y regresar al punto donde fue «llamada». Imprimir en una línea nueva el valor de los contadores de los tipos de caracteres. [Curso de programación en C] - Archivos & Cadenas 16/17

Ejercicios para aplicar los temas (Punteros) Ejemplo de entrada:./cadena 0.5 es un flotante Ejemplo de salida: Vocales: 8 Consonantes: 10 Números: 2 Espacios en blanco: 4 Otros caracteres: 1 [Curso de programación en C] - Archivos & Cadenas 17/17