






Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Una introducción a las cadenas de caracteres, su representación, definición y operaciones básicas en el contexto del lenguaje de programación c. El texto aborda conceptos como la representación de caracteres, la definición de cadenas, las operaciones básicas de acceso, longitud, comparación y concatenación, así como otras operaciones avanzadas como la extracción y la inserción de subcadenas, el borrado de subcadenas y la búsqueda de subcadenas.
Tipo: Apuntes
1 / 12
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!







Tema 6. Cadenas de caracteres 2
Tema 6. Cadenas de caracteres 3
Tema 6. Cadenas de caracteres 4
Tema 6. Cadenas de caracteres 7
var_cadena : CADENA [ longitud+1 ]
nombre: cadena [31] {la longitud máxima de nombre es 30} dni: cadena [9] {la longitud máxima de dni es 8} telefono: cadena [10] {la longitud máxima de telefono es 9}
dni: cadena [1..8] vacia: cadena [0] negativo:cadena[-7] sinlongitud:cadena[]
Tema 6. Cadenas de caracteres 8
Para acceder a cada carácter de la cadena se usa la misma notación que con los arrays nombre[i] devuelve un valor de tipo carácter (OJO, NO de tipo cadena) Si nombre almacena “Alejandro”, nombre[2] devuelve ‘e’ Para modificar un carácter dentro de la cadena también se usa la notación de los arrays i ← 0 nombre[i] ← ‘a’ nombre[4] ← ‘o’{nombre quedaría como“alejondro”} A diferencia de lo que ocurre con los arrays, las cadenas son accesibles globalmente por su nombre sin necesidad de acceder elemento a elemento (es decir, no es necesario acceder carácter a carácter) nombre ← “María”
long(cad): devuelve un número que indica la longitud de la cadena Long(nombre) devuelve 9
Tema 6. Cadenas de caracteres 9
Las constantes cadenas deben ir entre comillas dobles para distinguirlas de las constantes carácter que utilizan comillas simples Hay que tener mucho cuidado en asignar cadenas con una cantidad mayor a la que se ha declarado cad, cad2: cadena[5] nombre:cadena[10] cad ← “Alejandro” {ERROR} nombre ← “Alejandro” cad2 ← nombre {ERROR}
LEER(nombre) ESCRIBIR(nombre) Para leer o escribir un carácter concreto de la cadena LEER(nombre[i]) ESCRIBIR(nombre[i])
Tema 6. Cadenas de caracteres 10
Tema 6. Cadenas de caracteres 13
Procedimiento BORRA(cad,pos,num_car): borra de la cadena ‘cad’ un total de ‘num_car’ caracteres comenzando en la posición ‘pos’ Restricciones Si la posición a partir de la cual se desea borrar la subcadena es mayor que la longitud de la cadena, entonces debe devolver la cadena de entrada El número de caracteres a borrar debe ser un número entero positivo mayor que cero; en caso contrario debe devolverse la cadena de entrada sin borrar ningún carácter Si el número de caracteres a extraer supera el tamaño de la cadena, entonces se borrará hasta el final de la cadena de entrada y no más caracteres
Función BUSCA(subcad,cad): devuelve un entero que indica la posición que ocupa el primer carácter de la subcadena ‘subcad’ en la cadena ‘cad’, o un negativo si no se encuentra la subcadena dentro de la cadena
Tema 6. Cadenas de caracteres 14
Cadenas de caracteres
Jueves 20 de diciembre de 8’30 a 9’30 (grupo A),
y de 15’30 a 16’30 (grupo B)
Tema 6. Cadenas de caracteres 15
Ejemplo: Dada un cadena eliminar los espacios
en blanco copiando el resultado en otra
cadena
ALGORITMO EliminaBlancos VARIABLES cadenaOriginal:cadena[256] // Cadena de entrada i : ENTERO // Contador para bucles j : ENTERO // Contador para el resultado longitud: ENTERO // Longitud de la cadena de entrada cadSinBlancos:cadena[256] // Cadena de salida INICIO LEER ( cadenaOriginal ) longitud ← long (cadenaOriginal) cadSinBlancos ← “” j ← 0 PARA i = 0 HASTA longitud-1 HACER SI ( cadenaOriginal [i] <> ‘ ’ ) ENTONCES cadSinBlancos[j]←cadenaOriginal[i] j ← j + 1 FIN_SI FIN_PARA cadSinBlancos[j] ← ‘\0’ ESCRIBIR (cadSinBlancos) FIN
Tema 6. Cadenas de caracteres 16
ALGORITMO palindromo. VARIABLES frase:CADENA[256] pal:LOGICO i,j,long2: ENTERO 1.[Lectura de los datos] ESCRIBIR(‘Introduzca la cadena sin signos de puntuación’) LEER(frase) 2.[Comprobar si es palíndromo o no] palÅVERDAD long2ÅLONGITUD(frase) DIV 2 iÅ 0 jÅLONGITUD(frase)-
MIENTRAS (pal AND (i<long2)) HACER SI (frase[i]<>frase[j]) ENTONCES palÅFALSO SINO iÅi+ jÅj- FIN_SI FIN_MIENTRAS 3.[Mostrar resultado] SI (pal) ENTONCES ESCRIBIR(‘Palíndromo !!!!’) SINO ESCRIBIR(‘NO es palíndromo’) FIN_SI 4.[Fin]
Tema 6. Cadenas de caracteres 19
Cadena cad
Array V
Tema 6. Cadenas de caracteres 20
Inicializando la cadena al declararla char cad[5]=“HOLA”; Inicializando la cadena carácter a carácter cad[0]=‘H’; cad[3]=‘A’; cad[1]=‘O’; cad[4]=‘\0’; cad[2]=‘L’; Utilizando strcpy (necesita #include <string.h> ) strcpy(cad,”HOLA”);
cad=”HOLA”; ERROR!!!!
Tema 6. Cadenas de caracteres 21
char cad1[TOPE],cad2[TOPE];
strcpy(cad1,”bob”); strcpy(cad2,”dylan”);
strlen(cad1) es 3
*(cad1) es igual a cad1[0] y es ‘b’ *(cad2+3) es igual a cad2[3] y es ‘a’
strcmp(cad1,cad2) devuelve un valor menor que 0 (cad1<cad2) strcmp(cad2,cad1) devuelve un valor mayor que 0 (cad2>cad1) strcmp(cad1,cad1) devuelve 0 (cad1 es igual a cad1)
Tema 6. Cadenas de caracteres 22
scanf(“%s”,cad1); scanf no comprueba el espacio disponible. Una forma de controlarlo es: scanf ( “%5s”, cad1 ); //Lee como mucho 5 caracteres scanf lee hasta que encuentra un espacio (‘\t’, ‘\n’, ‘ ’) o llega al límite indicado. Para leer incluyendo los espacios se usa fgets: fgets ( cad1, 5, stdin ); Lee 4 caracteres, incluyendo espacios y el ‘\n’ final si está en esos 4 caracteres. Añade el ‘\0’ al final
printf(“%s”,cad1); puts(cad1); //Incluye un ‘\n’ al final
strcat(cad1,cad2) concatena cad2 a cad1 {cad1=“bobdylan”} Se añade automáticamente el ‘\0’ al final del resultado