Sie sind auf Seite 1von 17

Lenguaje C

Entrada y Salida de Datos


Omar Andrs Zapata Mesa
Grupo de Fenomenologa de
Interaiones Fundamentales!
"G#i#$
%ni&ersidad de Antio'uia
E(S por onsola

Se re#iere a las operaiones 'ue ourren en el


telado y la pantalla de la omputadora)

*ara ello usamos una serie de #uniones


de#inidas en el A+SI! tales omo

get,ar

put,ar

gets

puts

*ara &er mas in#ormai-n so.re estas


#uniones &er man stdio),

/eamos el siguiente ejemplo0


Ejemplo
1inlude2stdio),3
int main"int arg!,ar 4arg&56$7
,ar 8
do7
9get,ar"$8
i#"islo:er"$$put,ar"toupper"$$8
else put,ar"tolo:er"$$8
;:,ile"<9=)=$8
;
1inlude2stdio),3
int main"int arg!,ar 4arg&56$7
,ar str5>?68
gets"str$8
print#"@La longitud es AdBn@!strlen"str$$8
;
Entrada y Salida Con Formato

La entrada y salida on #ormato es para


indiar 'ue se imprimirCn o se leerCn no solo
arateres sino otros tipos de datos omo
enteros! tipos punto #lotante! otal!
,eDadeimal! notai-n ient#ia et))

*ara esto se usa dos #uniones .Csiamente


'ue son print# y san#! para el ual! se usa una
adena de ontrol 'ue india el #ormato a usar
y luego los argumentos o &aria.les a leer o
imprimir)
/er Clases anteriores)
Manejo de Ar,i&os

EDisten dos lases de tipos de ar,i&os


prinipalmente! los .u#ereados y no
.u#ereados)

Los .u#ereados son a'uellos 'ue se montan


en ram uando se montan! los no .u#ereados
son los 'ue permaneen en diso)

En el estCndar A+SI todos los ar,i&os son


.u##ereados pero en %+IE no todos lo son! por
ejemplo el modo de letura teDto es .u##ereado
pero letura en modo .inario no)
Manejo de Ar,i&os

*ara a.rir un ar,i&o desde el odigo en C se usa


un puntero al tipo de dato FILE! 'ue ontiene
in#ormai-n o omo el nom.re del ar,i&o! el modo
de apertura y el indiador de posii-n)

Los modos de apertura son FrG read! G:G :rite! GaG


append! Gr.G read .inary! G:.G :rite .ianry! Fa.G
append .inary y om.inaiones omo Fr:G
letoesritura! Gr:.G letoesritura .inaria)
FILE 4p#8
p#9#open"@nom.reHar,i&o@!@modoHapertura@$8
Manejo de Ar,i&os

put y y get son #uniones para leer y esri.ir


arateres en un ar,i&o)

A,ora suponga 'ue esta leyendo un ar,i&o y


neesita sa.er uCndo lleg- al #inal de la
in#ormai-n ontenida en el! para esto se de#ini-
EOF en stdio),! 'ue nos idia 'ue no ,ay mas datos
a leer)

Es neesario despus de manipular el ar,i&o en


letura o esritura errar el idiador o puntero a #ile
para li.erar la in#ormai-n o #lus,earla en diso!
para ello se usa #lose)

Manejo de Ar,i&os

Iaerle #lus, a un ar,i&o es ,aer 'ue


la in#ormai=on del ar,i&o 'ue se
enuentra en ram .aje inmediatamente
a diso! para esto usamos la #uni-n
##lus,)

Cuando estamos en el #inal del ar,i&o y


'ueremos &ol&er al prinipio usamos
re:ind)

A,ora &eamos un ejemplo on todas


estas #uniones0
Manejo de Ar,i&os

*ara manipular datos de ar,i&os .inarios


podemos usar #:rite y para leerlos #read8
estas #uniones tam.in estCn diseJadas para
guardar de #orma .inaria tipos de datos
omplejos omo estruturas! esto se onoe
en el mundo de la programai-n omo la
serialiKai-n de datos) /er mCs man #read
#:rite)

*ara manipular el apuntador de posiion del


