You are on page 1of 40

Curso de Programacin en Turbo C

CURSO DE PROGRAMACIN EN
TURBO C
INDICE
Breve historia de C
Fases de un programa en Turbo C.........................................................................4
El entorno de Turbo C...........................................................................................4
El editor.................................................................................................................5
El debugger de Turbo C.........................................................................................5
Tipos de datos simples
El tipo char............................................................................................................6
El tipo int, short int y long int................................................................................6
El tipo float y double.............................................................................................6
El tipo void............................................................................................................6
Operadores
Operadores lgicos................................................................................................6
Operadores aritmticos..........................................................................................6
Operadores relacionales.........................................................................................6
Los componentes de un programa en Turbo C
La directiva #include.............................................................................................8
La directiva #define...............................................................................................8
Prototipos de funciones.........................................................................................8
Declaracin de variables........................................................................................8
La funcin main()..................................................................................................8
Funciones de E/S bsicas
La funcin printf().................................................................................................9
La funcin scanf()..................................................................................................9
Delimitacin de bloques de cdigo ({})................................................................10
Estructuras de seleccin
La sentencia if .......................................................................................................10
La sentencia if-else................................................................................................10
La sentencia switch-case.......................................................................................11
Pgina

Curso de Programacin en Turbo C

Ciclos
El ciclo for.............................................................................................................12
El ciclo while.........................................................................................................13
El ciclo do-while....................................................................................................13
Tipos de datos estructurados
Arreglos unidimensionales....................................................................................14
Arreglos multidimensionales.................................................................................16
Estructuras.............................................................................................................17
Funciones de tipo char
Funciones de captura
La funcin getch().................................................................................................19
La funcin getche()................................................................................................20
La funcin gets()....................................................................................................20
La funcin puts()...................................................................................................20
Funciones de copia de cadenas..............................................................................20
La funcin strcpy()................................................................................................20
La funcin strncpy()..............................................................................................21
Funciones de concatenacin de cadenas................................................................21
La funcin strcat().................................................................................................21
La funcin strncat()...............................................................................................22
Funciones de comparacin de cadenas..................................................................21
La funcin strcmp()...............................................................................................21
Funciones de bsqueda en cadenas.......................................................................22
La funcin strchr().................................................................................................22
La funcin strrchr()................................................................................................22
La funcin strcspn()...............................................................................................22
La funcin strstr()..................................................................................................23
Funciones de conversin de cadenas.....................................................................24
La funcin strlwr().................................................................................................24
La funcin strupr().................................................................................................24
La funcin strrev().................................................................................................24
Conversin a nmeros ..........................................................................................24
La funcin atoi()....................................................................................................24
La funcin atof()....................................................................................................24
Funciones y Procedimientos
Funciones tipo void o procedimientos...................................................................25
Funciones simples.................................................................................................26
Funciones con parmetros.....................................................................................27
Paso de parmetros por valor................................................................................27
Pgina

Curso de Programacin en Turbo C

Paso de parmetros por referencia.........................................................................28


Funciones Recursivas............................................................................................29
Validacin de datos e integridad
Validacin con funciones ......................................................................................30
Validacin con ciclos.............................................................................................31
Introduccin a las estructuras de datos
Memoria Dinmica................................................................................................33
Estructuras con apuntadores (nodos).....................................................................34
Aplicacin de las estructuras con apuntadores......................................................34
Archivos................................................................................................................39

Pgina

Curso de Programacin en Turbo C

INTRODUCCIN
Breve historia de Turbo C
El lenguaje C fu diseado en 1972, por el cientfico Dennis Ritchie, en los laboratorios de
Bell Telephone Inc. Con un fin especfico, la creacin del sistema operativo Unix, por lo que este
sistema operativo tiene un entorno programable en C, el lenguaje C tuvo como predecesor al
lenguaje B, desarrollado por Ken Thompson tambin en los laboratorios Bell, hay varias
versiones de C, pero actualmente, todas ellas se apegan a la versin de C establecida por el ANSI,
que se encarg de regular (como lo hace con todo lo dems) las versiones de C. De aqu naci el
Estndar ANSI C (que es el que se utiliza en el entorno de Unix), un poco despus, nace C++,
que no es otra cosa que una mejora de C, as que todo lo que incluye C, funciona en C++, slo
que el C++ incorpora adems, herramientas que permiten la P.O.O., pero para este curso,
utilizaremos una versin de C hecha por Borland, es decir, Turbo C.
Fases de un programa en Turbo C
Las fases de un programa en Turbo C se pueden resumir en:
1.
2.
3.
4.

Edicin
Compilacin
Enlazado
Ejecucin

La Edicin de un programa consiste, simplemente, en editar el cdigo fuente del programa,


Turbo C incluye un editor para este efecto.
La Compilacin del programa consiste en convertir el cdigo fuente en cdigo objeto.
El Enlazado consiste en enlazar el cdigo objeto para obtener el cdigo ejecutable.
Finalmente, la Ejecucin consiste precisamente en ejecutar el programa.
El entorno de Turbo C
El entorno de Turbo C facilita la edicin, compilacin y el enlazado de los programas, ya
que incluye un editor y herramientas para compilar y enlazar los programas, para configurar el
entorno de Turbo C, primero hay que conocerlo, a continuacin se explican las caractersticas
ms importantes del entorno...

Pgina

Curso de Programacin en Turbo C

El editor de Turbo C

El editor de Turbo C es una poderosa herramienta que nos facilita enormemente la edicin
de un programa, es como un editor de texto cualquiera, pero, para los que estn acostumbrados a
los editores que funcionan bajo Windows, tal vez se encuentren con una forma diferente de editar
texto, por ejemplo, para seleccionar un bloque de texto, en el editor de Turbo C, se presiona la
combinacin de teclas CTRL+K+B al inicio del bloque que se desea seleccionar, y la
combinacin CTRL+K+K al final del mismo. Despus, con ese bloque seleccionado, se pueden
hacer diversas cosas, como:

CTRL+K+Y: Elimina el bloque.


CTRL+K+V: Mueve el bloque.
CTRL+K+C: Copia el bloque.

De cualquier forma, es conveniente que se familiaricen con el editor de Turbo C a medida


que aprenden a programar, es decir, no es necesario aprender a usar el editor al 100%.
El debugger de Turbo C

Pgina

Curso de Programacin en Turbo C

