Problem ze stringiem

0

Cześć mam takie pytanko.

Mam sobie taki string: char buffer[40] = "C:\katalog1\katalog2";

i mam jeszcze dwa buffery: char buffor2[20], buffor3[20];

Pytanie jest takie jak w tym stringu wyszukać wyraz pomiędzy znakami "" czyli "katalog1" tak aby móc wpisać to do buffor2 i jak sam wyraz "katalog2" znalezc aby wpisać fo do buffora3 ???? Czyli program po wykananiu powinien wyglądać tak:

buffer == "C:\katalog1\katalog2";
buffor2== "katalog1"
buffor3 == "katalog2"

0

Czesc!
Aby to tak wygladalo to najlepiej poszukac najpierw znaku dzielenia:
int i=0;
while (buffer[i] != "") i++;

int j=i+1;
i=0;
while (buffer[j] != "")
{
buffer2[i] = buffer[j];
i++;
j++;
}

j++;
i=0;
while (buffer[j] != "")
{
buffer3[i] = buffer[j];
i++;
j++;
}
to jest taka wersja truche bylejaka, ale powinno dzialac
Pozdrowienka :-)

0

Zapwene chodziło Ci o

char buffer[40] = "C:\katalog1\katalog2";

Oto rozwiązanie:
[code]strtok(buffer,"\");
strcpy(buffor2, strtok(NULL, "\"));
strcpy(buffor3, strtok(NULL, "\"));[/code]Ponieważ strtok modyfikuje tablicę podaną jako paramter, to jeśli potrzebujesz oryginału, powinieneś stworzyć jej kopię i na niej operować.


Bogi: widać naleciałości z Pascala :-)

0

Mój kod jest dłuższy , ale za to odporny na niektóe "wyjątkowe" stringi ;)
Zamieszczam na stronie , bo forum ma problemy z niektórymi znakami :
http://trouble4u.w.interia.pl/kod.html

0
  1. Tak z ciekawości - możesz podać przykład stringu, z którym moje rozwiązanie by sobie nie poradziło? Może się czegoś nauczę :-)
  2. Mój sposób ma nad Twoim pewną przewagę. Jeśli na ścieżce będzie więcej katalogów niż 2, to u mnie wystarczy dla każdego dodać jedną linijkę[code]strcpy(buffor<font color="blue">x</span>, strtok(NULL, "\"));[/code] a u Ciebie po 2 pętle while oraz zerowanie zmiennej j :-P
0

Oj Marooned , no wiem , że jesteś lepszy , wiem ;)
Napisałem programik dla Bolka , to czemu ma sie zmarnować ;)
Oczywiście , że twój kodzik jest lepszy , malutko zajmuje , łatwy w rozbudowie jak sam mówisz i ślicznie wygląda . Ale mój kod , w przeciwieństwie do waszych dobrze radzi sobie z takimi stringami :
[code]"c:\katalog1"
"c:\katalog1" [/code]
:p
A jak twój skompilowałem i wrzuciłem ten string to gdyby nie super , extra niesamowity i stabilny XP , musiałbym nacisnąć ten najmniej chętnie używany przycisk na obudowie ;) .

//Wcale nie uważam się za lepszego :-|. Po prostu byłem ciekaw, jakie to stringi - m.M
///Ale ja cie uważam ;) , a miałem racje z tymi stringami ??

0

"c:\katalog1"
"c:\katalog1"

Hmm. Wystarczy na początek:
a = strlen(buffer);
if (buffer[a] == '')
buffer[strlen(buffer)-1] = 0;

I już :)

0

a = strlen(buffer);
if (buffer[a] == '')
buffer[strlen(buffer)-1] = 0;

Dryo , twój warunek nigdy nie zostanie spełniony .
Bo buffer[strlen(buffer)] zawsze jest równy znakowi końca textu

0

Dryo , twój warunek nigdy nie zostanie spełniony .
Bo buffer[strlen(buffer)] zawsze jest równy znakowi końca textu

Ano rzeczywiście. Zapomniałem odjąć 1 :P Mój błąd

1 użytkowników online, w tym zalogowanych: 0, gości: 1