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


Anmelden zum Antworten