Pular para o conteúdo

C join

Função que junta um array char** em apenas uma string, todos os elementos separados por um token.


join( {"Enzo", "Ferber"}, ':');  // só demostração!

Retorna: "Enzo:Ferber:"

;)

O arquivo que estou enviando tem o split.c e o join.c

Pra compilar,

$ gcc -c split.c
$ gcc -c join.c
$ gcc -c joinsplit.c
$ gcc -o joinsplit joinsplit.o split.o join.o
$ ./joinsplit Viva o Linux :

:)
Enzo de Brito Ferber EnzoFerber
Hits: 6.048 Categoria: C/C++ Subcategoria: Miscelânea
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Função que junta um array char** em apenas uma string, todos os elementos separados por um token.


join( {"Enzo", "Ferber"}, ':');  // só demostração!

Retorna: "Enzo:Ferber:"

;)

O arquivo que estou enviando tem o split.c e o join.c

Pra compilar,

$ gcc -c split.c
$ gcc -c join.c
$ gcc -c joinsplit.c
$ gcc -o joinsplit joinsplit.o split.o join.o
$ ./joinsplit Viva o Linux :

:)
Download joinsplit.tar.gz Enviar nova versão

Versões atualizadas deste script

Enzo de Brito Ferber

Versão 2 enviada por Enzo de Brito Ferber em 21/12/2012

Changelog: Script menor e melhor.

Agora trabalha com input do stdin, o que o torna facilmente utilizável com pipes na linha de comando.

$ echo $LS_COLORS | split | join

É exatamente igual a

$ echo $LS_COLORS

Sendo o 'split' o meu script, que também será atualizado.

Download join.tar

Esconder código-fonte

/* join.c
 *
 * Enzo Ferber
 * dez 2011
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

char *join ( char **elements, char n )
{
   register int i;
   int length = 0;
   char *all;
   char **s = elements, *a, *b; // references

   /* what length the whole string should have
    * +1 for each separator
    */
   while ( *s ) length += ( strlen( *(s++) ) + 1 );

   /* memory
    * +1 for the null terminating char 
    */
   all = (char *) malloc ( (length + 1) * sizeof(char));

   // error check
   if ( !all )
   {
      printf ( "# Error in malloc()\n");
      return NULL;
   }

   // new reference
   s = elements;

   // whole joined string
   b = all;
   
   /* 
    * @a = each element
    */
   while ( (a = *s++) )
   {
      /* 
       * copy the element into the joined string
       * @a - each character of the element
       */
      while ( *a ) *b++ = *a++;

      // end of each elements, a separating character
      *b++ = n;
   }

   // null-termination character
   *b = 0x0;

   // return the string
   return all;
}

Aterm multicolor v0.02

Função para ler nome.

Chuva de janelas

Converçor de Decimal para Binario

Pra quem gosta de RPG. Um sistema de lutas.

Nenhum comentário foi encontrado.

Contribuir com comentário

Entre na sua conta para comentar.