En ocasiones, un programa que est lxica y sintcticamente bien escrito, puede no dar los
resultados correctos, estos resultados pueden deberse a errores comunes de programacin, tales
como errores lgicos, comnmente llamados bugs, aunque existen otros tipos de errores, tales
como errores en tiempo de ejecucin (tema del que nos ocuparemos ms adelante), el debugger
de Turbo C nos ayudar a detectar y corregir dichos errores lgicos. Por ejemplo, si deseamos
monitorear en todo momento el valor de una variable (watch) presionaremos la combinacin
CTRL+F7, y posteriormente, podremos ejecutar el programa lnea por lnea (F7) o funcin por
funcin (F8).
Tipos de datos simples
Los tipos de datos simples en C son:

void: Tipo de dato que no tiene valor.


int: Para todo el rango de valores enteros*.
float: Para todo el rango de valores reales*.
char: Datos de tipo caracter.

Operadores
Los operadores son aquellos smbolos que nos ayudarn a relacionar y manipular los
operandos, existen los operadores lgicos, relacionales y aritmticos o matemticos.
Lgicos
AND
OR
NOT

&&
||
!

Aritmticos
Asignacin
Suma
Resta
Multiplicacin
Divisin
Divisin modular
Incremento
Decremento
Relacionales
*

Rango de valores permitidos en computacin.

Pgina

=
+
*
/
%
++
--

Curso de Programacin en Turbo C

Igual que
Menor que
Mayor que
Menor o igual que
Mayor o igual que
Diferente que

==
<
>
<=
>=
!=

Componentes de un programa en C
La estructura bsica de un programa en C es la siguiente:
#include<stdlib.h>
#include<stdio.h>

Archivos de cabecera

#define pi 3.1416
int suma(int x, int y);
char nombre[30];
/* Inicia programa principal */
main()
{
int a,b;
printf(Introduzca su nombre...);
scanf(%s,&nombre);
printf(\nTeclee un entero...);
scanf(%d,&a);
printf(\nTeclee otro entero...);
scanf(%d,&b);
printf(El resultado es%d,suma(a,b));
getch();
}
int suma(int x, int y)
{
return x+y;
}

Pgina

Definiciones

Prototipo de funciones

Declaracin de variables globales

Comentarios

Cuerpo del programa

Implementacin de funciones

Curso de Programacin en Turbo C

La directiva #include
Por medio de esta directiva se indica al compilador cules son los archivos de cabecera que
deber incluir en la compilacin del programa, con la finalidad de indicarle donde estn los
prototipos e implementacin de las funciones que se utilizarn en dicho programa.
La directiva #define
A travs de ella se definen las constantes y macro definiciones que se utilizarn en el
programa.
Prototipos de funciones
Los prototipos de funciones no son otra cosa que una especie de declaracin de funciones,
donde se debe especificar el tipo de dato que devolvern dichas funciones, el nombre de la
funcin y sus parmetros, en caso de que los tenga, aunque en Turbo C no es obligatorio el uso de
prototipos de funciones, para efectos de claridad y como una prctica sana de programacin, se
recomienda usarlos.
Declaracin de variables
Es necesario declarar las variables que se utilizarn en el programa, de modo que el
compilador reserve un espacio en memoria para esas variables, la sintaxis es:
[tipo] [nombre_de_la_variable] [[dimension]] ; (la dimensin slo se usa para arreglos).
Ejemplo:
int x;
int arreglo [100];
Y ya que hablamos de variables, cabe mencionar que las variables pueden ser declaradas
globales o locales, solamente como referencia, las variables globales son aquellas variables que
conservan su valor durante la ejecucin de todo el programa y se declaran antes del main(),
mientras que las variables locales solamente tienen valor durante la ejecucin de la funcin o
procedimiento en que fueron declaradas y se declaran despus de la llave que indica el principio
de una funcin o procedimiento. De cualquier manera, las diferencias entre las variables locales y
globales sern objeto de estudio ms adelante.
La funcin main()
La funcin main() en un programa en C significa el cuerpo del programa o el programa
principal, ya que es la primer funcin que el enlazador busca para ejecutar; si la funcin main()
no tiene parmetros, significa que solamente la utilizaremos para decirle al programa cundo y
cmo debe hacer las cosas, pero, si tiene parmetros, es decir, si desde la lnea de comando se

Pgina

Curso de Programacin en Turbo C

llama con valores de entrada, la cosa cambia, y nos ocuparemos de la funcin main() con
parmetros ms adelante.

Funciones de E/S bsicas


Las funciones de E/S son las que se utilizan para capturar datos desde el teclado e
imprimirlos por medio de la salida estndar (monitor). Estas instrucciones soportan ciertos
formatos:
La funcin scanf
La funcin scanf captura cualquier tipo de dato introducido por el teclado, y para esto, es
necesario incluir en su llamada a funcin el formato o tipo de dato que se pretende leer por
teclado, ejemplo:
scanf(%d,&x);
En este caso, se especifica una entrada de tipo decimal o entero (%d), mientras que el
operador de indireccin (&) indica que se debe guardar el valor en la localidad de memoria x, en
otras palabras, indica que se recibir un valor entero y se debe almacenar en la variable x. Ahora
bien, los tipos de formato ms usados para la instruccin scanf son:
%d, %i
%f
%c
%s
%u

Entero decimal con signo


Nmero real o flotante
Dato tipo caracter
Dato tipo cadena
Sin signo

La funcin printf
La funcin printf es la contraparte de la funcin scanf, ya que mientras scanf lee datos
desde el teclado, la funcin printf los escribe, es decir, provee la salida en pantalla, esta funcin
tambin utiliza los formatos de scanf, con la particularidad de que printf puede modificar la salida
de los datos, por ejemplo, si se declara una variable entera, y se le asigna el valor 65, y al
momento de imprimir el valor de la variable se especifica una salida de tipo caracter, la salida
ser el caracter A (el 65 equivale a la letra A en el cdigo ASCII).
scanf(%d,&x); /* Se lee la variable como entera */
printf(%c,x);

/* Se escribe como caracter */

Delimitacin de bloques de cdigo (uso correcto de las llaves)


Pgina

Curso de Programacin en Turbo C

En la programacin estructurada, a menudo se tienen que delimitar bloques de cdigo para


indicar al programa el conjunto de instrucciones que se deben ejecutar en determinado momento,
para esto, se utilizan las llaves, la manera correcta de usar las llaves es la siguiente, si un bloque
de cdigo consiste en slo una lnea, las llaves no son necesarias, pero si dicho bloque de cdigo
consta de ms de una lnea, el uso de las llaves es imprescindible.

