strings inkl. leerzeichen einlesen...
-
hey forum, der titel beschreibt eigentlich schon mein aktuelles problem:
will nen string, nen ganzen satz mit leerzeichen drin an einem stück einlesen/abspeichern. scanf bockt da ja erstmal, das liest nur bis zum ersten leerzeichen ein, hatte mal ein beispiel gesehen was so oder so ähnlich aussah:
scanf("%20s",stringvar1);
das liest dann nur 20 zeichen ein, egal was. bei mir is aber vorher nicht bekannt wieviel eingelesen wird, ich speichere übrigens in char-zeigern.
hab denn mal was mit gets() probiert aber das geht auch nicht:#include<stdio.h> char *verkettung(char *string1, char *string2); int main(void){ char *string1, *string2; printf("\nBitte ersten String eingeben: "); gets(string1); printf("\nJetzt den zweiten string bitte:\n"); rewind(stdin); gets(string2); printf("\nVerkettung der beiden strings ergibt %s",*verkettung(string1, string2)); } char *verkettung(char *string1, char *string2){ int laenge1, laenge2; char *ergebnis; laenge1 = strlen(string1); laenge2 = strlen(string2); *ergebnis = malloc (laenge1 + laenge2) *sizeof(int); *ergebnis = string1 && string2; }
ausführung:
Bitte ersten String eingeben: test a Jetzt den zweiten string bitte: 9014: binding file ./tag9_2 to /lib/libc.so.6: normal symbol `rewind' [GLIBC_2.0] Segmentation fault
-
Hallo,
du hast nur einen Zeiger, für den kein Speicher reserviert ist. Das machst du so:
string1 = malloc(200) // Platz für 200 Zeichen (Bytes) reservieren // Oder du nimmst ein Array: char string1[200];
-
benutze fgets um die ganze Zeile zu lesen, dann kannst du sie parsen