Segmentation Fault
-
Hallo!
Ich möchte in meiner Funktion zwei Strings aneinanderhängen mit strcat, jedoch nur wenn ein % gelesen wird(was ich in der if abprüfe).
So sieht sie aus:
int u=0; char *input_str = "hallo"; char *s1 = malloc( sizeof(char)*strlen(input_str) ); for (u; line[u]!= '\0'; u++) { if (strcmp(line[u], "%") == 0) { strcat(s1,input_str); }else { } }
Bei diesem Code bekomm ich dauernd ein Segmentation Error. Ich habe jetzt lange überlegt und ein bisschen rumgespielt. Wenn ich den strcat Befehl vor die if Anweisung setzte funktioniert es, aber der Zweck ist damit leider nicht erfüllt. Weiß irgendjemand woran das liegen kann?
MfG
Dosunmu
-
Mach mal
char *s1 = malloc(strlen(input_str) + 1); *s1 = '\0';
bevor du damit weiterarbeitest.
-
Danke für die rasche Anwort!
Ich bin aber gerade draufgekommen das solange die if Anweisung leer ist kein Fehler auftritt und wenn ich z.B. nur ein printf reinschreibe wirft er mir schon einen Segmentation Fault.
Was kanns den bitte da haben?
-
Was genau ist eigentlich 'line'? Und wieso greifst du auf dessen Elemente einmal als char (in der Abbruchbedingung der for()-Schleife) und einmal als String (in der if-Anweisung) zu?
Außerdem steht noch zu vermuten, daß du für s1 zu wenig Platz reserviert hast (zumindest für den Null-Terminator - eventuell kann es auch vorkommen, daß du in der Schleife mehrere Kopien von input_str zusammenhängen mußt).