scanf geht net... merkwürdiger Fehler !?
-
am besten ist es, wenn du nach jedem scanf()-aufruf ein
fflush(stdin);
oder ein
while(getchar()!='\n');
machst!
-
danke danke, funzt jetzt
<<
hmm unser leherer hat uns das mitm fflush(stdin); & mitm while(getchar()!='\n'); nie erklärt .. hätte man die aufgabe auch ohne das lösen können ?
-
So sollte es auch funktionieren
[cpp]#include <stdio.h>
#include <conio.h>void zeichen(int k, char z)
{
int i;
for(i=0; i<k; i++)
{
printf("%c", z);
}}
main()
{
int k;
char z;printf("wiviel??: ");
scanf("%i**\n**", &k);
printf("was??: ");
scanf("%c**\n**", &z);zeichen(k,z);
getch();
}
[/cpp]Ach ja, "wiviel" schreibt sich nach der neuen Rechtschreibung in etwa so: "wieviel"
-
chaosLT schrieb:
danke danke, funzt jetzt
<<
hmm unser leherer hat uns das mitm fflush(stdin); & mitm while(getchar()!='\n'); nie erklärt .. hätte man die aufgabe auch ohne das lösen können ?scanf("%d\n",...
ist eine einfache lösung.oder alles in einem scanf ist noch einfacher.
und fflush(stdin) ist nicht definiert, siehe Konsolen FAQ für eine bessere lösung.
nebenbei bemerkt: man verwendet oft auch gerne fgets() um die ganze zeile einzulesen und analysiert sie dann erst. scanf mag ich deshalb nicht so, weil eben genau solche fehler auftreten...
-
Shade Of Mine schrieb:
chaosLT schrieb:
danke danke, funzt jetzt
<<
hmm unser leherer hat uns das mitm fflush(stdin); & mitm while(getchar()!='\n'); nie erklärt .. hätte man die aufgabe auch ohne das lösen können ?scanf("%d\n",...
ist eine einfache lösung.oder alles in einem scanf ist noch einfacher.
und fflush(stdin) ist nicht definiert, siehe Konsolen FAQ für eine bessere lösung.
nebenbei bemerkt: man verwendet oft auch gerne fgets() um die ganze zeile einzulesen und analysiert sie dann erst. scanf mag ich deshalb nicht so, weil eben genau solche fehler auftreten...
yo , danke so hät ichs natürlich auch machen können, allerdings haben wir das noch net gelernt, wir lesen namen noch mit schleifen ein & aus, aba das mitm gets bzw fgets klappt super
-
Noch ne einfache Möglichkeit:
#include <stdio.h> #include <conio.h> void print_zeichen(int anzahl, char zeichen) { int i; for(i = 0; i < anzahl; i++) { printf("%c", zeichen); } } int main(void) { int anzahl; char zeichen; printf("Anzahl: "); scanf("%d", &anzahl); getchar(); printf("Zeichen: "); scanf("%c", &zeichen); getchar(); print_zeichen(anzahl, zeichen); getch(); }
-
Horst2 schrieb:
So sollte es auch funktionieren
[cpp] :
printf("wiviel??: ");
scanf("%i**\n**", &k);
:[/cpp]Sicher? Also bei mir funktioniert das unter lcc-win32 und gcc 3.4.2 (mingw) nicht!
-
ähm für funktionen braucht man doch normalerweise "prototypen" oder nicht?
-
jaymes schrieb:
ähm für funktionen braucht man doch normalerweise "prototypen" oder nicht?
Nicht, wenn die Implementierung vor dem ersten Aufruf erfolgt
(also "oberhalb" von main())Dumm nur, wenn sich die beiden Funktionen gegenseitig aufrufen sollen
-
gut, man lernt nie aus