Estructuras de seleccin
Las estructuras de seleccin son usadas para bifurcar el control en un programa, es decir, se
utilizan para evaluar expresiones que pueden tomar valores de verdadero y falso, o 1 y 0,
respectivamente, ya que en C no existe el tipo de dato booleano, por lo que se usan sus
equivalentes.
La sentencia if
La sentencia if es usada para evaluar una expresin lgica que puede tomar valores de 1 y
0, es decir, verdadero o falso, la sentencia if se conoce como estructura de seleccin simple, ya
que si se cumple la condicin especificada entre los parntesis, se ejecuta un bloque de cdigo, y
si no se cumple, no se ejecuta nada, su sintaxis es la siguiente:
if (condicin)
{
Bloque de instrucciones
}
Ejemplo:
if (x==0)
{
printf(El nmero es 0);
printf(\a);
}
En este ejemplo, si la condicin (x==0) se cumple, se imprime el mensaje El nmero es 0
y se emite un pitido por el speaker de la computadora, y si no se cumple, pues no pasa nada.
La sentencia if - else
Esta sentencia es ms o menos como la anterior, con la diferencia que en este ejemplo, si la
condicin se evala como verdadera, se ejecuta una secuencia de instrucciones, mientras que si la
condicin se evala como falsa se ejecuta otra secuencia de instrucciones; su sintaxis es la
siguiente:
if (condicin)
Pgina

10

Curso de Programacin en Turbo C

{
Bloque de instrucciones 1
}
else
{
Bloque de instrucciones 2
}
Ejemplo:
if (x==0)
{
printf(El nmero es 0);
printf(\a);
}
else
printf(Es un nmero diferente de 0);
Es posible anidar sentencias if para hacer una seleccin todava ms compleja, es de ir,
dentri de un if puede ir otro, y dentro de ste, otro ms, etc...
Ejemplo:
if (x==0)
{
printf(El nmero es 0);
printf(\a);
}
else
if(x<0)
printf(Es un nmero negativo);
else
printf(Es un nmero positivo);
En este ejemplo, si el nmero es 0, se visualizar un mensaje indicndolo, pero si no es
cero, se establece una segunda condicin para saber si se trata de un nmero negativo o positivo.
La sentencia switch case
Esta sentencia es la utilizada para evaluar las llamadas opciones de abanico, de donde se
saca una de varias opciones, es decir, switch permite mltiples ramificaciones con una sola
expresin a evaluar. Es ms eficiente que utilizar muchos if anidados. Un enunciado switch
evala una expresin. Su sintaxis es la siguiente:
switch ( selector )
Pgina

11

Curso de Programacin en Turbo C

{
case valor posible 1: acciones 1;break; *
*
*
*
case valor posible n: acciones n; break;
default: /* Opcional */
acciones a realizar si ninguna opcin es la correcta
}
La sentencia break provoca que el control del programa dentro del switch termine, es decir,
si se encuentra un valor para la expresin, se ejecutan las acciones correspondientes, y si se
encuentra un break, el bloque switch-case termina, y las instrucciones para los otros valores
correspondientes al selector se ignoran.
Ciclos
Dentro de la programacin estructurada, se hace necesaria la ejecucin repetitiva de tareas,
lo cual no es problema, gracias a los ciclos...
El ciclo for
El ciclo for ejecuta un bloque de instrucciones n veces, es recomendable la utilizacin de
este ciclo cuando se conoce el nmero de iteraciones o repeticiones de una tarea, es decir, cuando
se sabe el nmero de veces que se va a repetir algo. Su sintaxis es la siguiente:
for(valor inicial; condicin de paro; incremento o actualizacin)
{
bloque de instrucciones
}
Donde el valor inicial se asigna a una variable de tipo entero llamada variable centinela,
cuya funcin es la de contar y controlar el nmero de iteraciones del ciclo.
Ejemplo:
for (i=0; i<10; i++)
{
printf(*);
}
Donde se establece como variable centinela la variable i y se inicializa con 0, la condicin
de paro del ciclo es que i no sea menor que 10, y el incremento o actualizacin de i es un
incremento de 1 en 1, el ciclo for anterior se lee as: se inicia i con 0, mientras que i sea menor
que 10, i se incrementa en 1.
*

La sentencia break no siempre es necesaria.

Pgina

12

Curso de Programacin en Turbo C

El ciclo while
Este ciclo ejecuta un bloque de instrucciones mientras una condicin determinada sea
correcta. Su sintaxis es la siguiente:
while(condicin)
{
bloque de instrucciones
}
Cuando la ejecucin de un programa llega al ciclo while, sucede lo siguiente:
1. Es evaluada la expresin de la condicin.
2. Si la condicin se evala como falsa (es decir, a cero), el ciclo while termina, y la
ejecucin pasa al primer enunciado que se encuentre a continuacin de los
enunciados del while.
3. Si la condicin se evala como verdadera (esto es, 1), se ejecutan los enunciados
(bloque de instrucciones ) del while.
4. La ejecucin regresa al paso 1.
Es decir, se evala la expresin de la condicin, y de resultar cierta, se ejecuta el bloque de
instrucciones del while, mientras que, si dicha condicin se evala como falsa, la ejecucin del
ciclo termina.
El ciclo do-while
El ciclo do-while es muy similar al while, es decir, tambin ejecuta un bloque de
instrucciones mientras una condicin determinada sea verdadera, pero tiene una diferencia
principal con respecto al while: en el ciclo while la expresin se evala antes de ejecutar el ciclo,
mientras que en el do-while, primero se ejecuta el bloque de instrucciones y luego se evala la
condicin. Su sintaxis es la siguiente:
do
{
bloque de instrucciones
}while(condicin);
Tipos de datos estructurados
Los tipos de datos estructurados son aquellos que constan de ms de un valor, como las
estructuras (tambin llamadas tipos de datos abstractos), los arreglos y las matrices.
Arreglos
Pgina

13

Curso de Programacin en Turbo C

Un arreglo es una coleccin de posiciones de almacenamiento de datos, del mismo tipo y


con el mismo nombre, pero con una direccin nica, o ndice. Cada posicin del arreglo
comnmente es llamada elemento del arreglo. Los arreglos se clasifican en unidimensionales y
multidimensionales, aunque hablando de multidimensionales, se usan casi exclusivamente los
bidimensionales, ya que el uso de ms ndices o dimensiones en un arreglo hacen su uso ms
complejo, de cualquier forma, aqu hay una representacin de los ms comunes:
Arreglo unidimensional o vector simple

Arreglo bidimensional o matriz

Arreglo tridimensional

Arreglos unidimensionales
Un arreglo unidimensional es un arreglo que tiene solamente un ndice, o una dimensin,
comnmente se les llama vectores, y su representacin puede ser indistintamente vertical u
horizontal:

