Arreglo de caracteres
El lenguaje C no posee como tipo estándar de variables a los Strings. Estos son manejados a través de arreglos de carácteres, que se caracterizan por ser terminados mediante un carácter nulo ('\0').
Para ejemplificar el uso de arreglos de carácteres, vamos a realizar un programa que lea líneas de un archivo e imprima la línea más larga encontrada.
Ejemplo:
ejem_arrchar.c
#include <stdio.h>
#define MAXLINE 1000 /* tamaño máximo de línea */
/* Prototipos de funciones usadas */
int GetLine(char s[], int Limite);
void CopyLine(char s1[], char s2[]);
main()
{
int Len, /* Longitud de la línea actual */
Max = 0; /* máxima longitud hasta el momento */
char Line[MAXLINE],
MaxLine[MAXLINE];
while((Len = GetLine(Line,MAXLINE)) > 0)
{
if(Len > Max)
{
Max = Len;
CopyLine(Line,MaxLine);
}
}
if(Max > 0)
printf("%s\n",MaxLine);
}
/* lee una línea con un máximo de Lim carácteres */
int GetLine(char s[], int Lim)
{
int c, i;
for(i=0;i<Lim-1 && (c=getchar()) != EOF && c != '\n'; i++)
s[i] = c;
if(c == '\n')
s[i++] = c;
s[i] = '\0';
return i;
}
/* copia un string en otro */
void CopyLine(char s1[], char s2[])
{
int i = 0;
while((s2[i] = s1[i]) != '\0')
i++;
}
Puntos a notar
- La función GetLine lee una línea de hasta Lim carácteres, y retorna la longitud de la línea leída.
- La función CopyLine copia el arreglo de carácteres del primer argumento, en el segundo arreglo de carácteres.
- Notar que las cadenas de carácteres siempre terminan con un carácter nulo.
ICOM