English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial básico de lenguaje C

Control de flujo de lenguaje C

Funciones en C

Arreglos en C

Punteros en C

Cadenas de caracteres en C

Estructuras de lenguaje C

Archivos de lenguaje C

C Otros

Manual de referencia de C

Cadenas de caracteres en C

En este tutorial, aprenderás a trabajar con cadenas en la programación en C. Aprenderás a declararlas, inicializarlas y usarlas en varias I / O (entrada/Operación de salida).

En la programación en C, las cadenas son secuencias de caracteres que terminan con un carácter nulo \0. Por ejemplo:

char c[] = "c string";

Cuando el compilador encuentra una secuencia de caracteres entre comillas dobles \0, por defecto, se adjunta un carácter de nulo al final.

¿Cómo declarar una cadena?

La forma de declarar una cadena es la siguiente:

char s[5];

Aquí, declaramos una5Una cadena de caracteres.

¿Cómo inicializar una cadena?

Puedes inicializar una cadena de varias maneras.

char c[] = "abcd";
char c[50] = "abcd";
char c[] = {'a', 'b', 'c', 'd', '\0'};
char c[5] = {'a', 'b', 'c', 'd', '\0'};

Vamos a dar un ejemplo más:

char c[5] = "abcde";

Aquí, intentamos asignar6Caracteres (el último carácter es '\0') asignados a char tienen5Un array de caracteres. Esto es una práctica incorrecta, nunca lo hagas.

Asignar valores a una cadena

En el lenguaje C, una vez que se declaran los arrays y las cadenas, no admiten la asignación de operadores.

char c[100];
c = "C programming";  // ¡Error! El tipo de array no se puede asignar.

Nota:Se utilizaLa función strcpy()En lugar de copiar la cadena.

Leer una cadena del usuario

Se puede usar la función scanf() para leer una cadena.

La función scanf() lee una secuencia de caracteres hasta que encuentra un espacio (espacio, carácter de nueva línea, tabulador, etc.).

Ejemplo1:scanf() lee una cadena

#include <stdio.h>
int main()
{
    char name[20];
    printf("Ingrese nombre: ");
    scanf("%s", name);
    printf("Tu nombre es %s.", name);
    return 0;
}

Resultado de salida

Ingrese el nombre: Dennis Ritchie
Tu nombre es Dennis.

Incluso si se ingresa Dennis Ritchie en el programa anterior, solo se encuentra “Dennis” en la cadena de nombres. Porque después de Dennis hay un espacio.

¿Cómo leer una línea de texto?}

Puede usar la función fgets() para leer una línea de cadena. Y puede usar puts() para mostrar la cadena.

Ejemplo2:fgets() y puts()

#include <stdio.h>
int main()
{
    char name[30];
    printf("Ingrese nombre: ");
    fgets(name, sizeof(name), stdin);  //Leer la cadena
    printf("Nombre: ");
    puts(name);    //Mostrar cadena
    return 0;
}

Resultado de salida

Ingrese nombre: Tom Hanks
Nombre: Tom Hanks

Aquí, hemos utilizado la función fgets() para leer la cadena del usuario.

fgets(name, sizeof(name), stdlin); //Leer la cadena

El resultado de sizeof(name) es30. Por lo tanto, podemos aceptar hasta30 caracteres como entrada, que es el tamaño de la cadena name.

Para imprimir la cadena, usamos put (name);

Nota:La función gets() también puede aceptar entrada del usuario. Sin embargo, ha sido eliminada del estándar C.
Esto se debe a que gets() le permite ingresar caracteres de longitud arbitraria. Por lo tanto, puede existir un desbordamiento de búfer.

Pasar la cadena a la función

Las cadenas se pueden pasar a la función de manera similar a los arrays. Conozca más sobrePasar un array a la función deMás información.

Ejemplo3:Pasar la cadena a la función

#include <stdio.h>
void displayString(char str[]);
int main()
{
    char str[50];
    printf("Ingrese cadena: ");
    fgets(str, sizeof(str), stdin);             
    displayString(str);     //Pasar la cadena a la función   
    return 0;
}
void displayString(char str[])
{
    printf("Salida de cadena: ");
    puts(str);
}

cadenas y punteros

Al igual que los arrays, el nombre de la cadena "decaimiento" se reduce a un puntero. Por lo tanto, puede usar punteros para operar con los elementos de la cadena. Recomendamos que revise este ejemplo antes de hacerloArreglos y punteros en C

Ejemplo4:cadenas y punteros

#include <stdio.h>
int main(void) {
  char name[] = "Harry Potter";
  printf("%c", *name);     // Salida: H
  printf("%c", *(name+1));   // Salida: a
  printf("%c", *(name+7));   // Salida: o
  char *namePtr;
  namePtr = name;
  printf("%c", *namePtr);     // Salida: H
  printf("%c", *(namePtr+1));   // Salida: a
  printf("%c", *(namePtr+7));   // Salida: o
}

Funciones de cadenas de caracteres comunes