Arreglo

Pgina

Arreglo

14

Elementos

Curso de Programacin en Turbo C

Direcciones

0
1
2
3
4
5
6
7
8
9

5
3
7
9
1
0
2
6
9
0

Elementos

5
0

3
1

7
2

9
3

1
4

0
5

2
6

6
7

9
8

0
9

Direcciones

Los arreglos unidimensionales en C se declaran as:


[tipo] [nombre del arreglo] [[dimensin]];
Ejemplo:
int Arreglo[10];
En este ejemplo, se declara el arreglo Arreglo, de tipo entero, con 10 elementos, algo muy
importante que se debe recordar a la hora de trabajar con arreglos, es que sus direcciones o
posiciones de memoria comienzan en 0, es decir, si el arreglo tiene 10 elementos, sus direcciones
sern 0,1,2...9. Ahora bien, si se desea hacer referencia a algn elemento del arreglo, se especifica
el nombre del arreglo y entre corchetes su direccin, y como la direccin de los arreglos es un
entero, tambin podemos poner como ndice una variable, lo cual es muy til cuando se desea,
por ejemplo, llenar el arreglo con valores ledos por teclado.
Ejemplo:
#include <stdio.h>
#include <stdlib.h>
int i, A[100];
main()
{
clrscr(); /* Borra la pantalla */
printf(Introduzca los valores para el arreglo...);
for (i=0; i<100; i++)
scanf(%d, &A[I]);
printf(\nLos valores introducidos son);
for (i=0; i<100; i++)
printf(\n %d, A[I]);
getch();
}
Y su salida sera ms o menos as:
Pgina

15

Curso de Programacin en Turbo C

Arreglos multidimensionales
Un arreglo multidimensional tiene ms de un ndice. Un arreglo bidimensional (matriz)
tiene dos ndices, un arreglo tridimensional tiene tres ndices, etc., No hay lmite para la cantidad
de dimensiones que puede tener el arreglo, (sin embargo, s hay un lmite para el tamao total del
arreglo, y lo conoceremos ms adelante).
Matrices
Las matrices son arreglos bidimensionales, y generalmente se conoce a estos ndices como
filas y columnas, o utilizando los ndices ms comunes para matrices en las matemticas, i,j. Su
representacin sera ms o menos as:
0,0

0,1

6
1,0

0,2

5
0,1

1
2,0

0,2

6
0,1

20
3,0

10

0,2

9
0,2

0
ndices

0,0

Valor

16

12
0,1

Pgina

Curso de Programacin en Turbo C

Los ndices i,j representan el nmero de fila y columna, respectivamente, ahora, veamos un
ejemplo:
#include <stdio.h>
#include <stdlib.h>
int i,j, M[3][3];
main()
{
clrscr(); /* Borra la pantalla */
printf("Introduzca los valores para la matriz...\n");
/* Se abren dos ciclos, uno para las filas y uno para las columnas */
for (i=0; i<3; i++)
for (j=0; j<3; j++)
scanf("%d", &M[i][j]);
printf("\nLos valores introducidos son...\n");
for (i=0; i<3; i++)
{
for (j=0; j<3; j++)
printf("%d", M[i][j]);
printf("\n");
}
getch();
}
En este caso, se declara una matriz de 3 * 3, es decir, una matriz de 3 filas y 3 columnas,
para este ejemplo, la matriz se ha llenado usando el mtodo llamado llenado por fila mayor,
que consiste en llenar la matriz empezando por llenar filas, mientras que el mtodo llenado por
columna mayor consiste en llenar la matriz empezando por las columnas.
Estructuras
Las estructuras son un tipo de dato abstracto, ya que no se conoce el tipo o los tipos que la
constituyen, una estructura la podemos definir como una coleccin de datos de tipos diferentes
identificados bajo un mismo nombre. A menudo, a las estructuras se les llama tambin registros,
trmino un poco encasillante, ya que si bien es cierto que las estructuras son la mejor solucin a
la hora de trabajar con archivos, sta no es su nica funcin. La sintaxis de la declaracin de las
estructuras es as:
struct nombre_de_la_estructura
{
variables de estructura
};
Ejemplo:
Pgina

17

Curso de Programacin en Turbo C

#include <stdlib.h>
#include <stdio.h>
struct Datos
{
char nombre[30];
char direccion[40];
char telefono[15];
char sexo;
int edad;
};
main()
{
struct Datos x;
clrscr();
printf("Teclee los datos de la persona...");
printf("\nNombre...:");scanf("%s",&x.nombre);
printf("Direccin..:");scanf("%s",&x.direccion);
printf("Telfono...:");scanf("%s",&x.telefono);
flushall();
printf("Sexo.......:");scanf("%c",&x.sexo);
printf("Edad.......:");scanf("%d",&x.edad);
printf("\nLos datos de la persona son...:");
printf("\nNombre...:%s",x.nombre);
printf("\nDireccin..:%s",x.direccion);
printf("\nTelfono...:%s",x.telefono);
printf("\nSexo.......:%c",x.sexo);
printf("Edad.......:%d",x.edad);
getch();
}
En este ejemplo, se declara la estructura Datos con cinco componentes: nombre, direccin,
telfono, sexo y edad, con sus tipos correspondientes, posteriormente, en el main(), se declara una
variable de tipo struct Datos llamada x, y es precisamente esta x quien encapsula los datos de la
estructura, es decir, la variable x es el nombre con el que se conoce a la coleccin de datos antes
declarada. Para hacer referencia (leer o escribir)a los datos de una variable de tipo estructura, se
hace de la misma manera que con los dems datos (simples), es decir, con sus formatos
correspondientes (%s para cadenas, %d para enteros, etc.), pero se les antepone la variable de tipo
estructura, un punto, y el dato o variable al que se desea hacer la referencia:
scanf("%s",&x.nombre);
printf("\nNombre...:%s",x.nombre);

Un ejemplo de la salida del programa es la siguiente:


Pgina

18

Curso de Programacin en Turbo C

Funciones de tipo char


Funciones de captura
La funcin getch()
Obtiene el siguiente caracter del flujo stdin (entrada estndar). Proporciona entrada de
caracteres sin almacenamiento temporal y sin rplica. El prototipo para getch () est en el archivo
de encabezado conio.h, de la manera siguiente:

int getch (void);


