English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
La forma de declarar una cadena es la siguiente:
char s[5];
Aquí, declaramos una5Una cadena de caracteres.
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.
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.
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.).
#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.
Puede usar la función fgets() para leer una línea de cadena. Y puede usar puts() para mostrar la cadena.
#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.
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.
#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); }
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。
#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 }