Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Cadenas en C:cómo declarar variable, inicializar, imprimir, ejemplo

¿Qué es una cadena en C?

A Cadena en C no es más que una colección de caracteres en una secuencia lineal. 'C' siempre trata una cadena como un solo dato aunque contenga espacios en blanco. Un solo carácter se define mediante la representación de comillas simples. Una cadena se representa mediante comillas dobles.

Example, "Welcome to the world of programming!"

'C' proporciona la biblioteca estándar que contiene muchas funciones que se pueden usar para realizar operaciones complicadas fácilmente en cadenas en C.

En este tutorial, aprenderá-

Cómo declarar e inicializar una cadena en C

Una C String es una matriz simple con char como tipo de datos. El lenguaje 'C' no admite directamente cadenas como tipo de datos. Por lo tanto, para mostrar una cadena en C, debe utilizar una matriz de caracteres.

La sintaxis general para declarar una variable como una cadena en C es la siguiente:

char string_variable_name [array_size];

La declaración clásica de cadenas se puede hacer de la siguiente manera:

 char string_name[string_length] = "string";

El tamaño de una matriz debe definirse al declarar una variable de cadena C porque se usa para calcular cuántos caracteres se almacenarán dentro de la variable de cadena en C. Algunos ejemplos válidos de declaración de cadena son los siguientes:

char first_name[15];    //declaration of a string variable
char last_name[15];

El ejemplo anterior representa variables de cadena con un tamaño de matriz de 15. Esto significa que la matriz de cadena C dada es capaz de contener 15 caracteres como máximo. La indexación de la matriz comienza desde 0, por lo tanto, almacenará caracteres desde una posición 0-14. El compilador de C agrega automáticamente un carácter NULL '\0' a la matriz de caracteres creada.

Estudiemos la inicialización de cadenas en C. El siguiente ejemplo demuestra la inicialización de cadenas en C,

char first_name[15] = "ANTHONY";
char first_name[15] = {'A','N','T','H','O','N','Y','\0'}; // NULL character '\0' 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', '\0'} ; /*Declaration as set of characters ,Size 6*/

En string3, el carácter NULL debe agregarse explícitamente y los caracteres están encerrados entre comillas simples.

'C' también nos permite inicializar una variable de cadena sin definir el tamaño de la matriz de caracteres. Se puede hacer de la siguiente manera,

char first_name[ ] = "NATHAN";

El nombre de Strings en C actúa como un puntero porque es básicamente una matriz.

Entrada de cadena:leer una cadena

Al escribir programas interactivos que solicitan al usuario una entrada, C proporciona las funciones scanf(), gets() y fgets() para encontrar una línea de texto ingresada por el usuario.

Cuando usamos scanf() para leer, usamos el especificador de formato "%s" sin usar "&" para acceder a la dirección de la variable porque el nombre de una 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);
}

Salida:

Enter your first name and age:
John_Smith 48

El problema con la función scanf es que nunca lee cadenas completas en C. Detendrá el proceso de lectura tan pronto como se produzca un espacio en blanco, avance de página, tabulación vertical, nueva línea o retorno de carro. Supongamos que damos una entrada como "Tutoriales de Guru99", entonces la función scanf nunca leerá una 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 una cadena que contiene espacios, usamos la función gets(). Obtiene ignora los espacios en blanco. Deja de leer cuando se llega a una nueva línea (se presiona la tecla Intro). 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;
}

Salida:

Enter your full name: Dennis Ritchie
My full name is Dennis Ritchie

Otra alternativa más segura a gets() 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;}

Salida:

Enter your name plz: Carlos
My name is Carlos

Los argumentos de fgets() son:

Salida de cadena:Imprimir/Mostrar una cadena

La función printf estándar se usa 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 fputs()

fputs() necesita el nombre de la cadena y un puntero al lugar donde desea mostrar el texto. Usamos stdout que se refiere a la salida estándar para imprimir en la pantalla. Por ejemplo:

#include <stdio.h>
int main()
{char town[40];
  printf("Enter your town: ");
  gets(town);
  fputs(town, stdout);
  return 0;}

Salida:

Enter your town: New York
New York

pone función

La función puts se usa para imprimir una cadena en C en un dispositivo de salida y mover el cursor de regreso a la primera posición. Una función puts 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 comparativamente simple que otras funciones.

