Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » verständnisfrage die 2te

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
11.05.2007, 01:15 Uhr
~newb
Gast


Hi,

danke für die letzte Hilfe, sorry wenn ich mit vielleicht etwas blöden Fragen aufwarte, aber ich verstehe folgende Codezeilen nicht:


C++:

gefunden = strstr(s1, "tag"); /* gefunden = Adresse von "tag." */
      if (gefunden != NULL)
        pos = gefunden - s1 + 1;    /* pos == 14, "tag" befindet sich
                                                  ab dem 14.Zeichen in s1 */







Hier wird die Verwendung der Funktion strstr erklärt, aber ich verstehe nicht ganz warum gefunden - s1 +1 gerechnet werden muss um die richtige Position von "tag" in s1 zu bekommen.

Vielen Dank.

Gruß
newb
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.05.2007, 08:03 Uhr
RedEagle



Der string (s1) liegt ja im Speicher an irgendeiner Adresse. z.B. 1000.
Der teilstring "tag" leigt ebenfalls an einer Adresse. z.B. 1014. Um nun die Relative Position des Teilstrings zu erhalten, muss von der Adresse des Teilstrings die Adresse des Strings abgezogen werden. z.B. 1014-1000 = 14


im RAM:

Das ist ein String
^           ^
1000        |
            1012


1012-1000 = 12
"String" steht an 12. Position der Zeichenkette "Das ist ein String"

Alle Zahlen sind Dezimal
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.05.2007, 11:18 Uhr
ao

(Operator)



Zitat von ~newb:
... warum gefunden - s1 +1 gerechnet werden muss um die richtige Position von "tag" in s1 zu bekommen.

In "normaler" C-Denke ist die Position 13, denn das erste Zeichen steht an Position 0. In C wird immer ab 0 indiziert, nur so ist die Äquivalenz von a[i] und *(a+i) plausibel.

Mach dir das am besten zu eigen, sonst bekommst du ganz sicher Probleme mit anderen C-Programmierern, und sie mit dir.

Man rechnet dann einfach

C++:
pos = gefunden - s1;



Gruß,
ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: