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