Académique Documents
Professionnel Documents
Culture Documents
Tal comose puede suponerporel titulo.esle libro ha sidodiseiiadode la1 fonna que usted
pueda aprender por sf mismo ellenguaje de programaci6n C en 21 dfas. Dentro de los
diversos lenguajes de programaci6.n disponibles. cada vez mas programadores
profesioraales escogen al C debido a su poder y flexibilidad. Por las razanes que
mencionamos en el Dia 1. usled no sehaequivlXadoa1 seleccionar at C comosu tenguaje
de programaci6n.
Pensamos que ha hecho una decisi6n atinada seleccionando este libro como su media
para aprender el C. Aunque hay muchas sabre C. creemos que esce Iibre presenta al C
La funci6n printf()
l ihclude <stdio .h>
printf{ cadena de
~ormato(,argumentos,
.. . ] ) ;
printf [) es una funci6n que acepta una serle de argument os, donde a cada uno se Ie
aplica un especificadorde conversion en la cadena de formateo dada. pri n tf () imprime la infonnaci6n formateada en el dispositivo esljndar de salida, que, por 10 general.
es la pantalla. Cuando se usa pri nt f ( ) se necesila incluir el archivo de encabezado de
la entrada/salida est!ndar. STDIO.H.
.
La. i:adel1ll de [ormata es imprescindible. Sin e mbargo. los argulI1entos son opcioDales. Para cada atgumt:nto debe haber un especificador deconversi6n. La. tabla 7 .2lista
los especificadores de conversi6n mAs comunes. La cadena de formato tambien puede
comener secuencias de escape. La labia 7 .1 lista las mas usadas. A continuac i6n se
presenlan ejemplos de lIamadas a pri ntf () y su salida:
. Ejemplo 1
....
..~
Despliega
oEste es un ejernplo de a l qo iITPreso!
Ejemplo2
pr i ntf( Esto imprime un c ar~cter, i c\ n un nUmero, \d\ n un punta !lotante,
\C o, 'z', 123, 456.789 );
Despllega
Esto i~p r ime un car6cter, Z
un nUJI'.ero, 123
un punto fl otante, 456. 789
Olra caracteristica de este libro son los cuadros de DEBEINO DEBEt los cuales dan
indicaciones sabre 10 que hay que barer y 10 que no hay que hacer.
) .' :
'"~"""X;iW<ft'?
UtftMShlad d. GUINIIIJu.t:o
Biblioteca de 18 F.tM .E.E.
1'l'<lrSOll
EdUC<lcil"lII
---
2
3
5
6
7
Revision de la semana I
159
La semana 1 de un vistazo
8
9
10
II
12
13
14
..... 189
Revision de la semaoa 2:
La sema na 3 d e un vistazo
IS
16
17
18
19
20
21
Revision de la semana 3
'85
A~ndlces
.. ... 619
Funciooes comunes eo orden alfa~tico ..................................... .
Respueslas ................. ..... ........ ........................................................ ........... 627
Puntos especfficos de los compiladores ................................................. .. 679
693
G
H
... .. 609
Contenido
1
La semana de un vistazo
1
M _
....... _
. ....... .. ................................. M
. . . . . . . . . . . . . . . .N
....... N
. . . . . . . . . . . . . . . .. . . . . .
21
. . . . . . . . . . . . . . . ._
. . . ._
.......... _
....... _
. .......
35
C en 21 dras
Nombres de variab le ................................................................. ............... 37
Tipos de variables numtricas ... ............................................................... 39
Dedarad6n de variables ........................................................................... 42
La palabra clave rypMe! ............................ ............................................... 43
Inicializad6n de variables nunY:ricas ...................................................... 43
Constanles ..................................................................................... ............... 44
Constanles Ii leraies ............................. ...... ............................
. .......... 44
Constantes simb6licas ............................................................................... 46
Resumen .................. _....... _................................................................. ........ 49
Preguntas Y respuestas .................................................................................. .50
Taller ................................ _ .......................................................................... .5 1
Cuestionario .............................................................................. ........... ..... .5 1
Ejercicios .................................................................................................. .52
La semana de un vistazo
167
Arreglos nurnf:ricos . _ . _ _ . _____ ... _....... _____ .. _.......... _................ 169
Apuntadores ............ __ ... _ ... _. ___ .............. _....... _....... _.................... 189
LQut es un apuntador? .......................................................... ...................... 190
La memoria de la computadora ............... ........................ ...... ................. 190
Creaci6n de un apuntador ................................................. ... .. ................. 191
Los apunladores y las variables simples ............. ............ .................... ........ 192
Dc:c1arn.ci6n de apuntadores ................................. ,.................................. 192
Inicializaci6n de apuntadores ................................................................. 192
U$O de apuntadores .................................... ................................ ............. 193
Los apuntadores y los tipos de variables ..................................................... 195
Los apumadores y los arregJos ................................................ .................... 197
El nombre del arreglo como un apuntador ............................................. 197
Almacenamiento de e1emeotos de arteglo .............................................. 198
Ari trn.!:lica de apuntadores ..................... .............................. .................... 200
Precauciones con los apuntadores .......................... ..................................... 204
NOlaci6n de su bindices de arreglo y apuntadores ....................................... 205
Paso de arreglos a funciones ....................................................................... 206
Resumen ...................................................................................................... 2 10
Pregunlas y respuestas ....................................... ....................... ................... 211
Taller .......................................................................................... .. ............... 2 11
Cuestionario ............................ ...................... ................... ...................... 2 12
Ejercicios ................................................................................................ 212
10
Estructuras ..............................................
. . . . . .. . . . . . . . .. H
241
C en 21 dfas
13
Mas sobre el oontrol de PrograDISI ___ ... _..... _.... _.... _....._..301
Tenninaci6n an l~ipada de ciclos ...............,................................................ 302
EI enunciado brtak ................................................................................. 302
EI enunciado continw ............................................................................. 304
EI enunciado golo ...................................................... .................................. 306
Ciclos infinitos ............................................................................................. 309
EI enunciado SWilCh ..................................................................................... 312
Tenninaci6n del programa .......................................................................... 321
La funci6n t,Xit() ................................................... .................................. 321
La funci6n atex;t() (s6lo para el OOS) .................................................. . 322
Ejecuci6n de comandos del sistema operativo en un programa ................ . 325
Res umen ........... ........................................................................................... 327
Preguntas y respucstas ................................................................................ . 327
Taller .............................. .... ....................................................................... 328
Cuestionario ............ .......................................... ........ ........... .................. 328
Ejercicios ........................................................................................ ........ 328
14
xviii
Revisi6n de la semana
379
La semana de un vistazo
389
15
16
e en 21 dias
Funciones para manejo de archivos
............. 452
Borrada de un archivo ..........
...............
..... 452
Renombrado de un archivo ........
.............. 453 .
Copiado de un archivo ................
............. 454
Uso de archivos temporales ............. .............. .................. ............ ............. 457
Resumtm ................. ................................................................................... 459
Preguntas y respuestas .................... ......... .................................................... 459
Taller ....... ....................................... .......... .. ......... ........... ............................. 460
Cuestionario ........................................................................................... 460
Ejercicios .......... ............... ... .................. ................................................ 461
17
..463
18
19
M . . . . . . ._
............... . _
....... _
. .. .. . . . .
S13
20
Revision de Ja semana
58S
Aptndices
xxii
~ . . . . . . . . . . . . . . . . . . . . . . . . . 595
. M . . . . .M _ . . . . "
. . . . . . .M . . . . . . . . . . . . . . . .
M ................
599
Respuestas ................................... _....... _................ _....... " ....... " ................ 627
Respuestas para elOra I "Comienzo" .................. .. .. ............ ..... ......... ........ 628
Cuestionario ...... ... .... ... ... ......... ................................................................ 628
Ejercicios .... .. ..... .. ... ... .... ........ .. .... ...... ...... ...... .................................. .. ... .. 628
Respuestas para elOra 2 "Los componentes de un programa C" ............... 629
Cuestionario ....... ....... .................... ...... .. .................................................. 629
Ejercicios ......................... .................................... ......... .................. .. ...... 630
Respuestas para elOra 3 "Variables y constantes numericas" ................... 631
Cuestionario .................. ...... .... .. ................. .... .......... .. ............... ..... ......... 631
Ejercicios ...... ... ............. .... ............................................................. ....... .. 6 32
.. .... 633
Respuestas para elOra 4 "Enunciados, expresiones y operadores"
Cuestionario ........ .. .... ....... ...................................................... ... .. .. .. .. .... .. 633
Ejercicios ...... .................... ..... ... ..... ............... ............... .... ....... .. ... ....... .. 634
Respuestas para el Oia 5 "Funciones: 10 basico" ........... ..... .... ............ ........ 637
Cuestionario ........ .. ..... ... ... ... .... .. .... ....... ...... ............................................. 637
Ejercicios . .. .......... ...... ... ...... .... .. .... .... ... ... .. ... .............. ............................. 637
Respuestas para el Dfa 6 "Control b4sico del programa" ........................... 641
~u estionario .......... .............. ........................ ............... ..... ... ......... ... .... .... . 641
Ejercicios ...................... .... .. .................. .. ............................ ............... ..... 642
Respuestas para el Ofa 7 "Entrada/salida basica" ....................................... 643
Cuestionario ............... ... ...................................................... ... ........ .... .... . 643
Ejercicios .................................. ............ ......................................... ......... 644
Respuestas para el Ofa 8 "Arreglos numericos" .. .. ........ ...... ... ... ................. 648
Cuestionario ................................................ ..... ....... ................................ 648
Ejercicios .. ........... ......... .................... ...................................................... 649
Respuestas para elOra 9 "Apuntadores" .. ... ... .. ... ..... .. ................................ 654
Cuestionario ..... .... ....................................... ......................... .. ..... ... ......... 654
Ejercicios .. .............. ... ... ................... .. .... ............ ...... ............ .................... 655
Respuestas para el O(a 10 "Caracteres y cadenas" ..................................... 656
Cuestionario ......... ...................................................... ............. ........... ... .. 656
Ejercicios .. ....................................................... ....... ........ , .. .. .. ............ ..... 658
Respuestas para el Oia II "Estructuras" ................................................... .. 658
Cuestionario .............................. .. ..... ..... .. .............. .. ................................ 658
Ejercicios .. ...... ....... ........... .. ...... .. .... .. .... ................ .. ................................ 659
Respuestas parael Ora 12 "Alcance de las variables" ... ............................. 661
Cuestionario ..... ..................................... ...... ..... ..... .. ...... .......................... 661
Ejercicios ........ ........ .. .... .... .. .... .... ... ............. ............... .... .................... ..... 662
Respuestas para el Oia 13 "Mas sobre el conlrOi del programa" ............ .... 666
Cuestionario ....
.... ... .. ... ............................................. 666
Ejercicios .......................... ... ... .. ...... .. .... .. .......... .... ......................... ..... ... . 667
Respuestas para el Dfa 14 ''Trabajando con la pantalla,
la impresora y el teclado" .............................. ..... ..... .. ...... ...... .................... 668
Cuestionario ..... ...... ... .... .... .. ...... ...... .................. ......... ......... ............. ... ... . 668
Ejercicios . .. .......... ...... ... ..... ............. .. .... ............................. ....... ......... ..... 669
Respuestas para el Ofa 15 "Mas sobre apuntadores" .................................. 669
Cuestionario ........................ ........................ .............. , ............ ........ ....... .. 669
Ejercicios ......... .......................................... ...... ..... ........ .. ........................ 670
xxiii
AI
D6nde andamos .
La primera semana trata el material bisico que se necesita para saber c6mo comprender el
C completamentc. En los diu 1, ''COnllcrn:o'', y 2, "Los componcntcs de un progrnma C",
usted aprendeni la manera de crear un programa C y reconocer los elementos bisicos de un
programasimple. EI dfa 3, "Variables y constantes num6ricas", complementa 10 tratadoen
los primeros dos di3s definiendo los tipos de variables. Et dia 4, "En unci ados, expresiones
y operadores", lorna las variables y afiade expresiones simples, para que, de esta fonna,
puedan seT creados nuevos valores. El dfa tambien proporciona informaci6n sobre la manera
de tomar decisiones y cambiar eI flujo del programa usando enunciados if. El dfa 5,
"Funciones: 10 basico", trala las funciones del C y la programaci6", estructurada. E1 dfa 6,
"Control basico del programa", presenta mas comandos que Ie pennitinin controlar el flujo
de los programas. La semana lermina en el dia 7, "Entrada/salida basica", con un anaJisis
sobre la impresi6n de infonnaci6n y una ayuda para hacer que los program as interacluen con
el teclado y la pantalla.
ESla es una gran cantidad de material para tratarla en solamente una semana, pero si se lorna
la informaci6n de un capfwlo par dia, no se debe tener problemas.
Comienzo
Bienvenido a iAprtnda C por usted mismo en Z I d(w! &te capllulo Ie da lOll mediOi p2ra
Ilegar a ser un programador de C eficiente. Hoy aprendera:
Q C es un lenguaje poderoso ):' flexible. 1.0 que se puede lograr con el C estA
limitado solamente por la imaginaci6n. Ellenguaje. por sf mismo, no Ie pone
Umites. EI C se usa para proyectos tan diversos como sistemas operativos.
procesadores de palabras. grMicos. hojas de c.ilculo y hasta compiladores para
otros Jenguajes.
Comienzo
xr
EI cicIo de desarrollo
del programa
. El cicio de desarrollo del programa tiene sus propios pasos. En el primer paso se usa un editor
para crear un archivo de disco que eontiene el ctXfigo ~ntl!. En e1 segundo paso se compila
el c6d.igo (uente para crear un archivo objl!to. En ellercer paso se enlua el c6digocornpilado
6
(.pam crear un tlrchjy~ ejecutable. Por ultimo. el cuarto paso es ejecutar eI programa para ver
Mom!
en la
pantalla. (Por ahora, n.o se preocupe sobre la manera en que funciona este enunciado.)
Uso de un editor
Algunos compiladores vienen con un editor que puede usarse para leclear el c6Wgo fuent e,
y otros n.o. Consulte los manuales del compilador para ver si el compilador viene con un
editor. En caso de n.o sec asf, se tienen disponiblcs rnuchos editores.
La mayorfa de los sistemas de c6mputo incluyen un programa que puede usarse como editor.
Si se esta utilizando un sistema UNIX, se pueden usarcomandos como ed, ex, edit. emacs
ovi. Si seesta usando Windowsde Microsoft. sedisponedel Notepad. Con DOS 5.0,se puede
usaf Edit. Y si se esta usando una versi6n de DOS anterior a la 5.0, se puede usar Edlin.
La mayorfa de los procesadores de palabras usan c6digos especiales para formalear sus
documentos. Estos c6digos no pueden sec lefdos correctamente por Olros pcogramas. El
American Standard Code for Information Interchange (ASCm ha especificado un formato
de texto estAndarque casi cualquier programa. incluyendo el C. puede usar. La mayorfa de
los procesadores de palabras, como WordPerfect. Display Write, Word y WordSlar. tienen
Ia capacidad de guardar archivos fuenteen fonnaloASC U (como un archivo de lexto, en vel
de un archivo de documento). Cuando se quiere guaniar un archivo de procesador de palabras como un archivo ASCII, seleccione la opci6n ASCU 0 lexto al momenta de guardarlo.
Si usted no quiere usar ninguno de estos edilores, puede comprar un editor diferente. Hay
paquetes tanto comerciaJes como de dominic publico que han sidodisenados especfficameme
Comienzo
NO DEBE
DEBE
&te libro ttata el C estAndar ANSL SIlo sipifiCa tp-IIQ itnpona que compilador
de C Je use. siempre y C\laDIlo so
at ~ ~I. 81 apCndic.e H. "Puntos
~fficos de los compiladqm", ~ ''';''' ifttonnacioo ge.q6rica 801m
lOt~adores oW popaIUet, 4~~'J'
"fJ!'t
Cada compilaoor requiere que se usen sus propios comandos para crear el c6digo objelo.
Para compilar tfpicamente se usael comaDdoque pone en ejecuci6n el compilador seguido
del nombre de archivo del archi.vo fuente. Los siguieme5 son ejemplos de comandos dados
paracompilar un archivo fuente Uamado RADWS.C usando varios compiladores para DOS:
C de Microsoft
cI radius.c
Turbo C de Borland
IcC
C de Borland
bee radiU5.C
C de 2'.oc1ec
z.tc radius.c
radius.c
Desputs de que se compile. se tiene un arehivo objeto. Si se ve una ]iSla de los archivos del
direcloriodoDde se hizo lacom piiaci6n, se debernencontrarun archivocon ei mismo nombre
que eI archi.vo fuente pero con una extensi6n .0Bl (e n vez de eXIensi6n .C). La eXIensi6n
.0Bl es reconocida como un arehi.vo objelo. y usada par el enlazador. En sistemas UNIX
el compilacior ceca archi.vos objelo con la extensi6n .0, en vez de la extensi6n .08J.
8
i--\
L----I
Usodel
Compilaci6n del
archivo fuente
Enlace del
archivo objeto
Figura 1.1. El c6digo fuente del C que se escribe se convierte en c6digo objeto mediante el
compilador y, despues, en un archivo ejecutable por el enlazador,
9
Comienzo
Use un editor para escribir el codigo fuente. Par tradici6n, los archivos del
c6digo fuente de C tienen la extension .C (por ejemplo, MYPROG.C,
DA TABASE.C, etcetera).
Paso 2:
Paso 3:
Paso 4:
51
51
51
EI primer programa en C
i Probablemente este ansioso de intentar el primer programa C! Para ayudarle a farniliarizarse
con el compilador, a continuaci6n se presenta una muestra nipida para que la haga. Tal vez
11
Comienzo
5:
printf("Hello , World!') ;
6:
12
6. Revise los mensajes del compilador. Si no se reciben errores, todo debe estar
correcto.
Pero, "que pasa si se comete algun error al teelear el programa? El compilador se
da cuenta de ello y despliega un mensaje de error en la pantalla. Por ejemplo, si en
vez de teelear la palabra print f se teele6 prnt f, se desplegani un mensaje
similar al siguiente:
Error: simbolos no definidos: -prntf en hello.c (hello.OBJ)
o
o
o
Errores de compilaci6n
Un error de compilaci6n sucede cuando el compilador encuentra algo en el c6digo fuente
que no puede compilar. Una palabra mal esc rita, un error de tecleo 0 cualquier otra cosa
puede hacer que el compilador se atragante. Afortunadamente los compiladores modernos
no solamente se atragantan, jsino que dicen que es 10 que los esta atragantando y d6nde se
encuentra! Esto facilita encontrar y corregir los errores en el c6digo fuente.
Esto puede ilustrarse introduciendo un error en forma deliberada en HELLO.C. Si se hizo
este ejemplo (tal como debiera), ahora tiene una copia de HELLO.C en el disco. Usando el
editor, mueva el cursor al final de la linea que contiene la Hamada a printf () y borre el
punto y coma de terrninaci6n. HELLO.C ahora debe verse como en ellistado 1.2.
13
Comienzo
5:
printf('Hello, World!')
6:
Ahora guarde el archivo. Se encuentra listo para compilar el archivo. Hagalo tecleando el
comando para el compilador. Debido al error que se ha cometido, la compilaci6n no puede
completarse. En vez de ello, el compilador despliega un mensaje en la pantalla similar al
siguiente:
hello. c (6)
Resumen
Despues de leer este capitulo, debe usted tener confianza de que la selecci6n del C como su
lenguaje de programaci6n es una buena selecci6n. El C proporciona una combinaci6n de
poder, popularidad y portabilidad sin paralelo. Estos factores, junto con la intima relaci6n
del C con el nuevo lenguaje orientado a objetos C++, hacen al C inmejorable.
Este capitulo ha explicado los varios pasos involucrados en la escritura de un programa en
C, el proceso conocido como desarrollo de programa. Se debe tener una clara comprensi6n
del ciclo editar-compilar-enlazar-probar, asi como de las herrarnientas que se han de usar
para cada paso.
Los errores son una parte jneyjtable del desarrollo de programas. El compilador de C detecta
errores en el c6digo fuente y despliega mensajes de error dando la naturaleza y la ubicaci6n
del error. Con esta informaci6n se puede editar e1 c6digo fuente para corregir el error. Sin
15
Comienzo
embargo, recuerde que el compilador no siempre puede reportar con precisi6n la naturaleza
y ubicaci6n del error. Algunas veces necesitani usar su conocimiento del C para localizar
exactamente 10 que esta causando un deterrninado mensaje de error.
Preguntas y respuestas
1. Si quiero darle a alguien un programa que escribf, l,que archivos debo darle?
Una de las cosas buenas acerca del C es que es un lenguaje compilado. Esto
significa que despues de que el c6digo fuente es compilado, se tiene un programa
ejecutable. Este programa ejecutable es un programa aislado. Si quiere dar
HELLO a todos sus arnigos que tengan computadora, 10 puede hacer. Todo 10 que
necesita darles es el programa ejecutable HELLO.EXE. Ellos no necesitan el
archivo fuente HELLO.C ni el archivo objeto HELLO.OBJ. ilncluso ni necesitan
tener su propio compilador C!
2. Despues de haber creado un archivo ejecutable, l,necesito guardar el archivo
fuente (.C) 0 el archivo objeto (.OBJ)?
Si se deshace del archivo fuente, no tiene manera de hacer cambios al programa
en el futuro; por 10 tanto, idebe guardar este archivo! Los archivos objeto son una
cosa aparte. Hay razones para guardar los archivos objeto. Sin embargo, por el
momento esta fuera del alcance de 10 que estamos haciendo. Por ahora, usted
puede deshacerse de los archivos objeto una vez que tenga el archivo ejecutable.
Si necesita el archivo objeto, se puede recompilar el archivo fuente.
3. Si mi compilador viene con un editor, l,tengo que usarlo?
Definitivamente no. Se puede usar cualquier editor, siempre y cuando guarde el
c6digo fuente en formato de texto. Si el compilador viene con un editor, trate de
usarlo. Si usted tiene un editor mejor, uselo. Yo (Brad) uso un editor que compre
por separado, aunque todos rnis compiladores tienen sus propios editores. Los
editores que vienen con los compiladores son cada vez mejores. Algunos de ellos
formatean automaticamente el c6digo C. Otros codifican con color diferentes
partes del archivo fuente para facilitar la busqueda de errores.
4. l,Puedo ignorar los mensajes de advertencia?
Algunos mensajes de advertencia no afectan la manera en que un programa
ejecuta, pero otros sf. Si el compilador Ie da un mensaje de advertencia, es seiial
de que algo no esta completamente bien. La mayorfa de los compiladores Ie
perrniten ajustar el nivel de mensajes de advertencia. Ajustando el nivel de los
mensajes, se pueden obtener solamente los mensajes mas delicados u obtener
todos los mensajes, aun los mas banales. Algunos compiladores hasta Ie dan
16
varios niveles intermedios. En los programas se debe ver cada mensaje y tomar
una determinaci6n. Siempre es mejor tratar de escribir todos los programas sin
que aparezca ningun mensaje de advertencia 0 de error. (Con un men~aje de error
el compilador no creani el archivo ejecutable.)
Taller
El taller Ie proporciona preguntas que Ie ayudanin a afianzar su comprensi6n del material
tratado asi como ejercicios que Ie danin experiencia en el uso de 10 aprendido. Trate de
comprender el cuestionario y de las respuestas antes de continuar al siguiente capitulo. Las
respuestas se proporcionan en el apendice G, "Respuestas".
Cuestionario
1. De tres razones por las cuales el C es la mejor seleccion de lenguaje de
programacion.
2.
~ Que
3.
~Cu:Hes
hace el compilador?
son los pasos en el ciclo de desarrollo en el programa?
se
Ejercicios
1. Use el editor de texto para ver el archivo objeto creado por ellistado 1.1. "Se
parece el archivo objeto al archivo fuente? (No guarde este archivo cuando salga
del editor.)
2. Teclee el siguiente programa y compfielo. "Que hace este programa? (No incluya
los numeros de linea.)
17
Comienzo
1: #include <stdio.h>
2:
3: int radius, area;
4:
5: main ()
6: {
7:
printf( "Enter radius (i.e. 10): ",);
8:
scanf( "%d", &radius );
9:
area = 3.14159 * radius * radius;
10:
printf( "\n\nArea = %d", area );
11 :
return 0;
12 :
4:
5: main(}
6: {
7:
for (x = 0; x < 10; x++, printf( "\n") )
8:
for ( y = 0; Y < 10; y++ )
9:
printf( "X" );
10:
11:
return 0;
12 :
18
3: main ()
4:
5:
printf ( "This is a program with a " );
6:
do_it ( "problem!");
7:
return 0;
8:
9:
2:
3:
#include <stdio.h>
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
char buffer[256];
FILE *fp;
14:
15:
19
-- 1"
17:
II:
l!,
20:
21 :
-.
~.-.
!it
22 :
2]:
I
fprintf! stderr, 'Error opening file, %5! ' , argc[l]);
exit (1);
24 :
25 :
26 :
27:
28 :
page'" 0;
li ne = 1;
29,
do_heading{ argc (l l) ;
3D:
31:
32:
33:
if ( line 1; S5 == 0
do_heading ( argc[l] ) ;
]4 :
35 :
36:
)7 :
38 :
39 :
40 :
41 :
42 :
43 :
44 :
45,
46:
pagett;
47 :
if (page>l)
f printE( stdprn, '\f o
48:
49:
SO:
51 :
52;
!O
);