Article View: pl.comp.os.linux.programowanie
Article #124Re: Operacje na stringach w C (C++)
From: Andrzej Radecki
Date: Wed, 01 Sep 1999 19:47
Date: Wed, 01 Sep 1999 19:47
53 lines
2397 bytes
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!radeckiReferences:
<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