Cadenas de programación C
Cadenas de programación C
En este tutorial, aprenderá sobre las cadenas en la programación en C. Aprenderá a declararlos, inicializarlos y usarlos para varias operaciones de E/S con la ayuda de ejemplos.
En la programación C, una cadena es una secuencia de caracteres que termina con un carácter nulo \0
. Por ejemplo:
char c[] = "c string";
Cuando el compilador encuentra una secuencia de caracteres entre comillas dobles, agrega un carácter nulo \0
al final por defecto.
¿Cómo declarar una cadena?
Así es como puede declarar cadenas:
char s[5];
Aquí, hemos declarado una cadena de 5 caracteres.
¿Cómo inicializar cadenas?
Puede inicializar cadenas de varias formas.
char c[] = "abcd";
char c[50] = "abcd";
char c[] = {'a', 'b', 'c', 'd', '\0'};
char c[5] = {'a', 'b', 'c', 'd', '\0'};
Tomemos otro ejemplo:
char c[5] = "abcde";
Aquí, estamos tratando de asignar 6 caracteres (el último carácter es '\0'
) a un char
matriz que tiene 5 caracteres. Esto es malo y nunca debes hacer esto.
Asignación de valores a cadenas
Las matrices y las cadenas son ciudadanos de segunda clase en C; no admiten el operador de asignación una vez que se declara. Por ejemplo,
char c[100];
c = "C programming"; // Error! array type is not assignable.
Leer cadena del usuario
Puedes usar el scanf()
función para leer una cadena.
El scanf()
La función lee la secuencia de caracteres hasta que encuentra un espacio en blanco (espacio, nueva línea, tabulador, etc.).
Ejemplo 1:scanf() para leer una cadena
#include <stdio.h>
int main()
{
char name[20];
printf("Enter name: ");
scanf("%s", name);
printf("Your name is %s.", name);
return 0;
}
Salida
Enter name: Dennis Ritchie Your name is Dennis.
Aunque Dennis Ritchie se ingresó en el programa anterior, solo "Dennis" se almacenó en el nombre cuerda. Es porque había un espacio después de Dennis .
Observe también que hemos utilizado el código nombre en lugar de &name
con scanf()
.
scanf("%s", name);
Esto se debe a que nombre es un char
array, y sabemos que los nombres de los arrays se descomponen en punteros en C.
Así, el nombre en scanf()
ya apunta a la dirección del primer elemento de la cadena, por lo que no necesitamos usar &
.
¿Cómo leer una línea de texto?
Puedes usar el fgets()
función para leer una línea de cadena. Y puedes usar puts()
para mostrar la cadena.
Ejemplo 2:fgets() y puts()
#include <stdio.h>
int main()
{
char name[30];
printf("Enter name: ");
fgets(name, sizeof(name), stdin); // read string
printf("Name: ");
puts(name); // display string
return 0;
}
Salida
Enter name: Tom Hanks Name: Tom Hanks
Aquí, hemos usado fgets()
función para leer una cadena del usuario.
fgets(name, sizeof(name), stdlin); // read string
El sizeof(name)
resultados a 30. Por lo tanto, podemos tomar un máximo de 30 caracteres como entrada, que es el tamaño del nombre cadena.
Para imprimir la cadena, hemos usado puts(name);
.
gets()
La función también puede ser recibir información del usuario. Sin embargo, se elimina del estándar C.
Es porque gets()
le permite ingresar cualquier longitud de caracteres. Por lo tanto, podría haber un desbordamiento de búfer.
Pasar cadenas a funciones
Las cadenas se pueden pasar a una función de manera similar a las matrices. Obtenga más información sobre cómo pasar matrices a una función.
Ejemplo 3:pasar una cadena a una función
#include <stdio.h>
void displayString(char str[]);
int main()
{
char str[50];
printf("Enter string: ");
fgets(str, sizeof(str), stdin);
displayString(str); // Passing string to a function.
return 0;
}
void displayString(char str[])
{
printf("String Output: ");
puts(str);
}
Cadenas y punteros
Al igual que las matrices, los nombres de las cadenas se "descomponen" en punteros. Por lo tanto, puede usar punteros para manipular elementos de la cadena. Le recomendamos que compruebe las matrices C y los punteros antes de comprobar este ejemplo.
Ejemplo 4:cadenas y punteros
#include <stdio.h>
int main(void) {
char name[] = "Harry Potter";
printf("%c", *name); // Output: H
printf("%c", *(name+1)); // Output: a
printf("%c", *(name+7)); // Output: o
char *namePtr;
namePtr = name;
printf("%c", *namePtr); // Output: H
printf("%c", *(namePtr+1)); // Output: a
printf("%c", *(namePtr+7)); // Output: o
}
Funciones de cadena de uso común
- strlen() - calcula la longitud de una cadena
- strcpy() - copia una cadena a otra
- strcmp() - compara dos cadenas
- strcat() - concatena dos cadenas
Lenguaje C
- Cuerda C
- Espacios de nombres en la programación de C#
- Pasar matriz a una función en programación C++
- Operadores de programación en C
- Cadenas Java
- Cadenas de enumeración de Java
- C++ Cadenas:strcpy(), strcat(), strlen(), strcmp() EJEMPLOS
- Cadenas en C:cómo declarar variable, inicializar, imprimir, ejemplo
- Cadenas de Python:reemplazar, unir, dividir, invertir, mayúsculas y minúsculas
- Tutorial C
- Java - Clase de cadenas