Como es sin almacenamiento temporal, getch () regresa cada carcter tan pronto se oprime
una tecla, sin esperar a que el usuario oprima Enter. Debido a que getch () no replica su entrada,
los caracteres no son desplegados en la pantalla. El uso de getch () se ilustra con el siguiente
programa:
#include <stdio.h>
#include <conio.h>
main ()
{
int ch;
printf (Escribe un caracter: );
ch= getch ();
printf(El carcter que introdujiste es...%c,ch);
}

La funcin getche()

Pgina

19

Curso de Programacin en Turbo C

Esta es una seccin corta, debido a que getche () es exactamente igual a getch (), a
excepcin de que replica cada carcter a stdout (salida estndar). Modifique el programa de la
funcin getch () cambiando solamente el getch () por el getche ().
La funcin gets()
Esta es una funcin llana, que lee una lnea de stdin y la guarda en una cadena. El prototipo
de funcin es:
Char *gets (char *str);
Probablemente podemos interpretar este prototipo por nosotros mismos. gets () toma un
apuntador a tipo char como argumento y regresa un apuntador a tipo char. La funcin gets () lee
caracteres de stdin hasta que encuentra una nueva lnea \n o un fin de archivo.
El valor de retorno es un apuntador a la cadena (el mismo que str). Si gets () encuentra un
error, o lee un fin de archivo antes de recibir cualquier entrada, regresa un apuntador nulo.
Antes de llamar a gets () se debe asignar suficiente espacio de memoria para guardar la
cadena. La funcin no tiene forma de saber se el espacio para str ha sido asignado o no. En
cualquier caso la cadena la cadena es recibida y guardada comenzando en ptr. Si el espacio no ha
sido asignado, la cadena puede sobreescribir otros datos y causar errores de programa.
La funcin puts()
La funcin puts() pone una cadena en la pantalla, y a esto se debe su nombre. El nico
argumento que toma puts() es una apuntador a la cadena que ha de ser desplegada. Debido a que
una cadena literal evala como un apuntador a una cadena, puts() puede se usado para desplegar
cadenas literales y variables de cadena. La funcin puts() inserta automticamente un carcter de
nueva lnea al final de cada cadena que despliega, por lo que cada cadena subsecuente desplegada
con puts() se encuentra en su propia lnea.
Funciones de copia de cadenas
La funcin strcpy()
La funcin strcpy() copia una cadena completa a otra posicin de memoria, su sintaxis es:
strcpy(cad1,cad2);
Donde cad1 es una cadena que recibe el valor o contenido de cad2, que puede ser una
variable o constante. Ejemplo:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

Pgina

20

Curso de Programacin en Turbo C

char cad1[10], cad2[10];


main()
{
clrscr();
printf(Teclee una cadena...);
scanf(%s,&cad2);
strcpy(cad1,cad2);
printf(La cadena 1 es %s, y la cadena 2 es %s,cad1,cad2);
getch();
}
La funcin strncpy()
Esta funcin es similar a strcpy, con la diferencia de que strncpy permite especificar el
nmero de caracteres que han de copiarse a la cadena destino. Ejemplo:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char cad1[10], cad2[10];
main()
{
clrscr();
printf(Teclee una cadena...);
scanf(%s,&cad2);
strncpy(cad1,cad2,4);
printf(La cadena 1 es %s, y la cadena 2 es %s,cad1,cad2);
getch();
}
Donde cad1 recibe slo 4 caracteres de cad2.
Funciones de concatenacin
La funcin strcat()
La concatenacin significa unin de cadenas, es decir, la unin de dos cadenas, su sintaxis
es la siguiente:
strcat(cad1,cad2);
Esta funcin une dos cadenas, cad1 y cad2, quedando cad2 sin cambio, mientras que cad1
contiene a cad2 unida al final.
La funcin strncat()
Pgina

21

Curso de Programacin en Turbo C

Como es de esperarse, la funcin strncat es muy similar a strcat, con la diferencia de que
strncat concatena n nmeros de cad2 en cad1.
Funcines de comparacin de cadenas
La funcin utilizada para comparar cadenas es strcmp, esta funcin regresa un valor entero
menor de cero si cad1 es menor que cad2, regresa cero si cad1 es igual a cad2, y regresa un valor
mayor de cero si cad1 es mayor que cad2.
Un ejemplo:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char cad1[10], cad2[10];
main()
{
clrscr();
printf(Teclee una cadena...);
scanf(%s,&cad1);
printf(Teclee otra cadena...);
scanf(%s,&cad2);
if (strcmp(cad1,cad2) <0)
printf(La cadena 1 es menor a la cadena 2);
if (strcmp(cad1,cad2) ==0)
printf(Ambas cadenas son iguales.);
if (strcmp(cad1,cad2) >0)
printf(La cadena 1 es mayor a la cadena 2);
getch();
}
La funcin stricmp()
Esta funcin es similar que strcmp(), es decir, regresa los mismos tipos de valores, con la
diferencia que stricmp() ignora maysculas y minsculas por lo que la comparacin de Hola y
HOLA, regresara un cero.
Comparacin parcial de cadenas
La funcin strncmp() compara n caracteres de cad2 contra cad1, funciona de la misma
forma que strcmp().
Funciones de bsqueda en cadenas
Pgina

22

Curso de Programacin en Turbo C

La funcin strchr()
Esta funcin busca la primera aparicin de un caracter especfico dentro de una cadena, esta
funcin regresa NULL si no encuentra el carcter dentro de la cadena, y si lo encuentra, regresa
un apuntador a l.
Ejemplo:
main()
{
char *loc, cadena[30];
int ch;
printf(Teclee una cadena);
gets(cadena);
printf(Ahora teclee el carcter a buscar);
ch=getche();
/* Ahora se hace la bsqueda */
loc=strchr(cadena,ch);
if (loc==NULL)
printf(El caracter %c no se encuentra en %s, ch, cadena);
else
printf(El carcter %c se encontr en la posicin %d ,ch, loc-cadena);
}
La funcin strrchr()
Esta funcin es idntica a strchr, con la diferencia que strchr busca la ltima aparicin de un
carcter en una cadena.
La funcin strcspn()
Esta funcin busca en una cadena la primera aparicin de cualquier carcter de una segunda
cadena. Si no encuentra ninguna coincidencia, regresa la longitud de la cadena 1, pero si
encuentra coincidencia, regresa el desplazamiento a partir del primer carcter de la cadena 1.
La funcin strstr()
Tal vez sta es la funcin ms til de las de tipo char, ya que busca una cadena dentro de
otra, y regresa:

Pgina

23

NULL si no la encuentra.
cad1 si la longitud de cad2 es cero.
Apuntador al primer carcter de la concordancia si se encuentra.

