Problem mit gets()!



  • Ich habe ein Problem mit Der gets() funktion sie wird einfach uebersprungen
    fals ich kein scanf() davor schreibe! WIESO???
    Hier ein beispiel:

    #include<stdio.h>
    #include<stdlib.h>
    
    void funk(int num);
    
    void main()
    {
    int num;
    
    	printf("Unesite broj  stringova:");
    	scanf("%d",&num);
    	funk(num);
    }
    
    void funk(int num)
    {
    char *string;
    int i=0;
    
    	while(i<num)
    	{
    		string=malloc(num);
    
    		if(string==NULL)
    		{
    		printf("Nema dovoljno memorije\n");
    		exit(1);
    		}
    		printf("\nUnesi string:\n");
    		scanf("%d");/*Ohne diese Zeile klapt es nicht obwohl        Sie  nutzlos ist???*/
    		gets(string);
    		puts(string);
    		i++;	
    	}
    }
    


  • Hallo,

    das Problem kommt daher: Nach der ersten scanf Eingabe (in main) liegt noch ein '\n' im stdin (also dem Eingabestream), das wird dann per gets eingelesen und deshalb hast du das Gefühl, die Eingabe wird "übersprungen".

    Wie kann man das beheben?:

    void clearStdin() {
      int c;
      while ((c=getchar()) != EOF && c != '\n');
    };
    

    Einfach nach einem scanf aufrufen 🙂

    MfG

    GPC


Anmelden zum Antworten