¿Qué es una cadena en C?
UNA. Cadena en C. es simplemente una colección de personajes en una secuencia lineal. ‘C’ siempre trata con un cable con datos individuales aunque haya espacios claros. Un solo carácter se define mediante la expresión de una sola cita. Un cable se indica mediante comillas dobles.
Example, "Welcome to the world of programming!"
‘C’ proporciona una biblioteca estándar
En este tutorial, aprenderá:
Cómo anunciar e iniciar una cadena en C.
AC String es una matriz simple con char como tipo de datos. Idioma ‘C’ el cable no admite directamente el tipo de datos. Por lo tanto, para mostrar String en C, debe usar una matriz de caracteres.
La siguiente es la sintaxis general para declarar una variable como una cadena en C,
char string_variable_name [array_size];
La declaración de cadena clásica se puede hacer de la siguiente manera:
char string_name[string_length] = "string";
El tamaño de la matriz se debe definir al declarar la variable C String porque se usa para calcular cuántos caracteres se almacenarán dentro de la variable de cable en C.
char first_name[15]; //declaration of a string variable char last_name[15];
El ejemplo anterior muestra variables cableadas con un tamaño de matriz de 15. Esto significa que la secuencia de cadenas C dada puede contener un máximo de 15 caracteres. La indexación de matrices comienza desde 0, por lo que almacenará caracteres desde la ubicación 0-14. El compilador de C agrega un carácter NULL ‘ 0’ a la matriz de caracteres creada.
Estudiemos la iniciación de String en C. El siguiente ejemplo muestra el comienzo de String en C,
char first_name[15] = "ANTHONY"; char first_name[15] = {'A','N','T','H','O','N','Y',' '}; // NULL character ' ' is required at end in this declaration char string1 [6] = "hello";/* string size="h"+'e'+'l'+'l'+'o'+"NULL" = 6 */ char string2 [ ] = "world"; /* string size="w"+'o'+'r'+'l'+'d'+"NULL" = 6 */ char string3[6] = {'h', 'e', 'l', 'l', 'o', ' '} ; /*Declaration as set of characters ,Size 6*/
En string3, el carácter NULL debe agregarse explícitamente y los caracteres entre comillas individuales.
‘C’ nos permite iniciar una variable cableada sin definir el tamaño de la edición del carácter. Se puede hacer de la siguiente manera,
char first_name[ ] = "NATHAN";
El nombre Strings en C actúa como un puntero porque es esencialmente una matriz.
Entrada de cadena: Leer cadena
Al escribir programas interactivos que solicitan la entrada del usuario, C proporciona las funciones scanf (), get () y fgets () para obtener una línea de texto ingresada por el usuario.
Cuando usamos scanf () para leer, usamos el especificador de formato «% s» sin usar el «&» para acceder a la dirección de la variable porque un nombre de matriz actúa como un puntero. Por ejemplo:
#include <stdio.h> int main() { char name[10]; int age; printf("Enter your first name and age: n"); scanf("%s %d", name, &age); printf("You entered: %s %d",name,age); }
Producción:
Enter your first name and age: John_Smith 48
El problema con la función scanf es que no lee cadenas completas en C. No detendrá el proceso de lectura una vez que haya un espacio en blanco, avance de formulario, tabulación vertical, nueva línea o retorno del comportamiento. Supongamos que damos entrada como «Tutoriales de Guru99», entonces la función scanf no leerá la cadena completa ya que aparece un carácter de espacio en blanco entre los dos nombres. La función scanf solo leerá Guru99.
Para leer un espacio en una cadena, usamos la función de búsqueda (). Obtiene ignorar los espacios luminosos. Deja de leer cuando se llega a una nueva línea (se presiona la tecla Enter). Por ejemplo:
#include <stdio.h> int main() { char full_name[25]; printf("Enter your full name: "); gets(full_name); printf("My full name is %s ",full_name); return 0; }
Producción:
Enter your full name: Dennis Ritchie My full name is Dennis Ritchie
Otra opción más segura () es la función fgets () que lee un número específico de caracteres. Por ejemplo:
#include <stdio.h> int main() { char name[10]; printf("Enter your name plz: "); fgets(name, 10, stdin); printf("My name is %s ",name); return 0;}
Producción:
Enter your name plz: Carlos My name is Carlos
Los argumentos de fgets () son:
- el nombre de la cadena,
- número de caracteres para leer,
- stdin significa leer desde la entrada estándar que es el teclado.
Salida de cadena: Cadena de impresión / visualización
La función printf estándar se utiliza para imprimir o mostrar cadenas en C en un dispositivo de salida. El especificador de formato utilizado es% s
Ejemplo,
printf("%s", name);
La salida de cadenas se realiza con las funciones fputs () y printf ().
función de salida ()
Necesita el nombre de la cadena y el puntero desde donde desea mostrar el texto. Usamos stdout, que se refiere a la salida estándar para la serigrafía. Por ejemplo:
#include <stdio.h> int main() {char town[40]; printf("Enter your town: "); gets(town); fputs(town, stdout); return 0;}
Producción:
Enter your town: New York New York
aplica
La función intestinal se utiliza para imprimir un cable en C en un dispositivo de salida y mover el cursor a la primera posición. Una función intestinal se puede utilizar de la siguiente manera,
#include <stdio.h> int main() { char name[15]; gets(name); //reads a string puts(name); //displays a string return 0;}
La sintaxis de esta función es relativamente simple que otras funciones.
La biblioteca de cuerdas
La biblioteca estándar ‘C’ proporciona varias funciones para manipular las cadenas dentro de un programa. Estas funciones también se denominan manipuladores de cables. Todos estos controladores están presentes en un archivo de encabezado
Función | Propósito |
strlen () | Esta función se usa para encontrar la longitud de un cable. Devuelve el número de caracteres presentes en una cadena excluyendo un carácter NULL. |
strcat (str1, str2) | Esta función se utiliza para combinar dos capas juntas para formar una sola cuerda. Adjunta str2 o coincide con el final de str1 y devuelve un puntero a str1. |
strcmp (str1, str2) | Esta función se utiliza para comparar dos capas. Devuelve 0 si str1 es igual a str2, menor que 0 si str1 |
Considere la siguiente tabla que muestra las funciones de una biblioteca cableada:
#include <stdio.h> #include <string.h> int main () { //string initialization char string1[15]="Hello"; char string2[15]=" World!"; char string3[15]; int val; //string comparison val= strcmp(string1,string2); if(val==0){ printf("Strings are equaln"); } else{ printf("Strings are not equaln"); } //string concatenation printf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world! //string length printf("nLength of first string:%d",strlen(string1)); printf("nLength of second string:%d",strlen(string2)); //string copy printf("nCopied string is:%sn",strcpy(string3,string1)); //string1 is copied into string3 return 0; }
Producción:
Strings are not equal Concatenated string:Hello World! Length of first string:12 Length of second string:7 Copied string is:Hello World!
Otras funciones importantes de la biblioteca son:
- strncmp (str1, str2, n): devuelve 0 si los primeros n caracteres de str1 son iguales a los primeros n caracteres de str2, menos que 0 si str1
str2. - strncpy (str1, str2, n) Esta función se utiliza para copiar un cable de otro cable. Copie los primeros n caracteres de str2 en str1
- strchr (str1, c): devuelve un puntero a la primera aparición de car c en str1, o NULL si no se encuentra el carácter.
- strrchr (str1, c): invierte la búsqueda str1 y devuelve un puntero a la ubicación del char ci str1, o NULL si no se encuentra el carácter.
- strstr (str1, str2): devuelve un puntero a la primera aparición de str2 en str1, o NULL si no se encuentra str2.
- strncat (str1, str2, n) Apéndices (concatena) los primeros n caracteres de str2 al final de str1 y un puntero de regreso a str1.
- strlwr (): convierte el cable a minúsculas
- strupr (): convierte el cable a mayúsculas
- strrev (): cable inverso
Convierte una cadena en un número
En la programación en C, podemos convertir una cadena de caracteres numéricos en un valor numérico para evitar errores en tiempo de ejecución. La biblioteca stdio.h tiene las siguientes funciones para convertir un cable en un número:
- int atoi (str) significa entero ASCII; convierte str en el valor int equivalente. Se devuelve 0 si el primer carácter no es un número o si no se encuentran números.
- double atof (str) Representa ASCII flotante, convierte str en el valor doble equivalente. Se devuelve 0.0 si el primer carácter no es un número o si no se encuentran números.
- long int atol (str) Su ASCII significa entero largo, str convierte al valor entero largo equivalente. Se devuelve 0 si el primer carácter no es un número o si no se encuentran números.
El siguiente programa muestra la función del apéndice ():
#include <stdio.h> int main() {char *string_id[10]; int ID; printf("Enter a number: "); gets(string_id); ID = atoi(string_id); printf("you enter %d ",ID); return 0;}
Producción:
Enter a number: 221348 you enter 221348
- Una declaración de puntero de cable como char * string = «language» es una constante y no se puede modificar.
Resumen
- Una cadena es una secuencia de caracteres almacenada en un conjunto de caracteres.
- Una cadena es texto entre comillas dobles.
- Un carácter como ‘d’ no es una cadena y está representado por comillas individuales.
- ‘C’ proporciona funciones de biblioteca estándar para manipular cadenas en un programa. Los manipuladores de cadenas se almacenan en un archivo de encabezado
. - Un cable debe confirmarse o inicializarse antes de que pueda usarse en un programa.
- Hay varias funciones de cable de entrada y salida, cada una de las cuales tiene sus propias características.
- No olvide incluir la biblioteca cableada para trabajar con sus funciones.
- Podemos convertir un cable en un número a través de atoi (), atof () y atol () que son muy útiles para el proceso de codificación y decodificación.
- Podemos manipular diferentes cadenas definiendo una cadena de cadenas en C ..