Está en la página 1de 4

Resumen de C

1 Estructura de un programa C 4 Ejemplo del bucle for


/* for(i=0 i<3 i++) {
Programa de Ejemplo printf("Universidad Pontificia Comillas\n")
Fecha: printf("c/Alberto Aguilera 23\n")
Autor: printf("E-28015 Madrid\f")
*/ }
#include ....
#define ....
typedef .... 5 Operadores Aritmeticos
Prototipos]
int: +, -, *, /(divisi
on entera) , %(resto)
void main(void) double: +, -, *, /
{ Otros operadores: ++, --, +=, -=, *=, /=
variables /* descripcion */]

}
instrucciones] 6 Operadores logicos y relacionales
mayor que >
menor que <
2 Caracteres especiales mayor o igual a >=
menor o igual a <=
'\n' cambio de l
nea (newline) igual a ==
'\r' retorno de carro (return) distinto de !=
'\0' car
acter 0 (NULL)
'\t' TAB
AND logico: &&
'\f' cambio de p
agina (form feed)
OR logico: ||
'\'' comilla simple negacion: !
'\"' comilla doble
'\\' la barra \
7 Sintaxis del bucle while
while(condicion){
3 Formatos de printf, scanf instruccion 1
instruccion 2
formato tipo de variable ...
%d int instruccion n
%hd short }
%ld long
%u unsigned int
%hu
%lu
unsigned short
unsigned long
8 Sintaxis del bucle do-while
%f float, double do{
%lf double (s
olo scanf) instruccion 1
%c char instruccion 2
%s cadena de caracteres ...

1
instruccion n instruccion 1 1
}while(condicion) ...
instruccion 1 n1
9 Sintaxis del if break
...
case constante n:
if (condicion) {
instruccion 1 instruccion n 1
...
instruccion 2 instruccion n nn
...
break
instruccion n default:
}
instruccion d 1
...
10 Sintaxis del if-else instruccion d nd
break
if (condicion) { }
instruccion 1.1
instruccion 1.2
... 13 Las sentencias break y continue
instruccion 1.n
} else { break hace que el ujo de programa salga del bloque en
instruccion 2.1 el que se encuentre (bucle o switch-case) y continue al
instruccion 2.2 nal de este.
... continue hace que el ujo del programa vuelva al prin-
instruccion 2.m cipio del bucle y comience la siguiente iteracion.
}

11 Sintaxis del bloque if else-if


14 Vectores y matrices
double vector10]
if (condicion) { char cadena256]
instruccion 1.1 char matriz10]20]
instruccion 1.2
... vector2] = 3
instruccion 1.m scanf("%lf", &vector5])
} else if (condicion) {
instruccion 2.1
instruccion 2.2
...
15 Instruccion #define
instruccion 2.n #define TAM_VECTOR 10
...
} else {
instruccion 3.1 16 Cadenas de caracteres
instruccion 3.2
... char cadenaN]
instruccion 3.p
} gets(cadena) /* lee una frase hasta final de linea */
scanf("%s",cadena) /* lee una palabra */
printf("%s",cadena) /* escribe una cadena (frase o palabra)

12 Sintaxis de la construccion Funciones estandar (de string.h):


switch-case strlen: longitud de la cadena
switch(expresion){ strcpy: copia o inicializa
case constante 1: strcmp: compara cadenas

2
17 Estructura de una funcion 24 Funciones y punteros
tipo devuelto NombreFuncion(tipo 1 argumento 1,. . . ,tipo n Para que una funcion modique variables pertenecientes a
argumento n) quien la llama, esta tiene que trabajar con punteros a dichas
{ variables. Para ello el prototipo de la funcion ha de ser por
instruccion 1 ejemplo:
instruccion 2
... void cambio(int *pa, int *pb)
instruccion n la llamada a la funcion, suponiendo que queremos que modi-
return expresion devuelta /* Si tipo_devuelto
no es void*/
que las variables x e y:
} cambio( &x, &y)

18 Prototipo de una funcion Y la funcion ha de usar el operador * para acceder al con-


tenido de las posiciones de memoria a las que apuntan los
tipo devuelto NombreFuncion(tipo 1 argumento 1,. . . ,tipo n punteros que tiene como argumentos:
argumento n) void cambio(int *pa, int *pb)
{
int tmp
19 Paso de vectores a funciones tmp=*pa
Prototipo: *pa=*pb
tipo devuelto NombreFuncion(tipo nombre vector] ) *pb=tmp
Para llamar a la funcion: }
NombreFuncion(nombre vector)
La funcion trabaja con la matriz original.
25 Asignacion dinamica de memoria
20 Paso de matrices a funciones Para solicitar memoria al sistema operativo se suele utilizar
la funcion calloc(). Por ejemplo:
Para una matriz de 3x5 se har a:
pent = (int *) calloc(100, sizeof(int))
void InicializaMatriz(int matriz]5])
La funcion calloc() devuelve NULL si no hay memoria su-
ciente.
21 Declaracion de punteros Para liberar la memoria cuando ya no sea necesario usarla
mas:
tipo *nombre puntero
free(pent)

