0% encontró este documento útil (0 votos)
8 vistas9 páginas

Arreglos de Caracteres en Lenguaje C

El documento describe los arreglos de caracteres en C, también conocidos como cadenas. Explica que son arreglos especiales que almacenan caracteres terminados en nulo. Detalla cómo se declaran, leen, escriben y procesan las cadenas, incluyendo el uso de funciones como scanf, printf y gets. También incluye un ejemplo de programa que lee el nombre y calificaciones de un alumno, calcula su promedio y determina si está aprobado o reprobado.

Cargado por

Marcos Roket
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
8 vistas9 páginas

Arreglos de Caracteres en Lenguaje C

El documento describe los arreglos de caracteres en C, también conocidos como cadenas. Explica que son arreglos especiales que almacenan caracteres terminados en nulo. Detalla cómo se declaran, leen, escriben y procesan las cadenas, incluyendo el uso de funciones como scanf, printf y gets. También incluye un ejemplo de programa que lee el nombre y calificaciones de un alumno, calcula su promedio y determina si está aprobado o reprobado.

Cargado por

Marcos Roket
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

M. en C.

Marisol Hernández López Academia Computación

ARREGLOS DE CARACTERES
Son conocidos como cadenas de caracteres y es un tipo especial de arreglos, pues se trata de
un conjunto de datos tipo char, que termina con un caracter nulo(“\0”), los elementos de un
arreglo de tipo carácter se almacenan en forma contigua y subsecuente en la memoria de la
computadora y el índice del primer elemento es cero. Sin embargo, al ingresar los datos al
arreglo no se utiliza el índice, ni la estructura for, en su lugar la función de entrada maneja el
modificador de datos de cadenas “%s”.

Lenguaje C provee una librería que contiene el conjunto de funciones utilizadas para
procesamiento de cadenas de caracteres, esta es la librería string.h

Los identificadores de las cadenas de caracter se definen de acuerdo con lo que almacenan,
por que los elementos del arreglo no se procesan de forma individual o independiente como
lo hacen los arreglos numéricos, por ejemplo, se puede definir la cadena NOMBRE,
PALABRA, DIRECCION, APELLIDO, PRODUCTO, etc.

REPRESENTACIÓN EN EL DIAGRAMA DE FLUJO


Operaciones permitidas con cadenas:
Entrada: Salida: Evaluación de condición:

NOMBRE
NOMBRE
SI
CADENA[i]≠”A”

SINTAXIS DE DECLARACIÓN EN LENGUAJE C


Un arreglo de caracteres también tiene que declararse antes de ser utilizado en un programa
y de la misma forma que los arreglos numéricos se puede definir una constante de longitud
máxima para el arreglo, esta constante se define en las directivas del procesador con la
instrucción #define.

char nombre_cadena[longitud_de_cadena];

Ejemplos:
char nombre[30];
char apellido[MAX];
char palabra[MAX];
char frase[50];
M. en C. Marisol Hernández López Academia Computación

INSTRUCCIONES DE ENTRADA Y SALIDA PARA MANEJO DE CADENAS DE


CARACTERES
ENTRADA: Una cadena de caracteres se lee o se recibe como entrada con la función de
entrada de datos scanf(), utilizando el modificador de tipo de dato “%s”, donde el
modificador “s” significa string (cadena).

Sintaxis general:
scanf(“%s”,&nombre_cadena);

OBSERVAR: Aunque se trata de un arreglo las cadenas NO utilizan los corchetes con índice,
debido a que su procesamiento es conjunto. Únicamente se escribe el nombre de la cadena
que se quiere leer.

Ejemplo:
scanf(“%s”,&nombre); //Se recibe una cadena llamada nombre como entrada.
scanf(“%s”,&palabra); //Se lee una cadena llamada palabra que es introducida por el usuario.

SALIDA: Una cadena de caracteres se escribe o imprime como salida con la función de salida
de datos printf(), utilizando el modificador de tipo de dato “%s”, donde el modificador “s”
significa string (cadena).

Sintaxis general:
printf(“La cadena es: %s”,nombre_cadena);

OBSERVAR: Aunque se trata de un arreglo las cadenas NO utilizan los corchetes con índice,
debido a que su procesamiento es conjunto. Únicamente se escribe el nombre de la cadena
que se quiere imprimir.