ar,i&o en ual'uier posii-n se usan las
#uniones #seeL! #tell)
Ejemplo
1inlude2stdio),3
FILE 4ptrAr,i&o5M68
int main"int arg!,ar 4arg&56$7
i#"arg 99 N$7
ptrAr,i&o5?69#open"arg&5O6!@r@$8
ptrAr,i&o5O69#open"arg&5M6!@:@$8
,ar ,9= =8
:,ile"<#error"ptrAr,i&o5?6$$7
,9get"ptrAr,i&o5?6$8
i#",99EOF$ .reaL8
put",!ptrAr,i&o5O6$8
;
#lose"ptrAr,i&o5?6$8
#lose"ptrAr,i&o5O6$8
;else print#"@)(p input outputBn@$8
;
Ejemplo M Ar,i&os Pinarios

Los ar,i&os .inarios son a'uellos 'ue se


guardan en -digo solo entendi.le para la
ma'uina! pero uno puede &er el ontenido
usando por ejemplo oLteta) Ej0
demos nano test).in y oLteta test).in
1inlude2stdio),3
FILE 4ptrAr,i&o8
int main"int arg!,ar 4arg&56$7
ptrAr,i&o9#open"arg&5O6!@:.@$8
int dato9O?8
#:rite"Qdato!siKeo#"int$!O!ptrAr,i&o$8
#lose"ptrAr,i&o$8
;
Ejemplo N ##lus,
1inlude2stdio),3
FILE 4ptrAr,i&o8
int main"int arg!,ar 4arg&56$7
ptrAr,i&o9#open"@#lus,)tDt@!@:@$8
int i9?8
#or"i9?8i2O??????8iRR$7
print#"@AdBn@!i$8
#print#"ptrAr,i&o!@AdBn@!i$8
(( ##lus,"ptrAr,i&o$8
;
#lose"ptrAr,i&o$8
;
*ara este ejeriio &amos a parar el programa on rtR y
mirar lo Sltimo 'ue imprimi- en pantalla y lo 'ue guard- en
el ar,i&o usando y sin usar ##lus,) Tam.in el tiempo de
ejeui-n sin usar ##lus, y usandolo)
Ejemplo N re:ind #seeL
1inlude2stdio),3
FILE 4ptrAr,i&o5M68
int main"int arg!,ar 4arg&56$7
ptrAr,i&o5?69#open"@ar,i&oH#seeL)dat@!@:@$8
#print#"ptrAr,i&o5?6!@As@!@Gnu(LinuD De&elopers@$8
#lose"ptrAr,i&o5?6$8
ptrAr,i&o5O69#open"@ar,i&oH#seeL)dat@!@r@$8
int i9?8
#seeL"ptrAr,i&o5O6!O?!#tell"ptrAr,i&o5O6$$8
print#"@ABn@!#get"ptrAr,i&o5O6$$8
#seeL"ptrAr,i&o5O6!U!?$8
print#"@ABn@!#get"ptrAr,i&o5O6$$8
re:ind"ptrAr,i&o5O6$8
print#"@ABn@!#get"ptrAr,i&o5O6$$8
#lose"ptrAr,i&o5O6$8
;
#san# y #print# E(S on Formato

Estas dos #uniones se rearon para


leer(esri.ir datos #Cilmente en
ar,i&os) Se usan similar a san# y
print#! solo 'ue el primer algumento es el
puntero del ar,i&o donde se &a a
leer(esri.ir los datos)

getline y ssan# *ara proesar
lneas de entrada

getline"$ lee una lnea entera! almaenando la


direi-n del .u##er 'ue ontiene el teDto)

ssan# lee su entrada de la adena de


arateres)

Estas dos #uniones se pueden usar en


onjunto para proesar una lnea de datos
tomada de un ar,i&o! por lo regular se toma
la lnea se ,ae una opia o se preproesa!
luego on ssan# se toman los datos al estilo
#san#! solo 'ue el primer argumento no es un
puntero a FILE sino una adena de
arateres)
Ejeriios

Iaer un programa 'ue dado un par de


arateres por la lnea de ommandos
'ue remplaKe todo el ar,i&o! el primero
por el segundo al estilo sed)

Iaer un programa 'ue dado un ar,i&o


por la lnea de omandos 'ue retorne la
olumna pedida)

Iaer un programa 'ue mire 'u lneas


empieKan por 1 y .orre toda la linea)
Ve#erenias

C Manual de Ve#erenia Ier.ert S,ildt

Das könnte Ihnen auch gefallen