problem mit scanf bitte helft mir



  • hi leutz,

    #include<stdio.h> //Bibliotheken einbinden, hier die standart Ein- u. Ausgabe
    #include <conio.h> //für getch
    
    int funktion(int);
    
    int main () 
    {
    	char e;
    	int a=0,c;
    	char felder[20];
    
    	do
    	{
    		a=0;
    		printf("\ndein Vorname:");
    		scanf("%s",&felder);
    		printf("wie oft soll wiederholt werden?");
    		scanf("%d",&c);
    		do
    		{
    			printf("%s\n", felder); //Ausgabe auf dem Bildschirm
    			a=funktion(a);
    		}while(a<c);
    
    	[b]printf("nochmal? j/n");
    	scanf("%c", &e);[/b]
    	}while(e=='j'||e=='J');
    
    return(0); //da int-Funktion, wird ein Rückgabewert erwartet, wir geben 0 zurück
    }
    
    int funktion(int z)
    {
    	z++;
    	return(z);
    }
    

    mein problem ist, dass ich meine programmabbruchbedingung nicht hinbekomm. an der fetten stelle beendet sich das programm.
    die äußere do-while wird nicht zuende geführt. direkt hinter "nochmal? j/n" is schluss.
    wenn ich mit e=getch(); arbeite funktioniert alles bestens, will es aber mit scanf haben. was mach ich falsch?



  • scanf() liest das nächste Zeichen im Eingabepuffer - und das dürfte noch das '\n' sein, was nach der Eingabe von c übriggeblieben ist. Also mußt du den Eingabepuffer per fgetc() ausräumen.

    PS: Übrigens mußt du bei String-Eingaben keine Adresse angeben - 'felder' wird schon umgewandelt in die Adresse des Array-Anfangs.



  • hast wohl noch 0x0d und/oder 0x0a im tastaturbuffer und das ist ja weder 'j' noch 'J'. aber nimm doch 'getch()' wenn's das tut...



  • teste hier hal gerade ein wenig rum und frag mich warum ich das nich mit scanf hinbekomme. bin halt vom c++ wieder zum c gekommen. das haben wir gerade in der schule.

    habs mal mit fgetc() oder fgetch() versuct aber keinen erfolg gehabt. in c++ gehts ya auch mit cin. nur das scanf streikt.

    könnte mir einer den code richten damit es mit scanf geht



  • CStoll schrieb:

    scanf() liest das nächste Zeichen im Eingabepuffer - und das dürfte noch das '\n' sein, was nach der Eingabe von c übriggeblieben ist. Also mußt du den Eingabepuffer per fgetc() ausräumen.

    ^^ genau daran scheitert dein Programm im Moment.



  • 'fgetc' : function does not take 0 parameters
    wenn ich einfach nur fgetc(); schreib und

    'fgetc' : cannot convert parameter 1 from 'char' to 'struct _iobuf *'
    Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
    Error executing cl.exe.
    bei fgetc(e);

    setz ichs an die falsche stelle oder ahndhabe ich das fgetc komplett falsch? habs eine zeile vor scanf("%c", &e);

    #include<stdio.h> //Bibliotheken einbinden, hier die standart Ein- u. Ausgabe
    //#include<iostream.h> //nur in c++ für cin cout
    #include <conio.h> //für getch
    
    int funktion(int);
    
    int main () //Hauptprogramm aufrufen
    {
    	char e;
    	int a=0,c;
    	char felder[20];
    	//	float b=5.5;
    
    	do
    	{
    		a=0;
    		printf("dein Vorname:");
    		scanf("%s",&felder);
    		printf("wie oft soll wiederholt werden?");
    		scanf("%d",&c);
    		do
    		{
    			printf("%s", felder); //Ausgabe auf dem Bildschirm
    			a=funktion(a);
    		}while(a<c);
    
    	printf("nochmal?j/n");
    	fgetc(e);
    	scanf("%c", &e);
    //	e=getch();
    /*	cin>>e;*/
    	}while(e=='j'||e=='J');
    
    return(0); //da int-Funktion, wird ein Rückgabewert erwartet, wir geben 0 zurück
    }
    
    int funktion(int z)
    {
    	z++;
    	return(z);
    }
    


  • Hast du mal etwas von "Dokumentationen" oder "Manual Pages" gehört? Dort solltest du mal nachlesen, was für Parameter man: fgetc() erwartet.



  • Und/oder die Methode von c.rackwitz in den FAQ benutzen: Click



  • yesn das funktioniert, danke schön, schneller suport hier, das forum is ma gebookmarkt


Anmelden zum Antworten