Curso de Programacin en Turbo C

Funciones de conversin de cadenas


En ocasiones ser necesario convertir las cadenas para poder utilizarlas dentro de los
programas, esto es muy comn durante la validacin de datos.
Las funciones strlwr() y strupr()
Estas funcin convierte a minsculas y maysculas toda una cadena respectivamente.
Ejemplo:
gets(cadena);
puts(cadena);
puts(strlwr(cadena));
puts(strupr(cadena));
Este segmento de cdigo captura una cadena, y la muestra de tres diferentes formas:
normal, es decir, tal y como se escribi, en minsculas y maysculas.
La funcin strrev()
Esta funcin invierte todos los caracteres de una cadena, con excepcin del carcter
terminal, que siempre queda al final.
Conversin de cadenas a nmeros
La funcin atoi()
Esta funcin convierte una cadena a un entero, y regresa se entero, pero si la cadena no es
convertible, regresa cero. Ahora entendamos lo que es una cadena convertible; es una cadena de
caracteres que tiene slo caracteres numricos, el signo -, el signo + y el punto . (aunque si
se introduce como cadena un nmero con punto, la parte fraccionaria se ignora).
La funcin atof()
Esta funcin es idntica a atoi(), con la diferencia que sta funcin regresa un valor
flotante.

Pgina

24

Curso de Programacin en Turbo C

Funciones y Procedimientos
Esta es la parte de la programacin estructurada que le da el nombre de estructurada, ya
que es la programacin que permite dividir el problema en mdulos, para resolver problemas, a
dichos mdulos se les conoce como funciones y procedimientos.
Funciones tipo void o procedimientos
Las funciones tipo void o procedimientos las podemos entender como subprogramas o
subrutinas que realizan una tarea especfica, pero que no devuelven ningn valor. Su sintaxis es
as:
void nombre_del_procedimiento(parmetros)
{
bloque de instrucciones
}
En este caso, los parmetros son opcionales, de no haber parmetros, se recomienda poner
la palabra void entre los parntesis.
Ejemplo:
#include <stdlib.h>
#include <stdio.h>
void imprime_datos(void);
struct Datos
{
char nombre[30];
char direccion[40];
char telefono[15];
char sexo;
int edad;
};
struct Datos x;
main()
{
clrscr();
printf("Teclee los datos de la persona...");
printf("\nNombre...:");scanf("%s",&x.nombre);
printf("Direccin..:");scanf("%s",&x.direccion);
printf("Telfono...:");scanf("%s",&x.telefono);
flushall();
printf("Sexo.......:");scanf("%c",&x.sexo);
Pgina

25

Curso de Programacin en Turbo C

printf("Edad.......:");scanf("%d",&x.edad);
imprime_datos();
getch();
}
void imprime_datos(void)
{
printf("\nLos datos de la persona son...:");
printf("\nNombre...:%s",x.nombre);
printf("\nDireccin..:%s",x.direccion);
printf("\nTelfono...:%s",x.telefono);
printf("\nSexo.......:%c",x.sexo);
printf("\nEdad.......:%d",x.edad);
}
En este ejemplo, se declara el procedimiento imprime_datos(void) de tipo void, y se
especifica que no recibir parmetros, y una vez dentro del main(), se manda llamar como
cualquier otro procedimiento, es decir, se pone su nombre y parntesis:
imprime_datos();
Nota: Observemos que la forma de llamar al procedimiento imprime_datos() es igual a la forma
de llamar al procedimiento clrscr() (limpiar pantalla), por lo que deducimos que clrscr() es una
funcin de tipo void o procedimiento.
Funciones
Es necesario que elaboremos nuestras propias funciones, a medida que lo vamos
necesitando, la utilizacin de funciones reduce considerablemente la cantidad de cdigo que se
escribe en un programa. Hablando de funciones, podemos distinguir dos tipos principales: las
funciones simples y las funciones con parmetros.
Funciones simples
Las funciones simples son aquellas que no reciben parmetros pero que pueden devolver un
valor, para declarar una funcin simple se debe especificar el tipo de dato que va a devolver
(cualquier tipo de dato en C). Ejemplo:
#include <stdio.h>
#include <stdlib.h>
int suma(); /*Prototipo de funcin */
int n,m;
main()
{
clrscr();
printf("La suma es...%d",suma());
Pgina

26

Curso de Programacin en Turbo C

getch();
}
int suma()
{
printf("Introduzca un entero...");
scanf("%d",&n);
printf("Introduzca otro entero...");
scanf("%d",&m);
return (m+n);
}
En este ejemplo, la funcin suma() que es de tipo entero, devuelve la suma de dos nmeros
capturados en esa misma funcin, el valor de la suma se devuelve al main(), ya que fue la funcin
que la llam.
Funciones con parmetros
La utilizacin de funciones con parmetros es tal vez la forma ms lgica de utilizar las
funciones, no son otra cosa que funciones que reciben valores o datos para poder calcular el valor
que devolvern. Ejemplo:
#include <stdio.h>
#include <stdlib.h>
int suma(int a, int b);
int n,m;
main()
{
clrscr();
printf("Introduzca un entero...");
scanf("%d",&n);
printf("Introduzca otro entero...");
scanf("%d",&m);
printf("La suma es...%d",suma(n,m));
getch();
}
int suma(int a, int b)
{
return (a+b);
}
En este ejemplo, los valores para las variables n y m se leen desde el main(), y se pasan a la
funcin suma() como parmetros. Observemos que los nombres para los parmetros que recibe
suma() son a y b, esto se llama paso de parmetros por valor...
Paso de parmetros por valor

Pgina

27

Curso de Programacin en Turbo C

En el ejemplo anterior, las variables que se leen en el main() se llaman n y m, mientras que
los valores que recibe la funcin suma() se llaman a y b, esto es una paso de parmetros por
valor, o paso de parmetros por copia, ya que la funcin suma() copia los valores de n y m en a y
b, respectivamente. Pero existe otro tipo de paso de parmetros y es el llamado paso de
parmetros por referencia...
Paso de parmetros por referencia
En el paso de parmetros por valor, la funcin que recibe los parmetros copia el valor de
esos parmetros en variables propias de la funcin, mientras que en el paso de parmetros por
referencia, la funcin que recibe dichos parmetros, no recibe valores, sino direcciones,
confuso?, un poco. Veamos un ejemplo:
#include <stdio.h>
#include <stdlib.h>
int suma(int *a, int *b);
main()
{
int n,m;
clrscr();
printf("Introduzca un valor para n...");
scanf("%d",&n);
printf("Introduzca un valor para m...");
scanf("%d",&m);
printf("\nLa suma es...%d",suma(&n,&m));
printf("\nLos valores de n y m despus de la funcin son...%d y %d",n,m);
getch();
}
int suma(int *a, int *b)
{
int total; /*Variable local*/
total=*a+*b;
*a=0;
*b=0;
return total;
}
Y su salida es:

Pgina

28

Curso de Programacin en Turbo C

En este ejemplo, la funcin suma() recibe dos direcciones como parmetros, y utiliza los
valores almacenados en esas direcciones para hacer sus clculos, una vez realizado el clculo, la
funcin suma() asigna 0 a las variables n y m, pero cmo es posible, si n y m son variables
locales del main()?, esto es posible porque los cambios que se le hagan a las variables que se
reciben como parmetros en las funciones con paso de parmetros por referencia, se hacen en sa
variable, sin importar si son variables locales o globales. Por lo que podemos concluir que la
ventaja de pasar parmetros por referencia es que podemos afectar el valor de las variables que se
pasan como parmetros, y esto, en el paso de parmetros por valor no es posible.
Funciones Recursivas
El trmino recursividad o recursin se refiere a la situacin en la que una funcin se llama a
s misma. Un ejemplo muy ilustrativo de la recursividad es la del clculo del factorial:
#include <stdio.h>
#include <stdlib.h>
int fact(int n);
main()
{
int numero;
clrscr();
printf("Introduzca un nmero...");
scanf("%d",&numero);
printf("El factorial es...%d",fact(numero));
getch();
}
int fact(int n)
{
if (n==1)
return 1;
else
return (n*fact(n-1));
}

Pgina

29

Curso de Programacin en Turbo C

Y su salida es:

Validacin de datos e integridad


La integridad y validacin de los datos en un programa es un tema casi ausente en la
mayora de los cursos de programacin, y no debera ser as, ya que de una buena validacin
depende el buen funcionamiento de un programa ya en la prctica, ya que la validacin previene
a los programas de los muy comunes errores en tiempo de ejecucin, que son errores producidos
en su mayora por datos errneamente introducidos al programa. Por ejemplo, en una operacin
de divisin, si el usuario teclea un cero como divisor, el programa aborta su funcionamiento, ya
que la divisin entre cero no se puede realizar, nosotros como programadores debemos hacer
programas con la idea de que vamos a programar para gente que no sabe nada de computacin es
decir, debemos hacer nuestros programas lo ms claros y explcitos posible, adems de validados.
Por su parte, la integridad de los datos de un programa se refiere a que los datos introducidos
deben ser vlidos para el programa, o el sistema, es decir, si un programa que da de alta personas
en una nmina pide como dato la edad de la persona, obviamente, este es un tipo de dato entero,
pero hay que recordar que en los datos enteros tambin hay negativos, y no puede haber una
persona con edad negativa. Dicho de otra forma, la integridad de los datos se refiere a que los
datos introducidos estn en el rango de valores permitidos para ese dato. Ahora veamos algunas
tcnicas de validacin...
Validacin con funciones
La validacin con funciones es una forma estructurada de validar los programas,
utilizaremos funciones creadas por nosotros mismos para el problema en cuestin. Por ejemplo,
supongamos que se necesita un programa para calcular el promedio de un alumno con 5 materias,
el programa validado quedara as:
#include <stdio.h>
#include <stdlib.h>
int valido(float c);
main()
{
char nombre[30];
float calif,acum=0,prom;
int i;
clrscr();

Pgina

30

Curso de Programacin en Turbo C

printf("Teclee el nombre del alumno...");


gets(nombre);
for (i=0;i<5;i++)
{
printf("\nIntroduzca la calificacin %d de %s...:",i+1,nombre);
scanf("%f",&calif);
if (valido(calif) == 1)
acum+=calif;
else
{
printf("\nNo es una calificacin vlida.\a");
printf("\nIntntelo de nuevo...");
i--;
}
}
prom=acum/5;
printf("\nEl promedio es...%g",prom);
getch();
}
int valido(float c)
{
if (c>=0&&c<=10)
return 1;
else
return 0;
}

Un ejemplo de la salida sera:

Pgina

31

Curso de Programacin en Turbo C

En este caso, solamente estamos validando que el dato introducido como calificacin est
entre el rango de 0 y 10.
Validacin con ciclos
Este tipo de validacin tambin se utiliza mucho en los programas, tal vez por la
simplicidad que tiene, consiste en establecer un ciclo (generalmente do while) que se repetir
mientras el dato introducido sea errneo, veamos el mismo problema anterior pero resuelto
utilizando ciclo de validacin:
#include <stdio.h>
#include <stdlib.h>

main()
{
char nombre[30];
float calif,acum=0,prom;
int i;
clrscr();
printf("Teclee el nombre del alumno...");
gets(nombre);
for (i=0;i<5;i++)
{
do
{
printf("\nIntroduzca la calificacin %d de %s...:",i+1,nombre);
scanf("%f",&calif);
if (calif < 0 || calif >10)
{
printf("\n No es un nmero vlido...\a");
printf("\n Intntelo de nuevo.");
}
}while(calif < 0 || calif > 10);
acum+=calif;
}
prom=acum/5;
printf("\nEl promedio es...%g",prom);
getch();
}
Y su salida sera la misma:

Pgina

32

Curso de Programacin en Turbo C

Introduccin a las estructuras de datos


Para el manejo de las estructuras de datos, es indispensable el conocimiento y uso de los
apuntadores.
Memoria dinmica
La memoria dinmica es una excelente solucin cuando se trata de ahorrar espacio en
memoria y espacio de almacenamiento, ya que al utilizar recursos del sistema (memoria)
dinmicamente, los espacios se van utilizando conforme se necesitan, sin desperdiciar memoria.
Apuntadores
Entendamos a los apuntadores como una variable que apunta o contiene la direccin de
otra variable, por consiguiente, un apuntador es una variable que tendr un valor numrico
(direccin), y por lo tanto, puede ser tratado como cualquier otro valor numrico en C. Si se sabe
la direccin de una variable, se puede crear una segunda variable que donde se guarde la
direccin de la primera. La sintaxis de la declaracin de un apuntador es la siguiente:
tipo *nombre_del_apuntador;
Donde tipo es el tipo de dato al que apuntar. Veamos un ejemplo:
#include <stdio.h>
#include <stdlib.h>
int *ptr,valor;
main()
{
clrscr();

Pgina

33

Curso de Programacin en Turbo C

valor=5;
ptr=&valor;
printf("\nEl valor es...%d, y su direccin es...%p",*ptr,ptr);
*ptr=valor;
printf("\nEl valor es...%d, y su direccin es...%p",*ptr,ptr);
getch();
}
Veamos la salida:

