Tarjeta de referencia rápida de C (ANSI)
Programa
Estructura/Funciones
type fnc(tipo1 ,...)
type nombre
variables
main() {
declaraciones
}
type fnc(arg 1,...) {
declaraciones
locales
return valor;
}
/* */
main(int argc, char *argv[])
exit(arg)
declaraciones de funciones
declaraciones externas de
rutina principal
declaraciones de variables locales
definición de función
declaraciones de variables
comentarios
main con argumentos
terminación de ejecución
Preprocesador de C
inclución de archivo librería
inclución de achivo del usuario
reemplazando texto
macro de reemplazo
#include <nombre_archivo>
#include "normbre_archivo"
#define nombre texto
#define nombre(var) texto
indefinir
en reemplazos, citar cadenas
concatenar argumentos y rebuscar
ejecución condicional
si nombre denegado ¿no definido?
¿nombre definido?
caracter de continuación de línea
Ejemplo: #define max(A,B) ((A)>(B) ? (A) : (B))
#undef nombre
#
##
#if, #else, #elif, #endif
#ifdef, #ifndef
defined(nombre)
\
Tipos de datos/Declaraciones
caracter (1 byte)
entero
flotante (presición simple)
flotante (doble presición)
corto (16 bit entero)
largo (32 bit entero)
positivo y negativo
solamente positivo
puntero a entero, flotante, .....
constante de enumeración
char
int
float
double
short
long
signed
unsigned
*int, *float,...
enum
constante (descambiar) valor
declaración externa de variable
variable de registro
local a archivo fuente
sin valor
estructura
crear nombre por tipo de dato
tamaño de objeto (tipo es size_t)
tamaño de tipo de dato (tipo es size_t)
const
extern
register
static
void
struct
typedef nombre_tipo
sizeof objecto
sizeof(type nombre)
Inicialización
inicializa variable
inicialice matriz
inicialice cadena de caracteres
type nombre=valor
type nombre[]={valor 1 ,...}
char nombre[]="cadena"
Constantes
long (sufijo)
float (sufijo)
forma exponencial
octal (prefijo cero)
hexadecimal (prefijo cero-equis)
caracter constante (char, octal, hex)
nueva línea, cr, tab, retroceso
caracteres especiales
cadena constante (fin con '\0')
L ó l
F ó f
e
0
0x ó 0X
'a', '\ooo', '\xhh'
\n, \r, \t, \b
\\, \?, \', \"
"abc...de"
Punteros, matrices y estructuras
declarar puntero a tipo
declarar función retornado por puntero a tipo
declarar puntero a función retornando tipo
tipo de puntero genérico
puntero nulo
objeto apuntado a por puntero
dirección de objeto nombre
matriz
matriz multi dimensión
type *name
type *f()
type (*pf)()
void *
NULL
*pointer
&name
name[dim]
name[dim 1][dim 2]...
Estructuras
de miembros
};
struct etiqueta {
estructrua de plantilla
declaraciones
crear estructura
nombre
miembro de estructura desde plantilla
nombre de la estructura apuntada
Ejemplo: (*p).x y p->x son lo mismo
valor simple, múltimple tipo de estructura union
bit de campo con b bits
miembro : b
Operadores (agrupado por procedencia)
operador de miembro de estructura
puntero de estructura
nombre.miembro
puntero -> miembro
incremento, decremento
suma, resta, negación lógica, negación bitwise
indirección vía puntero, dirección de objeto
reparto de expresión a tipo
tamaño de objeto
producto, división, módulo (resto)
adhición, sustracción
movimiento izquierdo, derecho [bit ops]
comparaciones
comparaciones
Y bitwise
O exclusivo
O bitwise (incl)
Y lógico
O lógico
expresión condicional
operadores de asignación
separador de expresiones de evaluación
++, --
+, -, !, ~
*puntero , &nombre
(tipo) expresíon
sizeof
*, /, %
+, -
<<, >>
>, >=, <, <=
==, !=
&
^
|
&&
||
+=, -=, *=, ...
,
expr 1 ? expr 2 : expr 3
Operadores unarios, expresiones condicionales y asignación de operadores
de grupo de derecha a izquierda; para todos los demás grupos de izquierda
a derecha.
Control de flujos
terminación de declaración
delimitadores de bloque
salir del switch, while, do, for
próxima iteración de while, do, for
ir a
marca
valor retornado desde función
;
{}
break
continue
goto marca
marca:
return expr
declaración
struct etiqueta
nombre.miembro
puntero -> miembro
1
Construcción de flujos
if declaración
declaración
while declaración
for declaración
do declaración
switch declaración
for (expr 1 ; expr 2 ; expr 3 )
if (expr ) declaración
else if (expr )
else declaración
while (expr)
declaración
declaración
do declaración
while (expr );
switch (expr ){
case const 1 : declaración1 break;
case const 2 : declaración2 break;
default: declaración
}
Librería estándar ANSI
<assert.h> <ctype.h> <errno.h> <float.h> <limits.h>
<locale.h> <math.h> <setjmp.h> <signal.h> <stdarg.h>
<stddef.h> <stdio.h> <stdlib.h> <string.h> <time.h>
Prueba de clase de caracter <ctype.h>
¿alfanumérico?
¿alfabético?
¿caracter de control?
¿dígito decimal?
¿imprimiendo caracter (no incluye espacio)?
¿letra minúscula?
¿imprecsión de caracter (incluye espacio)?
¿imprimiendo caracter excepto espacio, letra, dígito? ispunct(c)
espacio, formfeed, nueva línea, cr, tab, vtab?
¿letra mayúscula?
¿dígito hexadecimal?
¿convertir a minúscula?
¿convertir a mayúscula?
isalnum(c)
isalpha(c)
iscntrl(c)
isdigit(c)
isgraph(c)
islower(c)
isprint(c)
isspace(c)
isupper(c)
isxdigit(c)
tolower(c)
toupper(c)
copiar n caracteres desde ct a s
copiar n caracteres desde ct a s (may overlap)
compara n caracteres de cs con ct
puntero a primer c dentro primer n caracteres de cs memchr(cs,c,n)
poner c dentro primer n caracteres de cs
memset(s,c,n)
memcpy(s,ct,n)
memmove(s,ct,n)
memcmp(cs,ct,n)
Entrada/Salida <stdio.h>
Estándar Ent/Sal
flujo de entrada estándar
flujo de salida estándar
flujo de error estándar
fin de archivo
tomar caracter
imprimir caracter
imprimir datos formateados
imprimir a cadena s
leer datos formateados
leer desde la cadena s
leer línea a cadena s (< max caracteres)
imprimir cadena s
stdin
stdout
stderr
EOF
getchar ()
putchar (chr )
printf ("formato ",arg 1,...)
sprintf (s,"formato ",arg 1,...)
scanf ("formato ",&nombre 1,..)
sscanf (s,"format ",&nombre 1,...)
gets (s,max)
puts (s)
Archivo Entrada/Salida
puntero de declaración de archivo
puntero a nombre de archivo
FILE *fp
fopen ("nombre ","modo ")
modos: r (lectura), w (escritura), a (agregar)
tomar caracter
escribir caracter
escribir a archivo
leer de archivo
cerrar archivo
no-cero si error
no-cero si EOF
leer línea a cadena s (< max caracteres)
escribir cadena s
getc (fp)
putc (chr ,fp)
fclose (fp)
ferror (fp)
feof (fp)
fgets (s,max,fp )
fputs (s,fp)
fprintf (fp,"formato ", arg 1, ... )
fscanf (fp,"formato ",arg 1,... )
Códigos para formatear la entrada/salida: "%-+ 0w:pmc"
Operaciones con cadenas <string.h>
s,t son cadenas, cs,ct son constantes de cadena
lingitud de s
copiar ct a s
arriba a n caracteres
concatenar ct antes de s
arriba a n caracteres
comparar cs a ct
solamente primer n caracteres
puntero a primer c en cs
puntero a último c en cs
strlen(s)
strcpy(s,ct)
strncpy(s,ct,n)
strcat(s,ct)
strncat(s,ct,n)
strcmp(cs,ct)
strncmp(cs,ct,n)
strchr(cs,c)
strrchr(cs,c)
-
+
espacio
0
w
p
m
c
d,i
c
f
o
justificación izquierda
impresión con signo
impresión de espacio si no hay signo
bloc con precisión de ceros
ancho mínimo de campo
precisión
caracter de converción:
h corto, l largo, L largo doble
caracter de converción:
entero
caracter simple
doble
octal
u
s
e,E
x,X
sin signo
cadena de caracter
exponencial
hexadecimal
p
g,G
puntero
algunos son f ó e,E dependiendo del exponente
n
número de caracteres escritos
Listas de argumentos variables <stdarg.h>
declaración de puntero a argumento
inicialización de puntero argumento
último_arg es el último parámetro llamado de la función
acceso al próximo argumento, actualizar puntero
llamado anterior de salir de la función
va_list nombre;
va_start (nombre ,último_arg )
va_arg (nombre, tipo)
va_end (nombre )
Funciones útiles estándar <stdlib.h>
valor absoluto de entero n
valor absoluto de largo n
división y resto de enteros n,d
estructura de retornos con div_t.quot y div_t.rem
división y resto de largos n,d
estructura de retornos con ldiv_t.quot y ldiv_t.rem
entero seudo aleatorio [0,RAND_MAX]
fijar semilla aleatoria a n
terminación de la ejecución del programa
pasar cadena s al sistema para ejecución
abs(n)
labs(n)
div(n,d)
ldiv(n,d)
rand()
srand(n)
exit(status)
system(s)
Converciones
convertir cadena s a doble
convertir cadena s a entero
convertir cadena s a largo (long)
convertir prefijo de s a doble
convertir prefijo de s (base b) a largo (long)
atof(s)
atoi(s)
atol(s)
strtod(s,endp)
strtol(s,endp,b)
algunos, pero sin signo largo (unsing long) strtoul(s,endp,b)
Asignación de almacenamiento
asignación de almacenamiento
cambiar tamaño de objeto
desasignar espacio
malloc(tamaño), calloc(nobj,tamaño)
realloc(pts,tamaño)
free(ptr)
Funciones de matriz
clave para buscar en matriz
ordenar ascendentemente la matriz
bsearch(clave,matriz,n,tamaño,cmp())
qsort(matriz,n,tamaño,cmp())
Funciones de fecha y tiempo <time.h>
tiempo de proceso usado por el programa
Ejemplo: clock()/CLOCKS_PER_SEC tiempo en segundos
tiempo de calendario corriente
tiempo2 - tiempo1 en segundos (doble)
tiempos de representación de tipos aritméticos
tipo de estructura para comparación de tiempo en el calendario
difftime(tiempo2 ,tiempo1 )
clock_t,time_t
tm
clock()
time()
s
tm_sec
tm_min
tm_hour
tm_mday
tm_mon
egundos antes del minuto
minutos antes de la hora
horas desde medianoche
días del mes
meses desde Enero
Comentarios de: Tarjeta de Referencia Rápida C (ANSI) (0)
No hay comentarios