Cadenas de caracteres en C
Una cadena de caracteres en C es un vector de caracteres que termina con el carácter especial '\0', indicando el final de la cadena.
Se puede acceder a cada componente como en vectores simples, respetando que termine con ese carácter nulo.
Las cadenas van entre comillas dobles:
char v[6]="lunes";
El compilador añade automáticamente el carácter nulo al final de las constantes de cadena.
Lectura y escritura de cadenas:
char cadena[255];
scanf("%s",cadena); /* No hay que usar & porque cadena ya es un puntero */
printf("%s",cadena);
Conversión de cadenas. stdlib.h
double atof(cadena)– Convierte cadena a doubleint atui(cadena)– Convierte cadena de dígitos a intlong atol(cadena)– Convierte cadena a long int
Manipulación de cadenas. string.h
strcpy(s1,s2)– Copia s2 a s1strncpy(s1,s2,n)– Copia n caracteres de s2 a s1strcat(s1,s2)– Añade s2 a s1strncat(s1,s2,n)– Añade n caracteres de s2 a s1strcmp(s1,s2)– Compara cadenas
Búsqueda en cadenas
strchr(s1,c)– Busca primera aparición de carácter cstrstr(s1,s2)– Localiza primera aparición de cadena s2 en s1strtok(s1,s2)– Divide s1 según delimitadores en s2
Caracteres
Una variable de tipo caracter almacena internamente el valor ASCII del caracter. Externamente está esperando que le introduzca exactamente ese valor.
char c='a';
char c=47;
char c='\47';
char a='\t', b='\n', c='\v';
Al ser esto así, yo puedo sumar y restar enteros y caracteres entre sí, o sólo caracteres, compararlos, etc.
Para comprobar si una letra es mayúscula: (letra>='A' && letra<='Z');
ctype.h
Existe un archivo de cabecera de la biblioteca estándar del lenguaje de programación C diseñado para operaciones básicas con caracteres. Contiene los prototipos de las funciones y macros para clasificar caracteres. Su uso no es necesario en absoluto ya que las cosas que hace son fácilmente programables.
Registros
Un registro agrupa datos de diferentes tipos asociados a una entidad.
tipos
<nombreTipo> registros
<nombreCampo1>:<tipo1>;
<nombreCampo2>:<tipo2>;
…
<nombreCampoN>:<tipoN>;
freg;
variables
<nombreVariable1>,<nombreVariable2>:<nombreTipo>;
<nombreVariable>:<nombreTipo>;
principio
…
<nombreVariable1>.<nombreCampo3>;
…
fin
Declaración y uso de registros
tipo
cad20=cadena[20];
tipoSexo(varon,hembra);
tipoFecha= registro
dia 1..31;
mes 1..12;
anyo 0..3000;
freg;
tipoPersona= registro
nombre,apellido1,apellido2:cad[20];
sexo:tipoSexo;
fechaNacimiento:tipoFecha;
freg;
tipoComplejo1= registro
parteReal,parteImaginaria:real;
freg;
tipoComplejo2= registro
modulo,argumento:real;
freg;
variables
ayer,hoy:tipoFecha;
yo,tu,el:tipoPersona;
z:tipoComplejo1;
w:tipoComplejo2;
principio
…
ayer.dia:=13;
ayer.mes:=3;
ayer.anyo:=1988;
hoy.dia+1;
el.sexo:=varon;
el.fechaNacimiento:ayer;
z.parteReal:=w.modulo*cos(w.argumento);
z.parteImaginaria:=w.modulo*sin(w.argumento);
fin