🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #124

Re: Operacje na stringach w C (C++)

#124
From: Andrzej Radecki
Date: Wed, 01 Sep 1999 19:47
53 lines
2397 bytes
Andrzej Radecki <radecki@wpk.p.lodz.pl> pisze:
>Czy są inne (bardziej zaawansowane) funkcje operujące na stringach w C niż
>te opisane w  "man  string"?  Chodzi  mi  głównie  o  operacje  wstawiania
>i wycinania części łańcucha (takie insert/delete od.. do..) ale nie tylko.

Ok..  ponieważ  nie  chciało  mi  się czekać na Waszą odpowiedź 'na prędce'
napisałem dwie funkcje, które robią to co opisałem wyżej.  Dołączam  je  do
postu - może komuś się przydadzą.

Pytania, które zadałem poprzednio oczywiście nadal są aktualne.


/*
 * Wstawia łańcuch 'source' do 'dest' na pozycji 'pos'
 * nie nadpisując danych. W przypadku gdy 'pos' jest
 * większe niż długość 'dest' łańcuch ten jest przedłużany
 * i wypełniany spacjami. Funkcja nie alokuje żadnych danych.
 * W szczególności należy się upewnić, że dla 'dest' jest
 * zaalokowane wystarczająco dużo miejsca.
 */
char *insstr(char *dest, const char *source, int pos)
{
   int i;
   int dlength=strlen(dest);
   int slength=strlen(source);
   if (pos > dlength) {   // wstawianie za końcem stringa
      for (i=dlength; i < pos + slength; i++)
	*(dest+i) = ' ';
      *(dest+(++i)) = '\0';
   } else memmove(dest+pos+slength, dest+pos, dlength-pos+1);
   memcpy(dest+pos,source,slength);
   return dest;
}

/*
 * Usuwa (nie zamazuje!) z łańcucha 'dest' 'count' znaków
 * zaczynając od znaku na pozycji 'pos'.
 */

char *delstr(char *dest, int pos, int count)
{
   int dlength=strlen(dest);
   if (dlength < pos + count) // ucięcie końcówki
     *(dest+pos)='\0';
   else memmove(dest+pos, dest+pos+count, dlength-count+1);
   return dest;
}

Pozdrawiam,
-- 
(    /6/  Andrzej Radecki
 ====  \  radecki@wpk.p.lodz.pl
/   |     http://www.wpk.p.lodz.pl/~radecki
Technical Details
Message-ID: <slrn7sr0md.9l.radecki@radek.localdomain>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!radek.localdomain!radecki
References: <slrn7sq3rk.9l.radecki@radek.localdomain>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!radek.localdomain!radecki
From: radecki@wpk.p.lodz.pl (Andrzej Radecki)
Newsgroups: pl.comp.os.linux.programowanie
Subject: Re: Operacje na stringach w C (C++)
Date: 1 Sep 1999 19:47:25 GMT
Organization: home
Lines: 53
Message-ID: <slrn7sr0md.9l.radecki@radek.localdomain>
References: <slrn7sq3rk.9l.radecki@radek.localdomain>
NNTP-Posting-Host: pppa52.lodz.tpnet.pl
Mime-Version: 1.0
User-Agent: slrn/0.9.5.7 (UNIX)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit