• No se han encontrado resultados

Programación Básica Apuntadores y Archivos en C

N/A
N/A
Protected

Academic year: 2021

Share "Programación Básica Apuntadores y Archivos en C"

Copied!
21
0
0

Texto completo

(1)

Arturo Vega Gonz´

alez

a.vega@ugto.mx Division de Ciencias e Ingenier´ıas

Universidad de Guanajuato Campus Le´on

(2)
(3)

1

Apuntadores

(4)

Acceso indirecto al contenido de las variables.

Un apuntador es una variable que almacena la direcci´

on de

memoria donde el dato de interes esta almacenado.

Cuando deseamos que un apuntador no contenga una direcci´

on

asociada a un dato, se dice que el apuntador no apunta a ning´

un

lado y se expresa como NULL.

Cuando se declara un apuntador, una cierta cantidad de

memoria se reserva para contenerlo.

Nunca se debe asumir que un apuntador tiene un tama˜

no

definido.

(5)

Para declarar una apuntador se utiliza el “*”

i n t o p c i o n ; // s e d e f i n e una v a r i a b l e t i p o e n t e r o l l a m a d a o p c i ´o n i n t ∗ p t r o p c i o n ; // s e d e f i n e una a p u n t a d o r a una v a r i a b l e t i p o e n t e r o i n t ∗ i p t r ; // s e d e c l a r a un a p u n t a d o r t i p o e n t e r o

(6)

Operadores:

Operador Descripci´on

* dereference : indica que se accesa el con-tenido de la variable o memoria a la cual apunta el apuntador

& Direcci´on: Indica la direcci´on f´ısica de memoria donde la variable es almacenada (dada una variable, & apunta hacia la variable)

(7)

Considere:

i n t a , ∗ i p t r , ∗ j p t r . ∗ k p t r

a

iptr

jptr

kptr

(8)

i p t r = &a ; // i p t r a p u n t a a l c o n t e n i d o de a

a

iptr

jptr

kptr

j p t r = i p t r // j p t r a p u n t a a l o que a p u n t a i p t r

a

iptr

jptr

kptr

(9)

∗ j p t r = 1 0 0 ; // s e a c c e s a e l e s p a c i o // de memoria a l que a p u n t a 100

a

iptr

jptr

kptr

k p t r = NULL ; // a p u n t a d o r v a c i o // no a p u n t a a a l g u n a v a r i a b l e o c o n t e n i d o 100

a

iptr

jptr

kptr

(10)

Reservando espacio para un apuntador

#i n c l u d e < s t d l i b . h> i n t g ( i n t ∗∗ i p t r ) { i f ( ( ∗ i p t r = ( i n t ∗ ) m a l l o c ( s i z e o f ( i n t ) ) ) = = NULL ) r e t u r n −1; r e t u r n 0 ; }

malloc : reserva espacio de memoria

(11)

Referencias: arreglos y apuntadores

Arreglos

i n t f ( ) { i n t a [ 1 0 ] , ∗ i p t r ; i p t r = a ; i p t r [ 0 ] = 5 ; r e t u r n 0 ; } . . .

Apuntadores

i n t g ( ) { i n t a [ 1 0 ] , ∗ i p t r ; i p t r = a ; ∗ i p t r = 5 ; r e t u r n 0 ; } . . .

(12)

Referencias: arreglos y apuntadores

(13)

Argumentos por valor y por referencia

En “C”, los argumentos de las funciones siempre pasan s´

olo “su

valor”. Es decir, se hace una copia del valor de cada argumento,

y son estas copias las que se procesan en la funci´

on. Como

consecuencia, la variables que pasan como argumentos a las

funciones NO CAMBIAN.

El uso de apuntadores permite el paso de argumentos por

referencia, de esta forma los argumentos puede CAMBIAR su

contenido. Aqu´ı entonces deben pasarse direcciones de variables

(14)

Intercambio Incorrecto

v o i d c a m b i o 1 ( i n t x , i n t y ) { i n t tmp ; tmp = x ; x = y ; y = tmp ; r e t u r n ; } . . .

Intercambio correcto

v o i d c a m b i o 2 ( i n t ∗ x , i n t ∗ y ) { i n t tmp ; tmp = ∗ x ; ∗ x = ∗ y ; ∗ y = tmp ; r e t u r n ; } . . .

(15)

Uso en funciones

Arreglos

i n t f 1 ( i n t a [ ] ) { a [ 0 ] = 5 ; r e t u r n 0 ; }

Apuntadores