22 Operador &
Devuelve la direccion del objeto sobre el que se aplica. Por 26 Archivos
ejemplo: Para abrir un archivo en modo lectura y escritura:
pvar = &juan
FILE *pfich
asigna al puntero pvar la direccion de la variable juan. ...
pfich = fopen("pepe", "r")

23 Operador * ...

La funcion fopen() devuelve NULL si no puede abrir el archi-


Si se precede un puntero del operador * se accede a la direc- vo.
cion a la que apunta el puntero. Por ejemplo: En la tabla 1 se muestran los modos de apertura.
*pvar = pepe Para cerrar un archivo:
Escribe el valor de pepe en la direccion a la que apunta pvar. fclose(pfich)

3
Modo Descripcion Escritura y lectura de archivos binarios
r Abre el archivo para leer. El archivo ha de exis-
tir. Se posiciona al principio del archivo. Para leer o escribir una estructura en un archivo binario se
r+ Abre el archivo para leer y escribir. El archi- usan las funciones:
vo ha de existir. Se posiciona al principio del size_t fread (void *estructura, size_t tamaNo,
archivo. size_t numero, FILE *archivo)
w Abre el archivo para escribir. Si el archivo existe size_t fwrite(void *estructura, size_t tamaNo,
borra su contenido y si no existe crea uno nuevo. size_t numero, FILE *archivo)
w+ Abre el archivo para escribir y leer. Si el ar-
chivo existe borra su contenido y si no existe crea En donde estructura es la direcci on de la estructura,
uno nuevo. tamaNo es el tama~no de la estructura, numero es el numero de
a Abre el archivo para a~nadir. Si el archivo no estructuras consecutivas que se leen o se escriben y archivo
existe crea uno nuevo, pero si existe no borra su es el archivo desde el que se lee o en el que se escribe. Ambas
contenido. Se posiciona al nal del archivo de for- funciones devuelven el numero de estructuras escritas o le das
ma que sucesivas escrituras se a~naden al archivo del archivo (numero). Si ocurre un error devolvera un numero
original. menor que el que se pretend a escribir o leer (o incluso 0 si
b Ha de a~nadirse a cualquiera de los modos anterio- no se ha escrito o le do ninguna).
res si el archivo que se va a abrir contiene datos
binarios en lugar de texto ASCII1 .
27 Estructuras
Tabla 1: Modos de apertura de los archivos.
Normalmente las estructuras se denen con typedef. Ejem-
plo:
Para escribir en un archivo de texto se utiliza fprintf().
Por ejemplo: typedef struct {
double real
fprintf(pfich, "El valor de %d en "
double imag
"hexadecimal es %x\n", 15, 15)
} COMPLEJO
Para leer un dato de un archivo de texto se utiliza
fscanf(). Ejemplo: Para declarar una variable de tipo estructura se utiliza el
nombre denido en el typedef
valor_devuelto = fscanf(pfich, "%d", &num)
COMPLEJO v1 /* Primer complejo */
valor devuelto vale 1 si se ha le do el dato correctamente,
0 si ha ocurrido un error de formato y EOF si se ha llegado Para acceder individualmente a los campos de la estructura
al nal del chero. En estos dos ultimos casos no modica la se utiliza el operador punto.
variable num
v1.real=5.6
Entrada-salida sin formato vi.imag=-3.5

Para leer o escribir un caracter o una cadena de caracteres se Los vectores de estructuras se declaran igual que los vec-
pueden usar las funciones: tores de cualquier otro tipo. Ejemplo:
int fgetc(FILE *puntero a archivo) COMPLEJO v100] /* Vector de 100 complejos */
int fputc(int caracter, FILE *puntero a archivo)
char *fgets(char *cadena, int tam cad, v1].real=4.5
FILE *puntero a archivo)
int fputs(const char *cadena, Los punteros de estructuras se declaran igual que los pun-
FILE *puntero a archivo) teros de cualquier otro tipo, pero para acceder a los distintos
campos se utiliza el operador -> en lugar de poner el * delante
del nombre:
fgetc y fputc devuelven el car acter le do o escrito o un COMPLEJO *pcomp /* Puntero a una estructura */
EOF si se ha producido algun error. fgets devuelve la cadena pcomp = &v1
le da o NULL si se ha producido un error. Por ultimo, fputs pcomp->real=7.4
devuelve un numero no negativo si ha escrito la cadena o un
EOF si se ha producido un error.

También podría gustarte