Ejemplo Rutina Lectura - Operaciones

Anuncio
Estructura de Datos y Algoritmos
Año 2016
Ejemplo Rutina Lectura - Operaciones
El código que se presenta a continuación es una guı́a para programar una rutina que permita leer datos desde un
archivo de texto.
void L e c t u r a A r c h i v o O p e r a c i o n e s ( ) {
FILE ∗ f p ;
i f ( ( f p = f o p e n ( ‘ ‘ O p e r a c i o n e s . t x t ’ ’ , ‘ ‘ r ’ ’ ) )==NULL)
p r i n t f ( ‘ ‘ERROR : no s e pudo a b r i r e l a r c h i v o \n ’ ’ ) ;
else {
while ( ! ( f e o f ( fp ) ) ) {
f s c a n f ( fp , ‘ ‘ % d ’ ’ , &Cod Op ) ;
i f ( Cod Op ==1 ) | | ( Cod Op ==2 ) {
/ ∗ s i e s un i n g r e s o o una e l i m i n a c i ó n
l e e r t o d a l a i n f o r m a c i ó n de un a r t ı́ c u l o ∗ /
f g e t s ( CodArt , 8 , f p ) ; ( ∗ )
f g e t s ( Art , 5 2 , f p ) ;
f g e t s ( Marca , 6 2 , f p ) ;
f s c a n f ( fp , ‘ ‘ % f ’ ’ , &V a l o r ) ;
f s c a n f ( fp , ‘ ‘ % i ’ ’ , &C a n t ) ;
f g e t s ( Club , 7 2 , f p ) ;
/ ∗ Donde CodArt , A r t , Marca , V a l o r , Cant , Club
c o r r e s p o n d e n a l a i n f o r m a c i ó n g u a r d a d a en e l
a r c h i v o O p e r a c i o n e s . t x t en l a p o s i c i ó n c o r r i e n t e ∗ /
.
/ ∗ I n v o c a r l o s p r o c e d i m i e n t o s que c o r r e s p o n d a n ∗ /
.
}
else{
f g e t s ( CodArt , 8 , f p ) ;
/ ∗ s i e s una c o n s u l t a l e e r s ó l o e l c ó d i g o de p r o d u c t o ∗ /
.
/ ∗ I n v o c a r l o s p r o c e d i m i e n t o s que c o r r e s p o n d a n ∗ /
.
}
}
}
p r i n t f ( ‘ ‘ La s e c u e n c i a de o p e r a c i o n e s ha f i n a l i z a d o \n ’ ’ ) ;
f c l o s e ( fp ) ;
}
(*) La función fgets lee sólo strings desde un archivo, por lo tanto si se usa para leer números éstos son considerados
strings y no valores numéricos, si se los quiere operar como números hay que transformarlos en tales o leerlos con otra
función (por ejemplo fscanf ). El fgets lee como último caracter el “\n”, por lo tanto para que NO dé error al comparar lo
que se leyó con lo que se guarda el “\n”, éste deberá ser reemplazado por “\0”.
char *fgets(char *s, int n, FILE *stream);
donde n es la cantidad de caracteres que se quieren leer, s la variable donde se lee y file el archivo desde donde se lee.
int fscanf(FILE *stream, const char *format[, address, ...])
donde format es el string de formato de lo que se va a leer (entero, flotante, string, etc.), address la variable donde se lee
y file el archivo desde donde se lee.
Departamento de Informática - U.N.S.L.
1
Descargar