Pointer in Array bzw. Array aus Funktion auslesen
-
Also ich hab es jetzt Fertig!
aber ich verstehe deine lösung zu ha::ll::o nicht
wieso wird da nur das suffix o angezeigt du hast nicht viel verändert

Meine lösung is jetzt so:
#include<stdio.h> char *extract(char* input) { char* ptr; for(ptr = input; *ptr != '\0'; ptr++) { if(*ptr == ':') { if(*(ptr+1) == ':') { char* iptr = ptr+2; for (iptr; *iptr !='\0'; iptr++) { if(*iptr == ':') { if(*(iptr+1) == ':') { return iptr+2; } } } if(*iptr !=':') { return ptr+2; } } } } return 0; } int main() { char* suff=extract("hallo"); if(suff) printf("Das Suffix lautet %s", suff); else printf("Kein Suffix!"); getchar(); }
-
Okay ich habs verstanden, aber ich wäre im leben nicht selbst drauf gekommen...
Du verdammtes Genie

-
ach verdammt!
Stimmt....
okay deine lösung is da ziemlich elegant...
Vielen Dank hast mir sehr geholfen...! _D

-
Ok

nächste Frage
Ich möchte die Funktion jetzt als void methode und hab
void extract2(char* input, char** output)als ansatz gegeben...
void extract2(char* input, char** output) { char* ptr; for(ptr = input; *ptr != '\0'; ptr++) { if(*ptr == ':') { if(*(ptr+1) == ':') { *output = &*(ptr+2); } } } char* suff = *output; if(suff) printf("Das Suffix lautet %s", suff); else printf("Kein Suffix!"); }soweit siehts eig ganz nett aus aber ich hab da iwie echt ein problem mit diesen zeigen ... als ausgabe kann natürlich kein return mehr stehen.. jetzt soll ich das aber als pointer auf einen pointer ausgeben! was soll das sein? **char output -.-
Ich seh aber auch grad das ich einen einfachen pointer mit &*beschreib..
bitte ich bin so unbeholfen..
-
CrazyFisch schrieb:
Ok

nächste Frage
Ich möchte die Funktion jetzt als void methode und hab
void extract2(char* input, char** output)als ansatz gegeben...
Der Trick ist erstmal der richtige Aufruf:
int main() { char* suff; extract("h::al::lo",&suff); if(suff) printf("Das Suffix lautet %s", suff); else printf("Kein Suffix!"); return 0; }
-
Ja
ich weis nicht was ich sonst in dem void ausgeben soll den main aufruf hab ich soweit auch noch von dir vorhin aber ich weis net wie ich des machen sollzb an der stelle
*output = &*(ptr+2);bekomme ich immer nen fettes error bzw muss ich immer wenn der compiler an der stelle ist in abwürgen weil er sonst nichts macht
-
CrazyFisch schrieb:
bitte ich bin so unbeholfen..
Die Aufgaben sind kacke. Man weiß, was der Aufgabensteller sich vorgestllt hat, oder man weiß es nicht und steht vor einer Wand, die man selber nicht erklimmen kann.
-
CrazyFisch schrieb:
Ja
ich weis nicht was ich sonst in dem void ausgeben soll den main aufruf hab ich soweit auch noch von dir vorhin aber ich weis net wie ich des machen sollzb an der stelle
*output = &*(ptr+2);bekomme ich immer nen fettes error bzw muss ich immer wenn der compiler an der stelle ist in abwürgen weil er sonst nichts macht
*output = &*(ptr+2);
heisst
wo output hinzeigt (und output zeigt auf suff der main), da schreibe folgendes rein:
(soweit perfekt)
die Adresse des Anfangs des Suffix'. Passt doch.
-
Im moment sieht es so aus..
void extract2(char* input, char** output) { char* ptr; for(ptr = input; ptr != '\0'; ptr++) { if(*ptr == ':') { if(*(ptr+1) == ':') { *output = ptr+2; } } } output; } int main() { char* suff; extract2("h::al::l::o",&suff); if(suff) printf("Das Suffix lautet %s", suff); else printf("Kein Suffix!"); getchar(); }ich weis einfach nicht wie ich das jetzt zurückgeben soll..
-
CrazyFisch schrieb:
Im moment sieht es so aus..
void extract2(char* input, char** output) { char* ptr; for(ptr = input; ptr != '\0'; ptr++) { if(*ptr == ':') { if(*(ptr+1) == ':') { *output = ptr+2; } } } output; } int main() { char* suff; extract2("h::al::l::o",&suff); if(suff) printf("Das Suffix lautet %s", suff); else printf("Kein Suffix!"); getchar(); }ich weis einfach nicht wie ich das jetzt zurückgeben soll..
In der Laufbedingung fehlt der *
Sonst alles richtig.Die Zeile
output;bewirkt nichts und kann weg.
Edit: Keine Rückgabe nötig, weil
*output = ptr+2;schon direkt in die suff der main() schreibt.
*output=0;sollte noch an den Anfanng der extract2, um zu erkennen, wenn kein :: überhaupt da war.
-
Boar

Super geil Danke!
Wirklich vielen Dank hab endlich die pointer geschichte verstanden!
Naja wenigstens ein bischen
Vielen Lieben Dank!
