Hilos en lenguaje C

Hilos en lenguaje C

Las cadenas a menudo se usan en el idioma C. A través de ellos, un programa muestra los mensajes o resultados al usuario, ingresa la información en el sistema, genera o consulta la información en bases de datos, compara o busca palabras en un texto, etc. También se utilizan para que las funciones especifiquen las rutas de archivo, seleccionen los directorios de trabajo, etc.

En este artículo de Linux Sugerencia, aprenderá todo sobre cuerdas. Explicaremos desde cero qué es una cadena, qué elementos consiste y cómo se crea.

También veremos una sección especial que explica qué caracteres especiales son y qué papel juegan los personajes de control en una cadena.

Después de la explicación teórica, veremos los diversos ejemplos prácticos con fragmentos e imágenes de código donde le enseñamos cómo crear las cuerdas y usar las funciones básicas que el lenguaje C proporciona para su administración.

Hilos en lenguaje C

Una cadena es una pieza de texto que consiste en caracteres alfanuméricos, símbolos y caracteres de control. El compilador procesa cualquier cosa que esté encerrada en citas como una cadena y coloca automáticamente un carácter nulo después del último carácter para indicar el final.

A continuación, veamos la cadena más conocida en la programación:

"Hola Mundo"

El idioma C almacena las cuerdas en matrices de elementos de tipo char o char sin firmar. El tipo de datos de los elementos debe especificarse en la declaración de la matriz como se muestra en lo siguiente:

char string_1 [20];
unsigned char string_2 [20];

En este caso, la matriz String_1 tiene 20 elementos de tipo Char y la matriz String_2 tiene 20 elementos de tipo sin firmación Char.

El tipo de datos de los elementos de matriz determina el conjunto de caracteres que la cadena acepta. Un tipo de datos Char acepta solo un carácter ASCII de 7 bits. El bit restante se usa como una verificación de signo y paridad, por lo que solo los caracteres entre 0h00 y 0H80 desde la tabla ASCII pueden representarse en este tipo de datos.

Los caracteres del tipo de char sin firmar no usan un bit de signo, por lo que sus 8 bits se utilizan para representar los caracteres entre las 0h00 y las 0 hff del código ASCII extendido.

Además de los caracteres y símbolos alfanuméricos, una cadena también puede contener los caracteres de control.

Escapar y controlar personajes en el lenguaje C

Los caracteres de control tienen la función de realizar acciones específicas en la cadena que los contiene. Por ejemplo, un carácter "\ n" antes del comienzo de una cadena significa que debe escribirse en una nueva línea.

#incluir
vacío principal()
printf ("\ nhello world");

El carácter de escape al final de la cadena indica que la cadena se debe escribir y el cursor se mueve a la siguiente línea.

#incluir
vacío principal()
printf ("Hello World \ n");

Todas las secuencias de escape consisten en un carácter alfanumérico que está precedido por una barra insegura.

A continuación, vemos una tabla de los caracteres de escape más utilizados en el lenguaje C:

\norte Nueva línea
\ r Retorno de carro
\a Alerta de alerta
\ t Tabulación
\ V Tabulación vertical
\b Espalda
\F FUERZO DE FORMA

Además de estos caracteres de escape, hay secuencias que indican al compilador que debe incluir ciertos símbolos en la cadena. Por ejemplo, si queremos incluir un carácter de doble cita en el texto, el compilador lo interpretaría como un terminador de la cadena y no como otro carácter de ella. Por esta razón, algunos símbolos deben ser precedidos por una barra insegura para que el compilador pueda insertar. En el siguiente ejemplo, vemos cuáles son:

\ " Insertar citas dobles
\ ' Insertar citas individuales
\\ Insertar barra de de fondo
\? Insertar un signo de interrogación

:

Cómo crear una cadena en el idioma C

Una de las formas de declarar una cadena es crear una matriz de caracteres de tipo char o char sin firmar de cierto tamaño, de la siguiente manera:

char str [50];
str = "hola mundo";

De esta manera, el compilador trata los datos que se almacenan en la matriz como una sola cadena al asignar un carácter nulo al final.

Cómo crear una cadena constante en el idioma C

Para crear una cadena constante, debe declarar una matriz de caracteres de tipo char o char sin firmar sin especificar su tamaño. Luego, asigne la cadena como se muestra en el siguiente:

char str [] = "hola mundo";

El compilador coloca automáticamente un carácter nulo al final de la cadena para indicar su final. Con este tipo de cadena, no es posible cambiar el contenido.

Cómo crear un puntero a la cadena en el idioma C

Otra forma de almacenar una cadena es declarar un puntero a la matriz que la almacena. Este método asigna dinámicamente el tamaño de la matriz de caracteres. Aquí está la forma correcta de declarar un puntero de cadena:

char *s_ptr;
S_PTR = "Hello World";

El método del puntero es el más utilizado por las funciones del lenguaje C para referirse a una cadena en sus argumentos de entrada y salida.

Funciones para manejar las cuerdas

Al programar, es importante memorizar las funciones básicas para manejar las cuerdas porque las usamos una y otra vez. Si los domina, su trabajo irá mucho más rápido.

Todas las funciones para manejar las cadenas se definen en la "cadena.encabezado. Para usarlos, debe incluir este archivo en su código de la siguiente manera:

#incluir

En la siguiente sección, le mostraremos brevemente cómo usar las funciones básicas de manejo de cadenas en el idioma C.

Cómo mostrar una cadena en el idioma C

La forma más común de mostrar una cadena en la pantalla es usar las funciones printf () o pon (), las cuales se definen en el "stdio.encabezado. Estas funciones aceptan una cadena o un puntero a una cadena como argumento de entrada.

