Tema: Re: blyn stringai
Autorius: Tomis
Data: 2011-01-19 09:19:45
O jei netaupant ir naudojant strcspn dayt taip:

tmp[strcspn( tmp, ".")]='\0';   //tekstas iki tasko
tmp[strcspn( tmp, " ")]='\0';   //tekstas iki tarpo

didelis blogis?

Kazkaip megstu vienam veiksmui atlikt vienos eilutes uzrasymus.

On Tue, 18 Jan 2011 17:49:42 +0200, saimhe <oh.no@oh.my> wrote:

>> O siaip is esmes labai kreivai as cia viska darau ar cia taip ir turi  
>> but? :)
>
>    Išmoksi.
>    Ekonomiškiau:
>
> k = strchr(tmp1, '.') - tmp1;    //bus labai blogai, jei neras :)
> memcpy(tmp, tmp1, k);
> tmp[k] = '\0';
>
>    strcspn skirta ieškoti vieno stringo kitame. Bet kuriuo atveju  
> sąnaudos
> bus didesnės, net jei ieškomas stringas iš vieno simbolio.
>    strncpy kopijuoja n arba iki '\0'. Gali būti, kad pirma susiranda tą
> '\0', pasirenka mažesnį n ir daro bloko kopijavimą, kuris daugelyje
> architektūrų yra daugiau mažiau optimizuotas registrų lygyje. Taip pat  
> nėra
> garantijos, kad prikabins '\0'. Todėl memcpy plius priskyrimas padarys tą
> patį su mažesnėm sąnaudom.
>
>
>    Tarpus pabaigoje galima nukąsti šitaip:
>
> for (k = strlen(tmp1) - 1; k >= 0; k--)
>     if (tmp[k] != ' ')
>     {
>         tmp1[k + 1] = '\0';
>         break;
>     }
>
>
>> strcpy ( tmp,"" );
>
>   tmp[0] = '\0';