Tarjeta de referencia ANSI C
Estructura de programa/funciones
tipo func(tipo 1,. . . )
tipo nombre
main() {
declaración de funciones
declaración de variables globales
función principal
declaración de variables locales
declaraciones
instrucciones
}
tipo func(arg 1,. . . ) {
declaraciones
instrucciones
return valor ;
definición de función
declaración de variables locales
comentarios
}
/* */
main(int argc, char *argv[]) programa con argumentos
Preprocesador de C
incluir fichero de cabeceras
incluir fichero de usuario
sustitución de texto
macro con argumentos
#define nombre texto
#define nombre (var ) texto
#include <fichero>
#include "fichero"
Ejemplo. #define max(A,B) ((A)>(B) ? (A) : (B))
#undef nombre
#
##
#if, #else, #elif, #endif
#ifdef, #ifndef
defined(nombre )
anular definición
entrecomillar al reemplazar
concatenar argumentos y reescanear
compilación condicional
¿nombre definido, no definido?
¿nombre definido?
carácter de continuación de línea
Tipos de datos. Declaraciones
carácter (1 byte)
entero
real (precisión simple)
real (precisión doble)
corto (entero de 16 bits )
largo (entero de 32 bits)
positivo y negativo
sólo positivo
puntero a int, float,. . .
enumeración
valor constante (inalterable)
declaración de variable externa
variable registro
variable estática
sin tipo
estructura
crear un tipo de datos
talla de un objeto (devuelve un size_t)
talla de un tipo de datos (dev. un size_t)
Inicialización
Inicializar variable
Inicializar vector
Inicializar cadena
\
char
int
float
double
short
long
signed
unsigned
enum
const
extern
register
static
void
struct
*int, *float,. . .
typedef tipo nombre
sizeof objeto
sizeof(tipo )
tipo nombre=valor
tipo nombre[]={valor 1,. . . }
char nombre []="cadena "
c 2002 Joseph H. Silverman Permisos en el reverso. v1.3s
L o l
F o f
E o e
0
0x o 0X
Constantes
largo (sufijo)
real de precisión simple (sufijo)
notación científica
octal (prefijo cero)
hexadecimal (prefijo cero-equis)
carácter constante (char, octal, hex.)
nueva línea, ret. de carro, tab., borrado
caracteres especiales
cadena constante (termina con '\0')
Punteros, vectores y estructuras
declarar un puntero a tipo
decl. una func. que dev. un punt. a tipo
decl. un punt. a func. que devuelve tipo
puntero genérico
valor de puntero a nulo
objeto apuntado por puntero
dirección del objeto nombre
vector
vector multidimensional
Estructuras
tipo *nombre
tipo *f()
tipo (*pf)()
void *
NULL
*puntero
&nombre
nombre [dim]
'a', '\ooo', '\xhh'
\n, \r, \t, \b
\\, \?, \', \"
"abc. . . de"
nombre [dim 1][dim 2]. . .
struct etiqueta {
declaraciones
};
plantilla de estructura
declaración de campos
crear estructura
campo de estructura
campo de estructura a través de puntero
struct etiqueta nombre
nombre .campo
puntero->campo
Ejemplo. (*p).x y p->x son lo mismo
union
campo : b
nombre .campo
puntero->campo
nombre [índice]
++, --
+, -, !, ~
*puntero, &nombre
(tipo)expr
sizeof
estructura múltiple, valor único
campo de bits con b bits
Operadores (según precedencia)
acceso a campo de estructura
acceso por puntero
acceso a elemento de vector
incremento, decremento
más, menos, no lógico, negación bit a bit
acceso por puntero, direcc. de objeto
convertir tipo de expresión
tamaño de un objeto
producto, división, módulo (resto)
suma, resta
desplazamiento a izda., dcha. (bit a bit)
comparaciones
comparaciones
“Y” bit a bit
“O exclusiva” bit a bit
“O” bit a bit
“Y” lógico
“O” lógico
expresión condicional
operadores de asignación
separador de evaluación de expresiones
Los operadores unarios, expresión condicional y operadores de asig-
nación se agrupan de dcha. a izda.; todos los demás de izda. a dcha.
>, >=, <, <=
==, !=
&
^
|
&&
||
expr 1 ? expr 2 : expr 3
=, +=, -=, *=, ...
,
*, /, %
+, -
<<, >>
Control de flujo
finalizador de instrucción
delimitadores de bloque
salir de switch, while, do, for
siguiente iteración de while, do, for
ir a
etiqueta
valor de retorno de función
Construcciones de flujo
instrucción if
instrucción while
instrucción
instrucción
if (expr )
else if (expr )
else
while (expr )
instrucción
instrucción
}
;
{
break
continue
goto etiqueta
etiqueta:
return expr
instrucción for
for (expr 1; expr 2; expr 3)
instrucción do
instrucción switch
instrucción
instrucción
do
while(expr );
switch (expr ) {
case const 1:
case const 2:
default:
instrucción
instrucción 1 break;
instrucción 2 break;
}
Bibliotecas ANSI estándar
<assert.h>
<locale.h>
<stddef.h>
Consulta de tipos de carácter <ctype.h>
<limits.h>
<stdarg.h>
<time.h>
<errno.h>
<setjmp.h>
<stdlib.h>
<float.h>
<signal.h>
<string.h>
<ctype.h>
<math.h>
<stdio.h>
c es un carácter
¿alfanumérico?
¿alfabético?
¿carácter de control?
¿dígito decimal?
¿carácter imprimible (excluído espacio)?
¿letra minúscula?
¿carácter imprimible (incl. espacio)?
¿car. impr. excepto espacio, letra, dígito?
¿separador?
¿letra mayúscula?
¿dígito hexadecimal?
convertir a minúscula
convertir a mayúscula
Operaciones con cadenas <string.h>
isalnum(c)
isalpha(c)
iscntrl(c)
isdigit(c)
isgraph(c)
islower(c)
isprint(c)
ispunct(c)
isspace(c)
isupper(c)
isxdigit(c)
tolower(c)
toupper(c)
s,t son cadenas, cs,ct son cadenas constantes
longitud de s
copiar ct en s
...hasta n caracteres
concatenar ct tras s
...hasta n caracteres
comparar cs con ct
...sólo los primeros n caracteres
puntero al primer c en cs
puntero al último c en cs
copiar n caracteres de ct en s
copiar n cars. de ct en s (sobreescribe)
comparar n caracteres de cs con ct
punt. al 1er c en los n 1os cars. de cs
poner c en los n primeros cars. de 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)
memcpy(s,ct,n)
memmove(s,ct,n)
memcmp(cs,ct,n)
memchr(cs,c,n)
memset(s,c,n)
Tarjeta de referencia ANSI C
Entrada/Salida <stdio.h>
E/S estándar
flujo de entrada estándar
flujo de salida estándar
flujo de error estándar
final de fichero
obtener un carácter
imprimir un carácter
imprimir con formato
imprimir en cadena s
leer con formato
leer de cadena s
leer línea en cadena s
imprimir cadena s
E/S de ficheros
declarar puntero a fichero
obtener puntero a fichero
stdin
stdout
stderr
EOF
getchar()
putchar(car )
gets(s)
puts(s)
FILE *fp
printf("formato ",arg 1,. . . )
sprintf(s,"formato ",arg 1,. . . )
scanf("formato ",&nombre 1,. . . )
sscanf(s,"formato ",&nombre 1,. . . )
fopen("nombre ","mode ")
getc(fp)
putc(car ,fp)
fprintf(fp,"formato",arg 1,. . . )
fscanf(fp,"formato",arg 1,. . . )
modos: r (leer), w (escribir), a (añadir)
obtener un carácter
escribir un carácter
escribir en fichero
leer de fichero
cerrar fichero
distinto de cero si error
distinto de cero si EOF
leer línea en cadena s (< max cars.)
escribir cadena s
Códigos de E/S con formato: "%-+ 0w.pmc"
fclose(fp)
ferror(fp)
feof(fp)
fgets(s,max,fp )
fputs(s,fp )
-
+
alineación a izquierda
imprimir con signo
space imprimir espacio si no hay signo
rellenar por delante con ceros
0
w anchura mínima del campo
p
m carácter de conversión:
precisión
h
short,
l
long,
L
long double
c
carácter de conversión:
d,i entero
c carácter
f doble
o octal
p puntero
u
s
sin signo
cadena de caracteres
e,E exponencial
x,X hexadecimal
n número de caracteres escritos
g,G como f o e,E según cuál sea el exponente
Lista variable de argumentos <stdarg.h>
declarar puntero a argumentos
inicializar puntero a args.
va_start(nombre ,ultarg )
va_list nombre ;
ultarg es el último parámetro con nombre de la función
siguiente arg. sin nom., actualizar punt.
invocar antes de salir de la función
va_arg(nombre ,tipo)
va_end(nombre )
Funciones útiles <stdlib.h>
valor absoluto del entero n
valor absoluto del largo n
cociente y resto de enteros n,d
abs(n)
labs(n)
div(n,d)
devuelve una estructura con div_t.quot y div_t.rem
cociente y resto de largos n,d
ldiv(n,d)
devuelve una estructura con ldiv_t.quot y ldiv_t.rem
entero pseudo-aleatorio en [0,RAND_MAX]
fijar la semilla aleatoria a n
finalizar ejecución del programa
ejecutar cadena s en el sistema
Conversiones
convertir cadena s a double
convertir cadena s a int
convertir cadena s a long
convertir prefijo de s a double
convertir prefijo de s (base b) a long
igual, pero unsigned long
rand()
srand(n)
exit(estado)
system(s)
atof(s)
atoi(s)
atol(s)
strtod(s,finp)
strtol(s,finp,b)
strtoul(s,finp,b)
malloc(talla), calloc(nobj,talla)
realloc(pts,talla)
free(ptr)
Reserva de memoria
reserva memoria
cambiar tamaño de la reserva
liberar memoria
Funciones de vectores
buscar clave en vect
ordenar vect ascendentemente
Funciones de hora y fecha <time.h>
tiempo de proc. usado por el programa
bsearch(clave,vect,n,talla,cmp())
qsort(vect,n,talla,cmp())
clock()
Ejemplo. clock()/CLOCKS_PER_SEC da el tiempo en segundos
segundos desde 1/1/1.970 (hora de ref.)
tpo2-tpo1 en segs. (double)
tipos numéricos para representar horas
estructura estándar usada para fecha y hora
time()
difftime(tpo2 ,tpo1)
clock_t,time_t
tm
tm_sec
tm_min
tm_hour
tm_mday
tm_mon
tm_year
tm_wday
tm_yday
tm_isdst
segundos en el minuto
minutos en la hora
horas desde medianoche
día del mes
meses desde enero
años desde 1.900
días desde el domingo
días desde el 1 de enero
indicador del cambio de horario (verano/invierno)
convertir hora local a hora de ref.
convertir hora en tp a cadena
convertir hora de ref. en tp a cadena
convertir hora de ref. a GMT
convertir hora de ref. a hora local
formatear fecha y hora
mktime(tp)
asctime(tp)
ctime(tp)
gmtime(tp)
localtime(tp)
tp es un puntero a una estructura de tipo tm
strftime(s,smax,"formato ",tp)
Funciones matemáticas <math.h>
los argumentos y valores devueltos son double
sin(x), cos(x), tan(x)
asin(x), acos(x), atan(x)
funciones trigonométricas
funciones trig. inversas
arctg(y/x)
funciones trig. hiperbólicas
exponenciales y logaritmos
exps. y logs. (base 2)
división y resto
potencia y raíz
redondeo
Límites
Comentarios de: Tarjeta de referencia ANSI C (0)
No hay comentarios