Ahora, veamos cómo se puede mostrar una cadena en la pantalla utilizando la función printf ():

#incluir
vacío principal()
printf ("Hello World 1 \ n");
char str [15] = "\ nhello world 2 \ n";
printf ("%s", str);

Si usa la función printf () y pasa un puntero de cadena como en el segundo caso, debe especificar en qué formato se debe mostrar. Dado que es una cadena en este caso, este formato se especifica con "%s" como el primer argumento de entrada.

En la siguiente figura, puede ver la compilación y la ejecución de este código:

Cómo copiar una cadena en el idioma C

Hay varias formas de copiar una cadena en el idioma C. El método más utilizado es la función strcpy () que se define en la "cadena.encabezado. En el siguiente ejemplo, veremos la sintaxis de esta función:

strcpy (S1, S2);

La función strcpy () copia la cadena "S2" a la cadena "S1" e inserta un carácter nulo al final. La cadena "S2" se puede especificar explícita o implícitamente.

Ejemplo:

El siguiente código copia la cadena "S2" especificada explícitamente a la cadena "S1" y la muestra en la consola de comando:

#incluir
#incluir
vacío principal ()

char s1 [20] = "";
strcpy (s1, "\ n \ nhello world \ n \ n");
printf ("%s", s1);

La siguiente imagen muestra la compilación y ejecución de este código. En este caso, strcpy () copia la cadena de "S2" a "S1" y luego la imprime a la pantalla usando la función printf ():

Cómo concatenar dos cuerdas en el idioma C

La función que proporciona el lenguaje C para concatenar dos cadenas es strcat (). Veamos la sintaxis de esta función a continuación:

Strcat (S1, S2);

Esta función concatena la cadena "S2" en la cadena "S1". Como todas las funciones de procesamiento de cadenas, strcat () coloca un carácter nulo al final de la cadena concatenada. Tanto "S1" como "S2" se pueden especificar explícita o implícitamente.

Ejemplo:

#incluir
#incluir
vacío principal ()

char s1 [20] = "\ n \ nhello";
strcat (s1, "mundo \ n \ n");
printf ("%s", s1);

La siguiente imagen muestra la compilación y ejecución de este código. En este caso, strcat () concatena la sring "S2" a la cadena "S1" y luego la imprime en la pantalla usando la función printf ():

Cómo comparar dos cuerdas en el idioma C

La función que proporciona el lenguaje C para comparar las cadenas es strcmp (). Veamos la sintaxis de esta función a continuación:

int strcmp (S1, S2);

La función strcmp () compara las cadenas "S1" y "S2". Si son iguales, devuelve un resultado igual a 0. Si no son iguales, devuelve un resultado que no es igual a 0.


Ejemplo:

#incluir
#incluir
vacío principal ()

char s1 [50] = "igual";
char s2 [50] = "igual";
char s3 [50] = "no igual";
//caso 1
if (strcmp (s1, s2) == 0)
printf ("\ n \ ns1 y s2 son iguales \ n \ n");
demás
printf ("\ n \ ns1 y s2 no son iguales \ n \ n");
// Caso 2
if (strcmp (s1, s3) == 0)
printf ("\ n \ ns1 y s3 ​​son iguales \ n \ n");
demás
printf ("\ n \ ns1 y s3 ​​no son iguales \ n \ n");

Vemos la compilación y ejecución de este código en la siguiente figura. En el caso 1, "S1" y "S2" son los mismos, por lo que strcmp () devuelve 0. En el caso 2, "S1" y "S3" no son iguales, por lo que el programa ingresa a la declaración "más" de la declaración "si".

Cómo cortar una cuerda en fragmentos

La función strsep () fragmenta la cadena que se apunta por StringP en pedazos, comenzando con un delimitador que se especifica en su argumento de entrada "delimer". Veamos ahora la sintaxis de esta función:

char *strsep (char ** restringir stringp, const char *restringir delim);

Cuando strsep () encuentra un delimitador, lo reemplaza con un carácter nulo que marca el final del nuevo fragmento y establece el puntero en StringP en la siguiente posición. Esta función devuelve el puntero al nuevo fragmento en cada llamada, o un puntero nulo si no encuentra más delimitadores.

Ejemplo:

En este ejemplo, fragmentamos el "Hoy es un gran día para la programación" cadena y use un espacio como delimitador para que la cadena sea fragmentada Word by Word, que emitimos a la consola de comando usando la función printf (). La llamada a la función strsep () se repite en un bucle de tiempo hasta que no encuentra más delimitador y devuelve un puntero nulo.

#incluir
#incluir
vacío principal ()

char s_in [50] = "Hoy es un gran día para la programación";
char* in_ptr = s_in;
char del [4] = "";
char* o_ptr;
mientras (O_PTR != Nulo)
o_ptr = strsep (& in_ptr, del);
printf ("%s \ n \ n", o_ptr);

La siguiente imagen muestra la compilación y ejecución de este código. Como podemos ver, strsep () fragmenta la cadena Word by Word y la función printf () imprime cada palabra en una nueva línea de la consola de comando:

Conclusión

En este artículo de Linux Sugerencia, explicamos en qué consiste una cadena en el idioma C.

Aprendimos de qué elementos están hechos, de qué tipo de datos usan, cómo están codificados y qué caracteres admite cada tipo.

También explicamos las diferentes formas de declarar las matrices o punteros para almacenar las cuerdas, así como las instrucciones para asignarlas.

Para ayudarlo a obtener un agarre con cadenas en este idioma, utilizamos los ejemplos prácticos y los fragmentos de código para mostrarle qué son las cuerdas y cómo usar algunas de las funciones básicas de procesamiento de cadenas.