En este caso, se declara un apuntador a entero llamado ptr, y se le asigna la direccin de la


variable valor.
Estructuras con apuntadores
Las estructuras con apuntadores (tambin llamadas nodos) son el principio de las
estructuras de datos, lo que se hace en estos casos, es declarar dentro de una estructura, un
apuntador a estructura, de modo que se genere una estructura que podramos representar as:
Nombre Edad Direcc Tel

Veamos cmo se declarara esta estructura:


struct nodo
{
char Nombre[30];
int Edad;
char Direcc[60];
char Tel[20];
struct Nodo *sig;
};
Ahora veamos un programa completo utilizando nodos:

Pgina

34

Sig

Curso de Programacin en Turbo C

#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <alloc.h>
struct nodo
{
int info;
struct nodo *sig,*ant;
};
typedef struct nodo NODO;
NODO *crea();
main()
{
NODO *head=NULL,*a;
int num;
char op;
clrscr();
do{
clrscr();
printf("1.-Insertar.");
printf("\n2.-Eliminar.");
printf("\n3.-Consultar.");
printf("\n4.-Salir.\n");
printf("Cual es su eleccion...?");
op=getch();
switch(op)
{
case '1':
if(!head)
{
printf("\nTeclee el numero a insertar...");
head=crea();
head->info=captura();
}
else
{
printf("\nTeclee el numero a insertar...");
num=captura();
if(enc(head,num))
{
printf("\n\aYa se encuentra.");
getch();
Pgina

35

Curso de Programacin en Turbo C

}
if(num<head->info)
{
a=crea();
a->info=num;
a->sig=head;
head->ant=a;
head=a;
break;
}
altas(head,num);
}break;
case '2':if(!head)
{
printf("\a\nLa lista esta vacia.");
getch();
break;
}
printf("\nTeclee el numero a eliminar...");
num=captura();
if(num==head->info)
{
a=head;
head=head->sig;
free(a);
break;
}
bajas(head,num);break;
case '3':consultas(head);break;
case '4':break;
default:printf("\a\nNo existe esa opcion.\nPulse una tecla para continuar.");getch();break;
}
}while(op!='4');
}
int captura()
{
int i,valido;
char cadena[10];
do{
valido=1;
scanf("%s",&cadena);
for (i=0;i<strlen(cadena);i++)
{
if(!isdigit(cadena[i]))
{
Pgina

36

Curso de Programacin en Turbo C

printf("\n\aNo es un numero valido.");


printf("\nTeclee un numero entero...\n");
valido=0;
}
}
}while(!valido);
return (atoi(cadena));
}
altas(NODO *h, int num)
{
NODO *p,*q,*r;
clrscr();
if(num<h->info)
{
q=crea();
q->info=num;
q->sig=h;
h->ant=q;
h=q;
return 0;
}
if(!enc(h,num))
{
q=crea();
q->info=num;
if(h->sig==NULL)
{
h->sig=q;
q->ant=h;
return 0;
}
p=h;
while((p->info<num)&&(p->sig->info<num)&&(p->sig!=NULL))
p=p->sig;
r=p->sig;
p->sig=q;
q->ant=p;
q->sig=r;
r->ant=q;
return 0;
}
}

bajas(NODO *h, int n)


Pgina

37

Curso de Programacin en Turbo C

{
NODO *p,*q,*r;
if(!enc(h,n))
{
printf("\n\aNo se encuentra!");
getch();
}
else
{
q=h;
while(q->info!=n) q=q->sig;
p=q->ant;
r=q->sig;
p->sig=r;
r->ant=p;
free(q);
printf("El numero %d ha sido eliminado.",n);
getch();
}
}
consultas(NODO *h)
{
NODO *aux;
aux=h;
if(!h)
{
printf("La lista esta vacia.\a");
getch();
return 0;
}
printf("\nLista completa...\n");
while (aux)
{
printf("%d ",aux->info);
aux=aux->sig;
}
getch();
}
NODO *crea()
{
NODO *n;
n=malloc(sizeof(NODO));
n->sig=NULL;
n->ant=NULL;
n->info=0;
Pgina

38

Curso de Programacin en Turbo C

return n;
}
inserta(NODO *h, NODO *p)
{
h->sig=p;
}
enc(NODO *h,int n)
{
NODO *aux,*p,*r;
aux=h;
while(aux)
{
if(aux->info==n)
{
return 1;
}
aux=aux->sig;
}
return 0;
}
Este es un programa simple para la utilizacin de una lista* doblemente ligada
Archivos
Los archivos son estructuras de datos permanentes, los hay de dos tipos, bsicamente,
binarios y de texto. Los archivos de texto son una secuencia de lneas, donde cada linea tiene cero
o ms caracteres y termina con uno o ms caracteres que indican el fin de lnea, en cambio, un
archivo binario es todo lo dems, los datos son escritos y ledos, sin embargo, los caracteres nulo
y fin de lnea no tienen significado especial.
Apertura de un archivo
Para poder usar un archivo, es necesario abrirlo, la funcin fopen() sirve para eso, su
sintaxis es:
ptr =fopen(Nombre_de_archivo,modo); Donde ptr es un apuntador a archivo.
Cuando se abre un archivo, queda disponible para leer de l, o escribir en l, segn sea el
caso. Veamos las diferentes formas en que se abre un archivo:
Modo Significado
*

Estructura de datos con memoria dinmica

Pgina

39

Curso de Programacin en Turbo C

r
w
a
r+

w+
a+

Abre el archivo para lectura.


Abre el archivo para escritura. Si el archivo
no existe, es creado. Si existe, es borrado y
creado de nuevo.
Abre el archivo para adicin. Si el archivo no
existe, es creado. Si ya existe, los datos son
agregados al final.
Abre el archivo para lectura y escritura. Si no
existe, es creado. Si existe, se aaden nuevos
datos al inicio del archivo, sobreescribiendo
los existentes.
Abre el archivo para lectura y escritura. Si el
archivo no existe, es creado. Si existe, el
archivo es sobreescrito.
Abre el archivo para lectura y adicin. Si el
archivo no existe, es creado. Si existe, los
nuevos datos son aadidos al final del
archivo.

Posteriormente podremos continuar aprendiendo sobre estructuras de datos como

Listas
Pilas
Colas
rboles
Archivos

En el prximo curso.

Pgina

40

You might also like