i n t f 2 ( i n t ∗ a ) { ∗ a = 5 ; r e t u r n 0 ; }

(16)

Un archivo es un conjunto de informaci´

on o datos que se

encuentran almacenados en una memoria permanente, como un

disco duro.

Un archivo se define por su nombre y su extensi´

on

La extension del archivo nos indica parcialmente el tipo y

contenido del archivo

Los lenguajes de programaci´

on contienen funciones b´

asicas para

accesar y manipular archivos

(17)

Declarando y abriendo un archivo

La funci´

on fopen se utiliza para abir 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:

FILE ∗ f o p e n ( c o n s t c h a r ∗ n o m b r e D E L a r c h i v o , c o n s t c h a r ∗modo ) ;

fopen retorna un apundador al archivo si la llamada fue exitosa, de

otra forma regresa NULL

(18)

Existen diversas formas de abrir ´

o crear un archivo

Modo

Uso

r

Abre para lectura

w

Abre o crea para escritura.

Descarta (destruye)

cualquier contenido previo

a

Abre o crea para escritura. Agrega a (escribe despues

de) cualquier contenido previo

r+

Abre para modificaciones (lectura y escritura)

w+

Abre o crea para modificacion. Descarta (destruye)

cualquier contenido previo

(19)

Declaraci´

on, apertura y cierre de un archivo:

#i n c l u d e < s t d l i b . h> #i n c l u d e < s t d i o . h> FILE ∗ A r c h i v o p t r ; // s e d e c l a r a e l a r c h i v o // e j e m p l o de a p e r t u r a de un a r c h i v o A r c h i v o p t r = f o p e n ( ” d a t o s . t x t ” , ”w” ) ; // p a r a c e r r a r l o s a r c h i v o s s e u t i l i z a l a f u n c i o n f c l o s e f c l o s e ( FILE ∗ A r c h i v o p t r ) ;

(20)

Lectura

f s c a n f ( FILE ∗ a r c h i v o , c o n s t c h a r ∗ f o r m a t o , . . . . ) ;

Escritura

f p r i n t f ( FILE ∗ a r c h i v o , c o n s t c h a r ∗ f o r m a t o , . . . . ) ;

Otras funciones

f g e t c ( FILE ∗ a r c h i v o ) f p u t s ( c o n s t c h a r s ∗ , FILE ∗ a r c h i v o ) ; f p u t c ( i n t c , FILE ∗ a r c h i v o ) ; s p r i n t f ( c h a r ∗ b u f f e r , c o n s t c h a r ∗ f o r m a t , . . . ) ; s s c a n f ( c h a r ∗ b u f f e r , c o n s t c h a r ∗ f o r m a t , . . . ) ;

(21)

Ejemplo

#i n c l u d e < s t d i o . h> i n t main ( ) { c h a r NombreArch [ 8 0 ] ; FILE ∗ A r c h i v o P t r ; p r i n t f ( ” A r c h i v o a a b r i r ? ” ) ; s c a n f ( ”%79 s ” , NombreArch ) ; A r c h i v o P t r = f o p e n ( NombreArch , ” r ” ) ; i f ( A r c h i v o P t r == NULL ) { f p r i n t f ( s t d e r r , ”No s e p u e d e a b r i r e l a r c h i v o : %s \ n ” , NombreArch ) ; r e t u r n 1 ; /∗ T e r m i n a e l p r o g r a m a ∗/ }

Referencias

Documento similar

(1886-1887) encajarían bien en una antología de textos históricos. Sólo que para él la literatura es la que debe influir en la historia y no a la inversa, pues la verdad litera- ria

Pero la realidad se impone por encima de todo; la misma Isidora es consciente del cambio: «Yo misma conozco que soy otra, porque cuando perdí la idea que me hacía ser señora, me

El inconveniente operativo que presenta el hecho de que la distribuci´ on de probabilidad de una variable aleatoria es una funci´ on de conjunto se resuelve mediante el uso de

Variable Lebesgue spaces will let us capture different kind of growths and will create a space where these functions could belong.... Motivation of variable

• Variable aleatoria es la variable que surge de un experimento aleatorio, consistente en considerar todos los posibles valores de una variable en una población. La variable

Fuente de emisión secundaria que afecta a la estación: Combustión en sector residencial y comercial Distancia a la primera vía de tráfico: 3 metros (15 m de ancho)..

Dentro del agujero negro algo pasa con la direcci ´on del

En el modelo matemático se integrarán todas las expresiones usadas para definir cada una de las variables que se ha considerado que deben de componer el modelo de la zona de