ManejodecadenasenC
Estructuras de datos (Prof. Edgardo A. Franco)
Contenido
2
CadenasenC
• A diferencia de otros lenguajes de programación que
emplean un tipo denominado cadena string para
manipular un conjunto de símbolos, en C, se debe
simular mediante un arreglo de
caracteres, en donde la terminación de la cadena
se debe indicar con nulo con valor 0.
char c [4];
char cad[5];
3
• Un nulo se especifica como '0'. Por lo anterior, cuando se
declare un arreglo de caracteres para ser usado como
cadena, se debe considerar un carácter adicional a la
cadena más larga que se vaya a guardar.
• Por ejemplo, si se quiere declarar un arreglo cadena que
guarde una cadena de diez caracteres, se hará como:
charcadena[11];
• Se pueden hacer también inicializaciones de arreglos
de caracteres en donde automáticamente C asigna el
carácter nulo al final de la cadena, de la siguiente forma:
char nombre_arr[ tam ]="cadena";
• Por ejemplo, el siguiente fragmento inicializa cadena con
``hola'':
charcadena[5]="hola";
• El código anterior es equivalente a:
charcadena[5]={'h','o','l','a','0'};
char nombres[15], apellido[30];
printf("Introduce tu nombre(s): ");
scanf("%[^n]",nombres); //Leer caracteres hasta fin
printf("Introduce tu apellido: ");
d
e
scanf("%s",apellido);
• Para asignar la entrada estándar a una cadena se
puede usar la función scanf con la opción
%s (cadenas sin espacios) %[^n] (cadenas conespacios
hasta el fin de línea) (observar que no se requiere usar
el operador & en el scanf paras el argumento, ya que el
nombre del arreglo es un apuntador estático al
arreglo), de igual forma para mostrarlo en la salida
estándar.
#include <stdio.h>
int main(void)
{
printf("Usted es %s %sn",nombres,apellido); //Leer caracteres
hasta el primer espacio
return 0;
}
• El %s puede delimitar los caracteres a considerar
como máximos a tomar para almacenar en una cadena.
%24s indica que 24 es la máxima cantidad de
caracteres que esperemos se ingresen (uno
menos que el tamaño del arreglo). Si se intenta ingresar
más de 24 sencillamente no los almacenará. Esta es una
buena costumbre cada vez que se utiliza scanf() para
capturar cadenas.
#include <stdio.h>
int main(void)
{
char a[25];
printf("Ingresa tu
nombre: ");
scanf("%24s",a); //
24 caracteres a
tomar printf("Tu
nombre es: %sn",a);
return 0;
}
• El lenguaje C no maneja cadenas de caracteres, como
se hace con enteros o flotantes, por lo que lo siguiente
no es válido:
#include <stdio.h>
int main(void)
{
char nombre[40], apellidos[40], completo[80];
nombre="José María"; // Asignaciones
ilegales
apellidos="Morelos y Pavón";
completo="Gral."+ nombre + apellidos; // Operación Ilegal
return 0;
}
8
ManejodecadenasenC<string.h>
• string.h es un archivo de la Biblioteca estándar que
contiene la definición de macros, constantes,
funciones y tipos de utilidad para trabajar con cadenas
de caracteres.
• Las funciones declaradas en string.h funcionan en
cualquier plataforma que soporte ANSI C. Sin
embargo, existen algunos problemas de seguridad con
estas funciones, como el desbordamiento de arreglos,
que hacen que algunos programadores prefieran
opciones más seguras frente a la portabilidad que
estas funciones ofrecen. Además, las funciones
para cadenas de
caracteres sólo trabajan con
conjuntos de caracteres
ASCII o extensiones ASCII compatibles.
• Para poder utilizar las funciones del manejo de
cadenas, es necesario incluir la biblioteca:
#include<string.h>
• Además, es importante preservar el carácter de
terminación NULL ‘0’, ya que con éste es como C
define y maneja las longitudes de las cadenas.
• Todas las funciones de la biblioteca estándar para el
manejo de cadenas de C lo requieren para
una operaciónsatisfactoria.
3
Funcionesparamanipulacióndearreglosde
caracteres(Manipulacióndecadenas)
• Las funciones de uso más común de dicho archivo
de cabecera son:
Nombre de la
función
Descripción
strcat() char* strcat (char* destino, const char* fuente) Añade la cadena
fuente al final de la destino. Devuelve la cadena destino.
strlen() size_t strlen( const char* s )
Devuelve la longitud de la cadena s
3
strncpy() char* strncpy( char* dest, const char* fuente, size_t n)
Copia n caracteres de la cadena fuente a la cadena destino
Cadenas
strcspn() size_t strcspn( const char* s1, const char* s2)
Devuelve la longitud de la subcadena más larga de s1 que comienza
con el carácter s1[0] y no contiene ninguno de los caracteres de la
cadena s2.
3
*Consultar las funciones de la librería "string.h" de ANSI C
PruebaymanejodecaracteresenC<ctype.h.h>
• Una biblioteca relacionada #include <ctype.h> la cual contiene muchas funciones
útiles para convertir y probar caracteres individuales.
• Las funciones más comunes para revisar caracteres
tienen los siguientes prototipos:
• int isalnum(int c): Verdad si c es alfanumérico.
• int isalpha(int c): Verdad si c es una letra.
• int isascii(int c): Verdad si c es ASCII.
• int iscntrl(int c): Verdad si c es un caracter de control.
• int isdigit(int c): Verdad si c es un dígito decimal.
13
• int isgraph(int c): Verdad si c es un caracter
imprimible, exceptuando el espacio en blanco.
• int islower(int c): Verdad si c es una letra minúscula.
• int isprint(int c): Verdad si c es un caracter imprimible,
incluyendo el espacio en blanco.
• int ispunct(intc):Verdad si c es un signo de
puntuación.
• int isspace(int c): Verdad si c es un espacio
• int isupper(int c): Verdad si c es una letra mayúscula.
• int isxdigit(int c): Verdad si c es un dígito hexadecimal.
• Las funciones para conversión de caracteres son:
• int toascii(int c): Convierte c a ASCII o un unsigned
char de 7 bits, borrando los bits altos.
• int tolower(int c): Convierte la letra c a minúsculas, si
es posible.
• int toupper(int c): Convierte la letra c a mayúsculas, si
es posible.

Más contenido relacionado

DOCX
Fundamentos de programación librería string C++
PPTX
Funciones str
PPTX
Pe15 cadenacaracteres
PPTX
PPTX
DOC
Funciones cadena
PPT
Creacion de una librería propia en C
PPTX
Cadenas de Caracteres
Fundamentos de programación librería string C++
Funciones str
Pe15 cadenacaracteres
Funciones cadena
Creacion de una librería propia en C
Cadenas de Caracteres

La actualidad más candente (20)

DOCX
PPT
PPT
Intro a ruby
PPTX
DOCX
Guia De Practica 3
PPTX
Escuela Politecnica Del Ejercito
PPTX
Funciones de Cadenas/ Computación para ingenieros
PPT
PPTX
PPT
2 punteros y lenguaje c
PPTX
Tipos de datos para C++
PPTX
DOCX
bibliotecas c++
PPTX
Bibliotecas o libreria de c++
PPTX
Programación en c++
PDF
Luis hernandez 22310621
PPS
PDF
08 - Punteros en lenguaje C
DOCX
Trabajo programacion 1 jose silva
Intro a ruby
Guia De Practica 3
Escuela Politecnica Del Ejercito
Funciones de Cadenas/ Computación para ingenieros
2 punteros y lenguaje c
Tipos de datos para C++
bibliotecas c++
Bibliotecas o libreria de c++
Programación en c++
Luis hernandez 22310621
08 - Punteros en lenguaje C
Trabajo programacion 1 jose silva
Publicidad

Similar a Cadenas (20)

PPT
Capitulo 8 Cadenas
PDF
6.2 cadenas de caracteres
PDF
Apunte cadenas
PPSX
Cadenas De Caracteres
PDF
Programación 1: cadenas en C
PPTX
Cadenas
PPT
Fpr Tema6 www.fresymetal.com
PDF
08 strings o cadenas
PPTX
Fundamentos de programacion
PPTX
Cadena De Caracteres_adrian
PPTX
Cadena Juan Bastidas
PPT
Cadenas y punteros.ppt
PPT
14 Caracteres Y Cadenas
PPT
CARACTERES Y CADENAS LENGUAJE C
PPT
Caracteres y Cadenas en C
PPT
Caracteres y cadenas en C
PPTX
Asignacion
PDF
6 Como Usar La Clase Estandar String
 
PPTX
Arreglos
PPTX
Cadenas
Capitulo 8 Cadenas
6.2 cadenas de caracteres
Apunte cadenas
Cadenas De Caracteres
Programación 1: cadenas en C
Cadenas
Fpr Tema6 www.fresymetal.com
08 strings o cadenas
Fundamentos de programacion
Cadena De Caracteres_adrian
Cadena Juan Bastidas
Cadenas y punteros.ppt
14 Caracteres Y Cadenas
CARACTERES Y CADENAS LENGUAJE C
Caracteres y Cadenas en C
Caracteres y cadenas en C
Asignacion
6 Como Usar La Clase Estandar String
 
Arreglos
Cadenas
Publicidad

Último (20)

PPTX
Mariluz_VITE HERNANDEZSaber pedagógico.pptx
PPTX
Programa_Orientacion_Vocacional_Ecuador_Detallado.pptx
DOCX
Visión, misión y valores de proyecto.docx
PPT
BUENA PARA INSTRUCCION EN BUENAS PRACT.ppt
PPSX
Presentacion TP Informatic00000000000000
PPTX
13 huhijkjlkjlkjlkjlkjlkjde agosto (2).pptx
PDF
Teoría del dibujo técnico y ejercicios prácticos
PPTX
Kick Off iMetrology metrologia industrial
PPTX
INFOR. EST. SITUAC. SGE 2023-II (1).pptx
PDF
Biologia molecular para riesgos ambientales
PDF
CATALOGO piratería y decoración para negocio
PDF
LA_SIERRA ,clima ,fauna,especies,selva húmeda
PDF
8_Representacion_de_Elementos_Mecanicoss
PPTX
primer respondiente VUGVKGYFCUTFCFCUFCYFC
PPTX
el respeto laurenz daniela duran acuña alfonzo lopez
PPTX
Ergonomia y Factores humanos en Arquitectura
PPTX
Presentacion Trabajo Final de Grado Profesional Moderna Azul .pptx
PPTX
Manual de identidad corporativa - Diseño Vectorial
PDF
PROYECTOS VIII - 4. Construcción tipológica de la vivienda colectiva (2025).pdf
PDF
TF - LOGÍSTICA INTERNACIONAmL.pdf puesto
Mariluz_VITE HERNANDEZSaber pedagógico.pptx
Programa_Orientacion_Vocacional_Ecuador_Detallado.pptx
Visión, misión y valores de proyecto.docx
BUENA PARA INSTRUCCION EN BUENAS PRACT.ppt
Presentacion TP Informatic00000000000000
13 huhijkjlkjlkjlkjlkjlkjde agosto (2).pptx
Teoría del dibujo técnico y ejercicios prácticos
Kick Off iMetrology metrologia industrial
INFOR. EST. SITUAC. SGE 2023-II (1).pptx
Biologia molecular para riesgos ambientales
CATALOGO piratería y decoración para negocio
LA_SIERRA ,clima ,fauna,especies,selva húmeda
8_Representacion_de_Elementos_Mecanicoss
primer respondiente VUGVKGYFCUTFCFCUFCYFC
el respeto laurenz daniela duran acuña alfonzo lopez
Ergonomia y Factores humanos en Arquitectura
Presentacion Trabajo Final de Grado Profesional Moderna Azul .pptx
Manual de identidad corporativa - Diseño Vectorial
PROYECTOS VIII - 4. Construcción tipológica de la vivienda colectiva (2025).pdf
TF - LOGÍSTICA INTERNACIONAmL.pdf puesto

Cadenas

  • 2. Estructuras de datos (Prof. Edgardo A. Franco) Contenido
  • 3. 2
  • 4. CadenasenC • A diferencia de otros lenguajes de programación que emplean un tipo denominado cadena string para manipular un conjunto de símbolos, en C, se debe simular mediante un arreglo de caracteres, en donde la terminación de la cadena se debe indicar con nulo con valor 0. char c [4]; char cad[5]; 3 • Un nulo se especifica como '0'. Por lo anterior, cuando se declare un arreglo de caracteres para ser usado como cadena, se debe considerar un carácter adicional a la cadena más larga que se vaya a guardar. • Por ejemplo, si se quiere declarar un arreglo cadena que guarde una cadena de diez caracteres, se hará como: charcadena[11];
  • 5. • Se pueden hacer también inicializaciones de arreglos de caracteres en donde automáticamente C asigna el carácter nulo al final de la cadena, de la siguiente forma: char nombre_arr[ tam ]="cadena"; • Por ejemplo, el siguiente fragmento inicializa cadena con ``hola'': charcadena[5]="hola"; • El código anterior es equivalente a: charcadena[5]={'h','o','l','a','0'};
  • 6. char nombres[15], apellido[30]; printf("Introduce tu nombre(s): "); scanf("%[^n]",nombres); //Leer caracteres hasta fin printf("Introduce tu apellido: "); d e scanf("%s",apellido); • Para asignar la entrada estándar a una cadena se puede usar la función scanf con la opción %s (cadenas sin espacios) %[^n] (cadenas conespacios hasta el fin de línea) (observar que no se requiere usar el operador & en el scanf paras el argumento, ya que el nombre del arreglo es un apuntador estático al arreglo), de igual forma para mostrarlo en la salida estándar. #include <stdio.h> int main(void) { printf("Usted es %s %sn",nombres,apellido); //Leer caracteres hasta el primer espacio return 0; }
  • 7. • El %s puede delimitar los caracteres a considerar como máximos a tomar para almacenar en una cadena. %24s indica que 24 es la máxima cantidad de caracteres que esperemos se ingresen (uno menos que el tamaño del arreglo). Si se intenta ingresar más de 24 sencillamente no los almacenará. Esta es una buena costumbre cada vez que se utiliza scanf() para capturar cadenas. #include <stdio.h> int main(void) { char a[25]; printf("Ingresa tu nombre: "); scanf("%24s",a); // 24 caracteres a tomar printf("Tu nombre es: %sn",a); return 0; }
  • 8. • El lenguaje C no maneja cadenas de caracteres, como se hace con enteros o flotantes, por lo que lo siguiente no es válido: #include <stdio.h> int main(void) { char nombre[40], apellidos[40], completo[80]; nombre="José María"; // Asignaciones ilegales apellidos="Morelos y Pavón"; completo="Gral."+ nombre + apellidos; // Operación Ilegal return 0; } 8
  • 9. ManejodecadenasenC<string.h> • string.h es un archivo de la Biblioteca estándar que contiene la definición de macros, constantes, funciones y tipos de utilidad para trabajar con cadenas de caracteres. • Las funciones declaradas en string.h funcionan en cualquier plataforma que soporte ANSI C. Sin embargo, existen algunos problemas de seguridad con estas funciones, como el desbordamiento de arreglos, que hacen que algunos programadores prefieran opciones más seguras frente a la portabilidad que estas funciones ofrecen. Además, las funciones para cadenas de caracteres sólo trabajan con conjuntos de caracteres ASCII o extensiones ASCII compatibles.
  • 10. • Para poder utilizar las funciones del manejo de cadenas, es necesario incluir la biblioteca: #include<string.h> • Además, es importante preservar el carácter de terminación NULL ‘0’, ya que con éste es como C define y maneja las longitudes de las cadenas. • Todas las funciones de la biblioteca estándar para el manejo de cadenas de C lo requieren para una operaciónsatisfactoria.
  • 11. 3 Funcionesparamanipulacióndearreglosde caracteres(Manipulacióndecadenas) • Las funciones de uso más común de dicho archivo de cabecera son: Nombre de la función Descripción strcat() char* strcat (char* destino, const char* fuente) Añade la cadena fuente al final de la destino. Devuelve la cadena destino. strlen() size_t strlen( const char* s ) Devuelve la longitud de la cadena s
  • 12. 3 strncpy() char* strncpy( char* dest, const char* fuente, size_t n) Copia n caracteres de la cadena fuente a la cadena destino
  • 14. strcspn() size_t strcspn( const char* s1, const char* s2) Devuelve la longitud de la subcadena más larga de s1 que comienza con el carácter s1[0] y no contiene ninguno de los caracteres de la cadena s2. 3 *Consultar las funciones de la librería "string.h" de ANSI C
  • 15. PruebaymanejodecaracteresenC<ctype.h.h> • Una biblioteca relacionada #include <ctype.h> la cual contiene muchas funciones útiles para convertir y probar caracteres individuales. • Las funciones más comunes para revisar caracteres tienen los siguientes prototipos: • int isalnum(int c): Verdad si c es alfanumérico. • int isalpha(int c): Verdad si c es una letra. • int isascii(int c): Verdad si c es ASCII. • int iscntrl(int c): Verdad si c es un caracter de control. • int isdigit(int c): Verdad si c es un dígito decimal. 13 • int isgraph(int c): Verdad si c es un caracter imprimible, exceptuando el espacio en blanco.
  • 16. • int islower(int c): Verdad si c es una letra minúscula. • int isprint(int c): Verdad si c es un caracter imprimible, incluyendo el espacio en blanco. • int ispunct(intc):Verdad si c es un signo de puntuación. • int isspace(int c): Verdad si c es un espacio • int isupper(int c): Verdad si c es una letra mayúscula. • int isxdigit(int c): Verdad si c es un dígito hexadecimal. • Las funciones para conversión de caracteres son: • int toascii(int c): Convierte c a ASCII o un unsigned char de 7 bits, borrando los bits altos. • int tolower(int c): Convierte la letra c a minúsculas, si es posible. • int toupper(int c): Convierte la letra c a mayúsculas, si es posible.