La biblioteca de cadenas

La biblioteca estándar 'C' proporciona varias funciones para manipular las cadenas dentro de un programa. Estas funciones también se llaman manejadores de cadenas. Todos estos controladores están presentes dentro del archivo de encabezado .

Función Propósito strlen() Esta función se utiliza para encontrar la longitud de una cadena. Devuelve cuántos caracteres están presentes en una cadena excluyendo el carácter NULL.strcat(str1, str2) Esta función se utiliza para combinar dos cadenas para formar una sola cadena. Agrega o concatena str2 al final de str1 y devuelve un puntero a str1.strcmp(str1, str2) Esta función se utiliza para comparar dos cadenas entre sí. Devuelve 0 si str1 es igual a str2, menor que 0 si str1 str2.

Consideremos el siguiente programa que demuestra las funciones de la biblioteca de cadenas:

#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 equal\n");
}
else{
    printf("Strings are not equal\n");
}

//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:%s\n",strcpy(string3,string1));  //string1 is copied into string3
return 0;
}

Salida:

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, menor que 0 si str1 str2.
  • strncpy(str1, str2, n) Esta función se usa para copiar una cadena de otra cadena. Copia los primeros n caracteres de str2 a str1
  • strchr(str1, c):devuelve un puntero a la primera aparición de char c en str1, o NULL si no se encuentra el carácter.
  • strrchr(str1, c):busca str1 al revés y devuelve un puntero a la posición de char c en 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) Agrega (concatena) los primeros n caracteres de str2 al final de str1 y devuelve un puntero a str1.
  • strlwr():para convertir cadenas a minúsculas
  • strupr() :para convertir cadenas a mayúsculas
  • strrev() :para invertir la cadena

Convertir una cadena en un número

En la programación C, podemos convertir una cadena de caracteres numéricos en un valor numérico para evitar un error de tiempo de ejecución. La biblioteca stdio.h contiene las siguientes funciones para convertir una cadena en un número:

  • int atoi(str) Representa ASCII a entero; convierte str al valor int equivalente. Se devuelve 0 si el primer carácter no es un número o no se encuentran números.
  • doble atof(str) Representa que ASCII flote, convierte str al valor doble equivalente. Se devuelve 0.0 si el primer carácter no es un número o no se encuentran números.
  • long int atol(str) Representa ASCII a long int, Convierte str al valor entero largo equivalente. Se devuelve 0 si el primer carácter no es un número o no se encuentran números.

El siguiente programa demuestra la función atoi():

#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;}

Salida:

Enter a number: 221348
you enter 221348
  • Una declaración de puntero de cadena como char *string =“idioma” es una constante y no se puede modificar.

Resumen

  • Una cadena es una secuencia de caracteres almacenada en una matriz de caracteres.
  • Una cadena es un texto entre comillas dobles.
  • Un carácter como 'd' no es una cadena y se indica con comillas simples.
  • 'C' proporciona funciones de biblioteca estándar para manipular cadenas en un programa. Los manipuladores de cadenas se almacenan en el archivo de encabezado .
  • Una cadena debe declararse o inicializarse antes de usarla en un programa.
  • Hay diferentes funciones de cadena de entrada y salida, cada una de ellas tiene sus características.
  • No olvide incluir la biblioteca de cadenas para trabajar con sus funciones
  • Podemos convertir cadenas en números a través de atoi(), atof() y atol(), que son muy útiles para los procesos de codificación y decodificación.
  • Podemos manipular diferentes cadenas definiendo una matriz de cadenas en C.

Lenguaje C

  1. Cadenas Java
  2. Cadenas de enumeración de Java
  3. Cómo crear una lista de cadenas en VHDL
  4. Matrices en C++ | Declarar | Inicializar | Ejemplos de puntero a matriz
  5. C++ Cadenas:strcpy(), strcat(), strlen(), strcmp() EJEMPLOS
  6. Realloc () Función en la biblioteca C:¿Cómo usar? Sintaxis y ejemplo
  7. Función free () en la biblioteca C:¿Cómo usar? Aprende con el Ejemplo
  8. Método String Length () en Java:cómo encontrar con el ejemplo
  9. Cadenas de Python:reemplazar, unir, dividir, invertir, mayúsculas y minúsculas
  10. Java - Clase de cadenas
  11. C# - Cadenas