String an der Stelle n Tauschen
-
Hallo,
ich experimentiere gerade an Strings rum und versuche an einer bestimmten Stelle n den String zu Tauschen. Der Programmablauf ist wie folgt aufgebaut.
Zuerst wird eine Zahl vom User eingelesen z.B.: die 3, welche angibt, an welcher Stelle der String
--> ich_habe_etwas\0
getauscht wird.
Dann wird von der Zahl aus, der Rechte Teil
--> habe_etwas
nach vorne gesetzt und der linke Teil
--> ich_
wird an den rechten drann gehängt. So dass es zum Schluss so aussieht:
--> habe_etwasich_\0
Mein ansatz steht unten aber ich kriege immer "Segmentation Fault"
Kann mir da einer Helfen?void ntausch(char text1[]){ int i, i1, n; char *first, *last, *tausch; tausch=text1; first=text1; i=strlen(text1); do { fflush(stdin); printf("An welcher Stelle soll getausch werden? von 0 bis max.%d\n",i); i1=scanf("%d",&n);; if (0==i1){ printf("Ihre Eingabe liegt nicht im Stringbereich!\n"); } fflush(stdin); } while(0==i1); last=strncpy(last,text1,n); // first=strstr(tausch,last); //Hier in diesen 4 Zeilen strcat(first,last); //habe ich irgendwo den fehler printf("\n%s\n",first); // }
-
#include <stdio.h> #include <stdlib.h> #include <string.h> void ntausch (char* text1) { int i, n; char *first, *last; first = text1; i = strlen (text1); do { fflush (stdin); printf ("An welcher Stelle soll getausch werden? von 0 bis max.%d\n",i-1); scanf ("%d",&n);; if (n >= i || n <= 0) { printf ("Ihre Eingabe liegt nicht im Stringbereich!\n"); fflush (stdin); } else { last = malloc (n+1); *(last+n) = 0; } }while (n >= i || n <= 0); last = strncpy (last, text1, n); first= strcpy (first, first+n); strcpy (first+(i-n), last); printf("\n%s\n", first); } int main() { char text1[] = "eine_moegliche_Loesung"; ntausch (text1); }
-
balduin schrieb:
fflush (stdin);
Troll
-
free (last); vergessen
-
Dankeschön hat geklappt und hat mir sehr geholfen.