GNU/Linux >> Tutoriales Linux >  >> Linux

Tutorial de Programación en C Parte 5 - Variables de carácter

En los dos tutoriales anteriores, discutimos los conceptos básicos de las variables, incluida la forma en que ocupan la memoria. Pero nos enfocamos principalmente en números enteros y flotantes. En este tutorial, hablaremos sobre los caracteres (o variables de tipo char).

Las variables de tipo 'char' ocupan 1 byte (u 8 bits) en la memoria. Como mencioné anteriormente en el caso de 'int' y 'float', puede verificar la cantidad de memoria que ocupa un carácter en su sistema usando el siguiente programa en C:

#include <stdio.h>

int main (void)
{
printf("\n sizeof char in bytes is %u", sizeof(char));

return 0;
}

En mi sistema, el siguiente fue el resultado:

 sizeof char in bytes is 1                                                                                               

Ahora viene la cuestión de cómo aceptar caracteres como entrada del usuario y cómo imprimirlos en la salida. Bueno, para aceptar caracteres en la entrada, hay una función dedicada llamada 'getchar'. De manera similar, para imprimir caracteres individuales, tiene 'putchar'. El siguiente fragmento de código debería darle una mejor idea de cómo funcionan estas funciones:

#include <stdio.h>

int main (void)
{
int c;
c = getchar();
putchar(c);

return 0;
}

El código anterior, cuando se ejecuta, primero espera a que el usuario ingrese un carácter. Después de eso, simplemente genera el mismo carácter en la terminal.

Podría ser un poco sorprendente para usted que el valor que devuelve 'getchar' se almacene en un número entero, pero así es (la función devuelve un int). Pero siempre puedes comparar el valor devuelto por 'getchar' con un carácter. He aquí un ejemplo:

#include <stdio.h>

int main (void)
{
int c;
c = getchar();
if(c == 'a')
{
printf("matched");
}
else
{
printf ("doesn't match");
}
return 0;
}

Así que aquí, si el usuario ingresa 'a', entonces el programa imprime 'coincidencia' en la salida. De lo contrario, puedes ver 'no coincide'.

Ah, y sí, esta es la primera vez que usamos declaraciones 'if' y 'else'. Como ya habrá entendido, 'si' le permite ejecutar un conjunto de declaraciones si una condición es verdadera. Cuando falla la condición 'si', la ejecución del código ingresa automáticamente al bloque 'si no'. Tenga en cuenta que puede usar una declaración 'if' sin una declaración 'else', pero viceversa no es válida.

Ahora, volviendo a getchar y putchar, analicemos rápidamente cómo se pueden usar estas funciones para resolver problemas de la vida real. Digamos que desea contar la cantidad de líneas que un usuario proporcionó como entrada para su programa, puede hacerlo de la siguiente manera:

#include <stdio.h>

int main (void)
{
int c =0, counter=0;
c = getchar();
while(c != EOF)
{
c = getchar();
if(c == '\n')
counter = counter+1;
}
printf("\n The input contains %d lines \n", counter+1);
return 0;
}

Para comprender el programa anterior, primero debe saber qué es EOF. Bueno, EOF significa Fin de archivo. Se usa para indicar que el usuario ha terminado de ingresar la entrada.

Entonces, cuando usted, como usuario que proporciona información, haya terminado con el proceso, presione ctrl + d (un par de veces). Es esta acción la que produce un valor equivalente al de EOF, que se puede verificar en el programa, tal como lo hicimos nosotros.

Volviendo al programa, primero verifica el primer carácter de entrada para ver si es EOF. Si no es así, ingresa al ciclo while y verifica continuamente cada carácter hasta que obtiene un EOF. Durante todo este proceso, cada vez que obtiene un carácter de nueva línea (\n), aumenta la variable 'contador'.

Después de que se detecta EOF, el bucle while finaliza e imprimimos el número de líneas, cuál es mayor que el valor del contador.

La razón por la que agregamos uno a 'contador' en la función 'printf' es que la cantidad de líneas siempre es una más que la cantidad de caracteres de nueva línea (o en términos sencillos, la cantidad de veces que el usuario presionó la tecla 'Enter'). Por supuesto, esto supone que cada vez que el usuario presiona Intro, también ingresa algún texto.

Entonces, si le das a este programa una entrada como la siguiente:

Hello 
Welcome to HowtoForge
Thanks  

La salida sería:

The input contains 3 lines

Tenga en cuenta que nuestro código asume que el usuario proporcionará al menos una línea. Un par de casos de esquina no se manejan intencionalmente para simplificar las cosas. Una es cuando el usuario proporciona EOF sin proporcionar ningún otro carácter en la entrada y la otra es cuando se ha proporcionado una línea sin proporcionar un carácter de nueva línea.

Calcular el número de líneas es solo un ejemplo. También puede extender este código para calcular el número total de palabras ingresadas por el usuario. Considere esto como una tarea e intente codificarlo usted mismo. Como sugerencia, diría que considere espacios (' ') y tabuladores ('\t'), de forma similar a como consideramos líneas nuevas ('\n') para calcular el número de líneas.

En este tutorial, discutimos un poco más sobre los caracteres, incluido cómo usarlos, aceptarlos como entrada e imprimirlos en la salida. También discutimos un ejemplo en el que la función getchar nos ayudó a calcular el número de líneas en la entrada. Pruebe la tarea que le di en el último párrafo y avíseme si tiene alguna duda o consulta.


Linux
  1. Tutorial de programación de Linux C Parte 10 - Ámbitos variables

  2. Tutorial de programación de Linux C Parte 9:Cadenas

  3. Tutorial de programación de Linux C, parte 8:llamada por valor frente a llamada por puntero/dirección

  4. Tutorial de programación de Linux C, parte 8:llamada por valor frente a llamada por puntero/dirección

  5. Tutorial de programación de Linux C, parte 8:llamada por valor frente a llamada por puntero/dirección

Shell Scripting Parte 2:Aceptar entradas y realizar operaciones aritméticas de Shell

Tutorial de programación de Linux C Parte 15 - Números negativos y complemento 2s

Tutorial de programación de Linux C Parte 18:funciones recursivas

Cómo:Introducción a la programación:variables, tipos y manipulación de datos

Tutorial de Awk:Entienda las Variables de Awk con 3 Ejemplos Prácticos

Tutorial de variables Bash:6 ejemplos prácticos de variables locales y globales de Bash