Cadenas y Estructuras

Anuncio
Cadenas y Estructuras
Cadenas de caracteres (I)
 Vectores de tipo carácter (char) con un tratamiento
especial.
 El último elemento útil del vector debe ser el carácter
nulo (código ASCII 0) ’\ 0’
 Cadena de N caracteres declarar un vector con N+ 1
elementos.
 Ejemplo: char cadena[ 6]; reserva suficiente espacio
para almacenar una cadena de hasta 5 caracteres.
 Definición de constantes mediante comillas:
Cadenas de caracteres (II)
 Consulta: igual que en los vectores
 Asignación, diferentes maneras:
char cadena[ 10];
...
cadena[ 0] = ’c’;
cadena[ 1] = ’a’;
cadena[ 2] = ’s’;
cadena[ 3] = ’c’;
cadena[ 4] = ’o’;
cadena[ 5] = ’\ 0’;
char nombre[ 10] = {’N’, ’U’, ’R’, ’I’, ’A’, ’\ 0’};
char nombre[ 10] = "NURIA";
char nombre[ ] = "NURIA";
Cadenas de caracteres (III)
Funciones de manipulación en string.h:
 strlen: longitud de una cadena,
 strcpy: copiar una cadena en otra,
 strcat: concatenar dos cadenas,
 strcmp: comparar dos cadenas,
etc.
Entrada y salida (stdio.h):
 Formato especial %s para scanf (limitado) y printf.
Para solucionar utilizar scanf(“%s[^\n]”, var); permite aceptar
todos los caracteres excepto \n que finaliza la lectura.
 Funciones gets y puts.
Cadenas de caracteres (IV)
//Leer dos cadenas, concatenarlas, convertir minúsculas en mayúsculas y viceversa:
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
int main () {
char cad1[ 80], cad2[ 80], cad3[ 160]; int i;
printf("\ nCadena 1: ");
gets( cad1);
printf("\ nCadena 2: "); gets( cad2);
/* cad3 = cad1 + cad2 */
strcpy( cad3, cad1);
strcat( cad3, cad2);
i = 0;
while (cad3[ i] != '\0') {
if (( cad3[ i]>='a') && (cad3[ i]<='z')) cad3[ i]= toupper(cad3[i]); /* Convierte en mayúscula */
else if (( cad3[ i]>= 'A') && (cad3[ i]<= 'Z'))
cad3[ i]= tolower(cad3[i]); /* Convierte en minúscula */
i++;
}
printf(" La cadena resultante es: %s\n", cad3);
}
Estructuras (I)
 Agrupación de elementos de distintos tipos de datos
 Definición (plantilla genérica). No reserva memoria:
struct nombre_ estructura {
tipo_ campo_ 1 nombre_ campo_ 1;
tipo_ campo_ 2 nombre_ campo_ 2;
...
tipo_ campo_ N nombre_ campo_ N;
};
Ejemplo:
struct cliente {
char nombre[ 100];
long int dni;
char domicilio[ 200];
long int num_ cuenta;
float saldo;
}
Estructuras (II)- Declaración y acceso
 Declaración posterior a la definición:
struct nombre_ estructura {
tipo_ campo_ 1 nombre_ campo_ 1;
tipo_ campo_ 2 nombre_ campo_ 2;
...
tipo_ campo_ N nombre_ campo_ N;
} lista_ de_ variables;
struct cliente {
char nombre[ 100];
long int dni;
char domicilio[ 200];
long int num_ cuenta;
float saldo;
} cli1, cli2;
 Declaración de variables en la propia definición:
struct nombre_ estructura lista_ de_ variables;
struct cliente cli1, cli2;
 Acceso a los campos:
variable. nombre_ campo
cli1. nombre
cli1. dni
cli2. saldo
Estructura (III) - Asignación
 Asignación campo a campo:
strcpy( cli2. nombre, "Federico Sancho Bruch");
cli2. dni = 23347098;
gets( cli2. domicilio);
scanf("% ld", &cli2. num_cuenta);
cli2. saldo += 10000. 0;
 Asignación completa en la declaración:
struct cliente cli2 {
"Federico Sancho Buch",
23347098,
"Rue del Percebe 13 . Madrid",
7897894,
1023459. 34
};
 Copia de variables estructura mediante asignación:
cli2 = cli1;
Descargar