Ejemplo:
printf(“La cadena es: %s”,nombre); //Se imprime una cadena llamada nombre.
printf(“La cadena es: %s”,palabra); //Se imprime una cadena llamada palabra que fue
introducida anteriormente.
M. en C. Marisol Hernández López Academia Computación

SUBRUTINA PARA CREAR UN ARREGLO DE CARACTERES

LEE_NOMBRE void LEE_NOMBRE(char nombre[ ])


{
printf(“Ingresa el nombre:”);
NOMBRE scanf (“%s”,&nombre);
}

FIN

SUBRUTINA PARA IMPRIMIR UN ARREGLO DE CARACTERES

VER_NOMBRE void VER_NOMBRE(char nombre[])


{
printf(“El nombre es: %s”,nombre);
NOMBRE }

FIN

PROGRAMA PRINCIPAL:
Codificación:
#include <stdio.h>
INICIO
#include <conio.h>
#define N 30

LEE_NOMBRE void LEE_NOMBRE(char [ ]);


void VER_NOMBRE(char [ ]);

void main ()
VER_NOMBRE
{
char NOMBRE[N];
LEE_NOMBRE(NOMBRE);
FIN VER_NOMBRE(NOMBRE);
getch();
}

OBSERVAR: El arreglo de caracteres o cadena se pasa como argumento de entrada a una


función igual que los arreglos numéricos, sólo se agregan los corchetes vacíos.
M. en C. Marisol Hernández López Academia Computación

Cuando se ejecuta el programa, este sólo aceptará los nombres que consten de una sola
palabra, es decir scanf() no podrá almacenar nombres como ANA MARIA, JOSE LUIS,
etc., debido a que el procesamiento de cadenas de caracteres contempla el espacio (barra
espaciadora) entre las palabras como el carácter nulo, lo que indicará que es el fin de la
cadena y el segundo nombre ya no podrá guardarse.

Solución: Podemos sustituir el uso de la función scanf() con la función de entrada de


cadena gets(), que significa get string(obtener cadena), la cual permite leer la barra
espaciadora como un carácter blanco y no como el carácter nulo.

Función de entrada modificada:


void LEE_NOMBRE(char nombre[ ])
{
printf(“Ingresa el nombre:”);
gets(nombre);
}

Ejemplo 1: Desarrollar un programa que recibe el nombre completo de un alumno, su


matricula y la calificación de 5 materias para calcular su promedio, el programa imprime, el
nombre, matricula, promedio e indica si es aprobado o reprobado.

INICIO DATOS_ALUMNO

Esta es la subrutina de creación de


arreglos, aquí se introducen los
DATOS_ALUMNO NOMBRE, datos: nombre, matrícula y un
MATRICULA
arreglo numérico que guarda las 5
calificaciones que se procesará en
PROMEDIO
otra subrutina.
i=0

VER_ALUMNO

SI
PARA MATE[i] i=i+1
FIN i<5

NO

FIN
VER_ALUMNO
PROMEDIO
M. en C. Marisol Hernández López Academia Computación

P,NOMBRE, MATRICULA
S=0

i=0

NO
IF
SI P≥6
PARA S=S+MATE[i] i=i+1
i<5
SI

NO “APROBADO” “REPROBADO”

P=S/5

FIN
FIN

En esta subrutina se realiza la


impresión o salida de datos, pero
además integra una estructura de
decisión para indicar si el alumno
está aprobado o reprobado.

Código en Lenguaje C:
#include <stdio.h>
#include <conio.h>
#define N 50
#define M 5

void DATOS_ALUMNO(char [],char [],float []);


float PROMEDIO(float []); //La función devuelve el promedio calculado.
void VER_ALUMNO(float &,char[],char []); //La función recibe la variable promedio
como entrada por eso la declaración float &.

void main()
{
char NOMBRE[N];
char MATRICULA[M];
float MAT[5];
float P;
DATOS_ALUMNO(NOMBRE,MATRICULA,MAT);
M. en C. Marisol Hernández López Academia Computación

P=PROMEDIO(MAT);
VER_ALUMNO(P,NOMBRE,MATRICULA);
getch();
}

void DATOS_ALUMNO(char nombre[],char matricula[],float mat[])


