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';