Fehlermeldung Übungsprogramm sekunden.c

Chessmaster2010

Grünschnabel
Hi,

folgendes Programm habe ich (ab-)geschrieben:


/* sekunden.c*/
/* Ein /Programm, das eine Pause realisert.*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void sleep( int nbr_seconds );

int main( void )
{
int x;
int wait = 13;

/* Pause für eine Anzahl von Sekunden. Gibt für jede *
* gewartete Sekunde einen Punkt aus.

printf("Pause für %d Sekunden\n", wait);
printf(">");

for (x=1; x <= wait; x++)
{
printf("."); /* Einen Punkt ausgeben */
fflush(stdout); /* Ausgabe bei gepufferter Ausgabe erzwingen */
sleep( (int) 1 ); /* Eine Sekunde Pause */
}
printf( "Fertig!\n");
return (0);
}

/* Pausiert für eine festgelegte Anzahl von Sekunden */
void sleep( int nbr_seconds )
{
clock_t goal;

goal = ( nbr_seconds * CLOCKS_PER_SEC ) + clock();

while( goal > clock() )
{
;/* Schleifenanweisung */
}
}

Fehlermeldungen:

27 C:\Dev-Cpp\sekunden.c syntax error before string constant
27 C:\Dev-Cpp\sekunden.c conflicting types for 'printf'
27 C:\Dev-Cpp\sekunden.c a parameter list with an ellipsis can't match an empty parameter name list declaration
27 C:\Dev-Cpp\sekunden.c conflicting types for 'printf'
27 C:\Dev-Cpp\sekunden.c a parameter list with an ellipsis can't match an empty parameter name list declaration
27 C:\Dev-Cpp\sekunden.c [Warning] data definition has no type or storage class

Hoffe, es kann mir jemand weiterhelfen..))

Danke schon mal
 
Hallo,

bitte fasse nächstes mal deinen Quellcode in [ cpp] [/ cpp] Tags ein, so ist das einfacher zu lesen ;)
Ich denke mal, dass das Problem in Zeile 18 liegt. Du übergibst dem printf eine int, aber er erwartet eine double (%d).
Ändere das mal wie folgt ab und versuchs nochmal:

C++:
printf("Pause fuer %i Sekunden\n", wait);

Ausserdem stimmt was mit deinen Kommentaren nicht, schau dir mal die Zeilen 15-16 an, soltle wohl so aussehen:
C++:
/* Pause für eine Anzahl von Sekunden. Gibt für jede *
* gewartete Sekunde einen Punkt aus. */

Des weiteren ist deine sleep-Methode sehr ineffizient, mit dieser wird der Prozessor auf 100% Last laufen, weil er die ganze Zeit die Schleife abarbeitet.

Gruß
BK
 
Zuletzt bearbeitet:
Hi.
Ich denke mal, dass das Problem in Zeile 18 liegt. Du übergibst dem printf eine int, aber er erwartet eine double (%d).
Das ist falsch. %d steht für "decimal" und es wird ein signed int erwartet.

/edit @Chessmaster2010: hast du denn die Farben von Kommentaren in Dev-C++ verstellt? Man sieht doch relativ gut wo Kommentare anfangen und wie weit sie sich erstrecken...

Gruß
 
Zuletzt bearbeitet:
Hi BK,

es lag am Kommentar. Als ich dies abgeändert habe, lief es.
Danke nochmals. Wie kann ich denn die sleep-Methode besser machen?
Danke für Deine Antwort.
 
Du wirst nie außer zu schnellen Testzwecken ein Sleep Funktion benötigen, welche den Thread blockiert. Ansonsten arbeitet man mit Timern ( welche z.B. ein Interrupt erzeugen).

MFG
 
Zurück