{
int i;
printf("Nombre del alumno:");
gets(nombre);
printf("Matricula del alumno: ");
gets(matricula);
for(i=0;i<5;i++)
{
printf("Materia[%d]:",i+1);
scanf("%f",&mat[i]);
}
}

float PROMEDIO(float mat[])


{
float s,p;
int i;
s=0;
for(i=0;i<5;i++)
{
s=s+mat[i];
}
p=s/5;
return p;
}

void VER_ALUMNO(float &prom,char nombre[],char matricula[])


{
printf("\nAlumno:%s",nombre);
printf("\nMatricula: %s",matricula);
printf("\nPromedio: %0.1f",prom);
if(prom>=6)
{
printf("\nAprobado.");
}
M. en C. Marisol Hernández López Academia Computación

else
{
printf("Reprobado.");
}
}

EJECUCIÓN DEL PROGRAMA:

SUBRUTINA CREARARREGLO

SUBRUTINA VERARREGLO

La subrutina promedio pasa el resultado a la función principal pero este no se muestra ya que
después este resultado es pasado a la función ver_arreglo para mostrarlo y mostrar también el
mensaje de APROBADO O REPROBADO

LENGUAJE C: OPERACIONES CON CADENAS DE CARACTERES

LIBRERÍA string.h
Las funciones para realizar procesamiento de cadenas de caracteres son las siguientes:
• strcpy(cadena1,cadena2);
Permite copiar la cadena2 en la cadena1, la cadena1 debe ser de longitud igual o
mayor que la cadena2; la función necesita 2 argumentos de entrada: cadena1 y cadena2.
• strcat(cadena1,cadena2);
Permite unir la cadena2 con la cadena1, la cadena1 debe ser de longitud doble para
aceptar la concatenación. La función necesita 2 argumentos de entrada: cadena1 y
cadena2.
• R=strcmp(cadena1,cadena2);
Compara las cadenas de entrada, devuelve un valor positivo si la cadena1 es mayor
que la cadena2, devuelve un valor negativo si la cadena1 es menor que la cadena2 y
M. en C. Marisol Hernández López Academia Computación

0 si las cadenas son iguales. La función necesita 2 argumentos de entrada: cadena1


y cadena2 y una variable de salida para recibir el resultado de la comparación.
• L=strlen(cadena);
Calcula la longitud de la cadena de caracteres, cuenta los datos hasta el caracter
nulo y devuelve el valor de conteo. La función necesita un solo argumento de
entrada y uno de salida para recibir el resultado del conteo de caracteres.

Programa 1:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define N 20

void INGRESA_NOMBRE(char [], char []);


void IMPRIMIR_NOMBRE(char [],char []);

void main ()
{
char NOMBRE1[N],NOMBRE2[N];
int R,L1,L2;
INGRESA_NOMBRE(NOMBRE1,NOMBRE2);
IMPRIMIR_NOMBRE(NOMBRE1,NOMBRE2);
printf("\n\n");
strcpy(NOMBRE1,NOMBRE2);
IMPRIMIR_NOMBRE(NOMBRE1,NOMBRE2);
printf("\n");
strcat(NOMBRE1,NOMBRE2);
IMPRIMIR_NOMBRE(NOMBRE1,NOMBRE2);
printf("\n\nNuevas cadenas:");
INGRESA_NOMBRE (NOMBRE1,NOMBRE2);
IMPRIMIR_NOMBRE(NOMBRE1,NOMBRE2);
R=strcmp(NOMBRE1,NOMBRE2);
printf("\nEL resultado es: %d",R);
L1=strlen(NOMBRE1);
printf("\nLongitud del nombre1= %d",L1);
L2=strlen(NOMBRE2);
printf("\nLongitud del nombre2= %d",L2);
printf("\n");
getch();
}
M. en C. Marisol Hernández López Academia Computación

void INGRESA_NOMBRE(char nombre1[], char nombre2[])


{
printf("\nIngresa el nombre1:");
gets(nombre1);
printf("\nIngresa el nombre2:");
gets(nombre2);
}

void IMPRIMIR_NOMBRE(char nombre1[],char nombre2[] )


{
printf("\nEl nombre1 es: %s",nombre1);
printf("\nEl nombre2 es: %s",nombre2);
}

También podría gustarte