Fehler 2 Pointer voneinander Subtrahieren [Solved]
-
Hi Leute,
Ich hab eine HTML Seite und möchte da eine variable
E-Mail auslesen (ändert sich mit jeder Seite).
Die seite ist hierbei in einem riesigem Char Array gespeichert
(char webSite[50000];)
Ich hab nun einen Pointer zum Start und zum Ende der Mail
volgendermaßen angelegt:char * startmail; char * endmail; startmail = strstr (webSite, startMailString); endmail = strstr (webSite, endMailString);Lasse ich mir nun die beiden pointer ausgeben
mit z.B. printf("%s", startmail);
klappt alles wunderbar und ich sehe bei startmail1234@gmail.com<table border="0" align="center" width="720" cellpadding="0" cellspacing="0" class="boxes">...und bei endmail
<table border="0" align="center" width="720" cellpadding="0" cellspacing="0" class="boxes">...Also direkt wo die Mail zuende ist...
nun möchte ich die Größe der Mail ausrechnen und hier liegt das Problem...int mailLength = (endmail - startmail); cout << "The mail is " << mailLength << " letters long!" << endl;output:
The mail is 212 letters long!Das kann aber garnicht sein....
Die mail ist nur 14 buchstaben lang -.-Ich hoffe ihr wisst da Rat,
danke schonmal
-
du substrahierst die adressen der beiden pointer im speicher. das ergibt irgendnen blödsinn, aber bestimmt nicht, was du haben willst.
kann anhand der beschreibung aber nicht so recht erkennen, was du haben willst. du holst dir nen string, wo ne mail anfängt und einen, wo sie aufhört. du willst wissen, wieviele zeichen zwischen diesen beiden teilstrings liegen? das musst du ausrechen. "länge" von char arrays holst du dir mit strlen()
-
thordk schrieb:
du substrahierst die adressen der beiden pointer im speicher. das ergibt irgendnen blödsinn, aber bestimmt nicht, was du haben willst.
das verstehe ich nicht,
siehe faq:int array[10] = {0,1,2,3,4,5,6,7,8,9}; int *p1 = array, *p2 = &array[4]; int num = p2 - p1; cout<<num<<endl; //Gibt 4 ausEigentlich sollte es keinen blödsinn ausgeben

Aber danke für die Idee mit strlen ich werd das mal probieren
//Edit
Ok Danke hat sich gegessen hatte vergessen einen Offset
dazuzuadieren und deshalb war der Wert zu hoch :-$
Jetzt funktioniert es
-
Die Berechnung stimmt so schon, füge nach der Berechnung mal folgendes ein:
if( startmail + 14 != endmail ) cerr << "Fehler!";
Edit:
Hätte gründlicher lesen sollen..
-
lolz schrieb:
Die Berechnung stimmt so schon, füge nach der Berechnung mal folgendes ein:
if( startmail + 14 != endmail ) cerr << "Fehler!";
Danke, das ist ne gute Idee

Man weiss ja nie bei so "generic" Sachen,
wenn mal ne Seite anders ist