Hola y bienvenidos.
Vamos a ver en esta lección cómo obtener una subcadena de una cadena original.
Están listos?
Vamos.
Bien.
Básicamente, el concepto de su cadena es el siguiente Vamos a partir de una cadena que tenemos una
cadena original y el concepto de su cadena simplemente es un extracto de la cadena original.
Por ejemplo, en este caso podemos extraer los caracteres para obtener la cadena de hola, y esa sería
la subcadena.
O también podríamos obtener otra subcadena como la subcadena de mundo o cualquier cantidad de caracteres
que deseemos.
Pero básicamente una subcadena es un extracto de una cadena original.
Así que en este caso, podemos observar que lo que queremos obtener en la su cadena de hola.
Para ello vamos a utilizar una función muy particular de lenguaje C que se llama String Copy.
Y entonces vamos a comenzar con nuestro ejercicio para trabajar con sub cadenas.
Así que ponemos el comentario Sub cadenas en C y en primer lugar vamos a definir un arreglo de caracteres,
una cadena.
Y la cadena va a ser la cadena de Hola espacio mundo.
Tal como hemos visto en el ejemplo.
Y posteriormente vamos a definir otro arreglo de caracteres el cual va almacenar la subcadena.
Así que definimos también un arreglo de caracteres llamado subcadena y en este caso no le vamos a asignar
de momento ningún valor, ya que posteriormente vamos a utilizar una función la función para copiar
una subcadena.
Sin embargo, esta subcadena debe tener la cantidad mínima de caracteres que queremos almacenar.
En este caso la voy a poner, por ejemplo el valor de días para almacenar hasta diez caracteres.
Pero recordemos que este valor debe considerar el carácter de fin de cadena.
Así que en este caso podríamos almacenar una subcadena de hasta diez caracteres y posteriormente vamos
a utilizar la función STR en CPI, que básicamente significa string copy.
Para poderlo recordar más fácilmente.
Sin embargo, se escribe str en CP y ya, pero significa string copy o copia de una cadena.
Y para poder utilizar esta función también tenemos que importar la librería de String h, ya que esa
función se encuentra definida dentro de esta librería.
Bien, entonces los parámetros que tenemos que pasar a esta función.
Vamos a ver la firma de esta función.
Básicamente la firma es ver el código, pero sin el cuerpo de esta función solamente vamos a ver cómo
se definió la función, pero sin ver todo su código asociado.
Es decir, no vamos a conocer el detalle o el cuerpo de esta función.
Así que para ver la ayuda de esta función, la firma.
Podemos ver que si empezamos a escribirla, entonces nos aparece la ayuda.
En primer lugar, nos está indicando que el tipo de regreso es un apuntador a un carácter.
Pero recordemos que esto nos puede servir para referenciar una cadena, ya que es un apuntador a caracteres.
Posteriormente, la función.
Recordemos que esto significa el string copy y posteriormente los parámetros que necesita.
En primer lugar es la cadena de destino, así que la cadena de destino es donde se van a copiar los
caracteres de la subcadena.
Por ello, en este caso, la cadena de destino va a ser la subcadena.
Posteriormente nos solicita la fuente, es decir, la cadena original.
Por lo tanto, la cadena original va a ser este arreglo de cadena y posteriormente nos pregunta cuántos
caracteres se van a copiar de la cadena original.
Así que vamos a tener lo siguiente.
Va a regresar un apuntador a caracteres.
Posteriormente.
Esta función nos pide la cadena destino.
También nos pide la fuente o cadena original.
Y posteriormente la cantidad de caracteres a copiar.
El número de caracteres a copiar.
Bien, eso se los voy a poner entre comentarios.
Solamente es para que tengamos la referencia, la firma de esta función.
Sin embargo, aquí la cadena original lo que vamos a hacer es proporcionar el carácter a partir del
cual queremos copiar la subcadena.
Por lo tanto, es un índice y no todo el arreglo.
Así que en este caso tenemos que proporcionar el carácter de inicio desde el cual queremos comenzar.
Para ello, entonces, vamos a empezar a definir nuestras variables.
Definimos una variable llamada inicio.
Qué significa?
Cuál es el carácter?
Donde vamos a empezar a copiar?
Posteriormente definimos una variable para saber cuántos caracteres queremos copiar.
En este caso va a ser el número de caracteres, pero le voy a llamar simplemente n caracteres, que
es la cantidad de caracteres que se van a copiar de momento de la cadena original.
Vamos a copiar desde el índice cero hasta el índice cuatro.
Si vemos nuestra animación, nuestra cadena original contiene 11 caracteres desde el inicio cero hasta
el índice diez, pero solamente queremos crear una subcadena de los primeros cuatro caracteres, es
decir, la cadena de Hola.
Por lo tanto, la cantidad de caracteres que queremos copiar es cuatro, pero el índice de inicio desde
cual queremos comenzar es el índice cero, ya que queremos comenzar a copiar los caracteres a partir
del carácter H.
Y por último, entonces vamos a utilizar nuestra función.
Debido a que el resultado de copiar esos caracteres ya se va almacenar en nuestra variable de destino
en esta cadena, entonces ya no vamos a procesar lo que va a regresar esta función.
De momento no nos interesa lo que regrese, ya que todo el resultado se va a almacenar directamente
en la variable de subcadena.
Así que en primer lugar, proporcionamos la cadena destino.
En este caso es la variable de subcadena y la única condición con esta subcadena es que el largo de
esta subcadena debe ser suficiente para almacenar los caracteres que vamos a copiar.
En este caso solamente va a copiar cuatro caracteres, pero si fuéramos a copiar más caracteres, entonces
necesitamos hacer más grande esta subcadena.
Bien, esa sería el primer requisito para la subcadena y posteriormente vamos a proporcionar la cadena
original, pero indicando el carácter de inicio y por ello entonces no es la cadena completa, sino
es el índice con el cual queremos comenzar.
Pero debido a que esto no es un arreglo, si no es un carácter, entonces es un tipo de dato simple,
un tipo de dato primitivo, y por ello tenemos entonces que indicar ampersand para que se pase la dirección
de memoria, ya que el parámetro definido en esta función es un apuntador.
Bien, entonces esta sintaxis está proporcionando la dirección de memoria del carácter donde queremos
comenzar a copiar.
Y por último, proporcionamos la cantidad de caracteres que se van a copiar.
Bien, básicamente con esto, entonces ya estamos obteniendo nuestra subcadena que va a copiar desde
el carácter que hemos proporcionado, el inicio que va a ser el carácter H Iba a copiar hasta cuatro
caracteres de 0 a 3, y entonces el resultado de esta copia se va almacenar en la variable de subcadena.
Se copian cuatro caracteres.
Sin embargo, el caracter de fin de cadena no se está agregando de manera automática, por lo tanto,
nosotros tenemos que agregarlo.
Los demás caracteres se quedan con información basura, pero debido a que estamos utilizando la función
de String copy, entonces no se está agregando de manera automática este carácter de fin de cadena.
Así que para ello, para que no tengamos problemas para la impresión o manejo de la subcadena, entonces
al final, después de utilizar nuestra función de String copy en el índice respectivo, recordemos que
el índice donde queremos agregar nuestro carácter de fin de cadena va a ser el índice cuatro.
Y debido a que esta variable contiene precisamente este índice, aunque son cuatro elementos los que
se van a copiar, pero a su vez también nos sirve para saber el índice donde queremos agregar este carácter
de fin de cadena, ya que es exactamente el mismo valor y entonces utilizamos esa variable para agregar
el carácter de fin de cadena.
Debido a que solamente es un caracter, se utiliza comilla simple y agregamos el carácter de diagonal
inversa cero, que es el carácter de fin de cadena.
Prácticamente con esto ya tenemos todo nuestro código y ya simplemente falta mandar a imprimir nuestra
subcadena.
Vamos a utilizar la función printf.
Mandamos a imprimir la cadena original.
Cadena original.
Porcentaje ese y mandamos a imprimir nuestra cadena que es la cadena original y posteriormente vamos
a mandar a imprimir nuestra subcadena.
Subcadena.
Ya sabemos cuántos caracteres se copiaron.
Así que si son cuatro caracteres, nuestra subcadena puede almacenar hasta diez caracteres.
Por lo tanto, no debería tener problemas para almacenar la subcadena que hemos generado.
Y mandamos a imprimir entonces finalmente la subcadena.
Aquí tengo un error.
En lugar de utilizar punto y coma, tiene que ser una coma, ya que solamente son parámetros que estamos
pasando en nuestra función.
No debe de ser punto y coma bien.
Y antes de ejecutar esta línea, vamos a imprimirla en una nueva línea.
Agregamos el salto de línea, ejecutamos y entonces podemos comprobar que a partir de la cadena original,
la cadena de Hola mundo se está mandando a imprimir correctamente y entonces, según los parámetros
proporcionados, hemos proporcionado la subcadena.
Aquí es donde se va a almacenar la subcadena.
Hemos indicado que a partir del índice cero se van a empezar a copiar los caracteres hasta cuatro caracteres,
es decir, de 0 a 3.
Y debido a que la función es string y utiliza apuntadores de manera interna, entonces todo se maneja
en la misma dirección de memoria.
Por lo tanto, una vez que termina de ejecutarse esta función, ya todo queda almacenado correctamente
en la variable de subcadena.
Pero recordemos que después de utilizar esta función tenemos que agregar manualmente nuestro carácter
de fin de cadena, pero tiene que ser después del último carácter que sea copiado.
Es decir, si hemos copiado cuatro caracteres, los índices van de 0 a 3, por lo tanto el índice cuatro
es donde debemos de almacenar este carácter de fin de cadena.
Bien, una vez que ya lo hemos hecho, entonces simplemente mandamos a imprimir esta subcadena y ya
obtenemos la información correcta.
Bien.
Básicamente ese es el concepto de su cadenas.
Pónganla en práctica y nos vemos en el siguiente vídeo.
Saludos.