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

  1. La función GetLine lee una línea de hasta Lim carácteres, y retorna la longitud de la línea leída.
  2. La función CopyLine copia el arreglo de carácteres del primer argumento, en el segundo arreglo de carácteres.
  3. Notar que las cadenas de carácteres siempre terminan con un carácter nulo.

ICOM