 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
mitja100 Član

Pridružen-a: Sre 12 Apr 2006 20:45 Prispevkov: 12 Aktiv.: 0.05
|
Objavljeno: Ned Maj 21, 2006 6:25 pm Naslov sporočila: C vprašanje |
|
|
Pozdravljeni. Imam eno banalno vprašanje, ker ne obvladam C-ja dovolj dobro.
Imam poljubno dolg string, v katerem se na poljubnem mestu 2x pojavi znak narekovaj. Vmes je nekaj, kar bi rad prebral.
Preštudiral sem funkcije v string.h, ampak največ, kar lahko dobim, je index prvega narekovaja.
Ker sem delal včasih z VB si predstavljam kake LTrim ali RTrim funcije.
Hvala za pomoč.
Mitja
PS: sicer pa delam z CodeVision-om |
|
Nazaj na vrh |
|
 |
Djurodrljaca Član

Pridružen-a: Pet 19 Dec 2003 16:31 Prispevkov: 393 Aktiv.: 1.66 Kraj: Mengeš
|
Objavljeno: Ned Maj 21, 2006 7:35 pm Naslov sporočila: |
|
|
Ko dobiš ta index se moraš potem premakniti za en naslov naprej in od tam naprej iskati naslednji narekovaj, lahko pa napišeš svojo funkcij. |
|
Nazaj na vrh |
|
 |
mitja100 Član

Pridružen-a: Sre 12 Apr 2006 20:45 Prispevkov: 12 Aktiv.: 0.05
|
Objavljeno: Ned Maj 21, 2006 7:56 pm Naslov sporočila: |
|
|
Hvala. Ugotovil sem, da imam tudi funkcijo, s katero poiščem zadnji narekovaj. Ampak kaj, ko imam v stringu 2x med narekovaju nekaj, kar moram ven dobit.
Kar dober del noči bi mi prihranil, če mi poveš, kako se premaknem naprej po tem stringu in kako potem, ko bom imel index prvega narekovaja in index drugega narekovaja, to vmes spraviti v drug string.
Hvala.
Mitja |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Ned Maj 21, 2006 7:58 pm Naslov sporočila: |
|
|
Poznaš VB-jev str$ = Mid(string, start, length)? Oz bolje rečeno str$ = Mid(string, start, 1)? Namreč ta ukaz je čisto enak kot str = string[start]. Stringi so v C-ju kar array-i char-ov, zato lahko do elementov dostopaš na čisto enostaven način.
Npr. lahko narediš nekaj takega:
Koda: |
char besedilo[] = "sdfadadfasd\"dgfsd\"afg";
int i=0;
int start, end;
char vnarekovajih[20]="";
while( besedilo[i++]!=34) if (besedilo[i]==0) break;
start = i;
while( besedilo[i++]!=34) if (besedilo[i]==0) break;
end = i-2;
for (i=start; i<=end; i++)
{
vnarekovajih[i-start]=besedilo[i];
}
vnarekovajih[i]=0;
printf("\nZnotraj: %s", vnarekovajih);
|
|
|
Nazaj na vrh |
|
 |
mitja100 Član

Pridružen-a: Sre 12 Apr 2006 20:45 Prispevkov: 12 Aktiv.: 0.05
|
Objavljeno: Ned Maj 21, 2006 9:06 pm Naslov sporočila: |
|
|
Najlepše hvala NeoTO.
Narobe sem razmišljal in iskal na napačnem mestu.
Sem vmes za idejo uporabil že tvojo prvo verzijo, ki mi je bila v veliko pomoč.
Ko pa sem hotel napisat odgovor, sem videl, da si kodo popravil in sedaj je čisto copy paste C koda.
Glede na to, da sem iskal rešitev čisto drugje, bi verjetno danes veliko manj spal, kot bom sedaj.
Res hvala za pomoč.
mitja |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|