Noob Frage
-
Hallo erstmal,
bin ganz neu und grade erst über das Forum gestolpert und hoffe das ich euch mit ein paar dusseligen Noob fragen nerven darf
Ich versuche mich grade ein bisschen in C einzuarbeiten, normalerweise bin ich unter Linux in einigen Scriptsprachen zu Hause und möchte mich ein wenig bilden *lol*
Zur Zeit möchte ich eine kleine funktion schreiben die einen substring ausschneiden soll aber ich bin zu dusselig dafür. Vieleicht kann mir ja einer erklären was ich falsch machen ??
Hier mal mein Ansatz :
#include <stdio.h> #include <string.h> #include <stdlib.h> char substring(char *s,int start,int length) { int i; char sstring[length]; for(i=start;i<=start+length-1;i++) { strcat(sstring,(s+i)); } } int main(int argc, char *argv[]) { substring(argv[1],3,5); return(0); }
Ist nur ein Auszug daher gibts im moment keine Rückgabe
Achzoo kompiliert wird unter Linux mit nem gcc.Gruß und Dank
Chris
-
Aua....
Peinlich, Peinlich...
Das das oben gar nicht funzen kann ist mir auch grade aufgegangen
aber wie
kann ich sowas realisieren ???Gruß
Chris
-
Wieso benutzt du kein strstr()
mfg jmnd__
-
Bin noch nicht so funktionsfest
Aber ist strstr nicht nur um einen Teilsting in einem String zu suchen ???
-
Aber ist strstr nicht nur um einen Teilsting in einem String zu suchen ???
Funktionen die einen neuen (dyn. allokierten) c-string zurückgeben sind ein wenig problematisch, da sie wieder freigegeben werden müssen, was häufig leider übersehen wird.
Aber für deinen Fall ist es eig. kein Problem. Du weißt nach strstr() den Anfang (als charpointer), du weißt die Länge des Suchstrings, dann fehlt also nurnoch hein behrztes strncpy() ('\0' am ende noch reinstöpseln) und fertig.
jmnd__
-
Danke Dir. Kann aber leider nicht so ganz folgen. Habe jetzt noch ein wenig in der <string.h> gestöber und dann so gemacht
strncat(sstring,s+start,length);
falls es aber besser oder noch einfacher? geht bin ich für tipps offen
-
Hoppalala hab ich glatt das Problem falsch verstanden/gelesen. Irgendetwas hat mich dazu verleitet anzunehmen, dass du einen Substring suchst und diesen dann in einen neuen String speichern willst. Sorry
strncat(sstring,s+start,length);
Kann krachen oder zu unerwarteten Ergebnissen führen, wenn es zum erstenmal ausgeführt wird und sstring[0] != '\0' ist.
mfg jmnd__
-
Hi,
string ausschneiden würd ich so machen:
void LoescheSubstring(char *str, char *strzuviel){ // Länge ermitteln, damit ausgeschnitten werden kann int lang=strlen(strzuviel); // den Teilstring suchen und die Adresse des ersten // Treffers in 'bereich' sichern. // Wenn nichts gefunden, dann weiter zum return und // raus aus der Funktion if(char *bereich = strstr(str,strzuviel)) // Wenn was gefunden, den Rest der Zeichenkette durch kopieren der // einzelnen Buchstaben "heranziehen", der String, der zuviel ist // wird dabei überschrieben while ( *bereich=*(bereich+lang) )bereich++; // raus aus der Funktion; return; }
wenn mehrere gleiche Teilstrings gelöscht werden sollen, dann kann man das 'if' durch ein 'while ersetzen.
grüße Con@n