Forum: Compiler & IDEs sprintf-Warning


von Thomas N. (thomas8443)


Lesenswert?

Hallo!

Ich verwende in meinem Programm den Befehl "sprintf"
Das Programm funktioniert damit einwandfrei, jedoch bekomme ich für jede 
Zeile mit "sprintf" folgende warning:

../modus.c:68: warning: incompatible implicit declaration of built-in 
function 'sprintf'

Wie schon gesagt, das programm funktioniert trotzdem einwandfrei...es 
ist aber totzdem störend wenn man beim compilieren 20 warnings deswegen 
bekommt!

Hier eine Beispiel aus dem Programm:

char string[20];
int stopZeit = 10;
sprintf(string,"Zeit: %d\r",stopZeit);

DANKE für eure Mithilfe!

glg tommy

von Stefan B. (Gast)


Lesenswert?

Du hast vermutlich das #include ... mit der Datei vergessen, in der der 
Prototyp von sprintf deklariert wird.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Stefan B. schrieb:
> Du hast vermutlich das #include ... mit der Datei vergessen, in der der
> Prototyp von sprintf deklariert wird.

<stdio.h>

von Thomas N. (thomas8443)


Lesenswert?

reicht normal nicht <String.h> aus?

von Klaus W. (mfgkw)


Lesenswert?

erstens string.h und nicht String.h, und zweitens wieso string?
snprintf ist in stdio.h, siehe Doku dazu...

von yalu (Gast)


Lesenswert?

Klaus Wachtler schrieb:
> erstens string.h und nicht String.h, und zweitens wieso string?
> snprintf ist in stdio.h, siehe Doku dazu...

Naja, die Frage von Thomas ist schon berechtigt: Von der Logik her
müssten sprintf und snprintf in string.h deklariert sein, da es sich
dabei um Stringmanipulations- und nicht um I/O-Funktionen handelt. Da
sie aber mit printf und fprintf eine große gemeinsame Codebasis haben,
hat man sie eben mit diesen zu einer Gruppe zusammengefasst.

von Klaus W. (mfgkw)


Lesenswert?

ok, aber mein Gemecker ist wohl auch berechtigt m.E..

Man programmiert etwas, bekommt in der Zeile mit snprintf
eine Fehlermeldung, daß mit der Deklaration von snprintf
etwas nicht stimmt, schaut daraufhin nicht in der Doku nach,
fragt in einem Forum, bekommt die Lösung gesagt, wundert
sich immer noch, daß der Fehler auftritt und schaut auch
dann noch nicht in die Doku.
Wie will man so mit Programmieren weiterkommen?
Bei jeder neuen Quelltextzeile wieder fragen?

Das ist ja nicht das erste und auch nicht das letzte
Unlogische an C. Ohne ein Buch oder minimale Online-Doku
wird das halt nichts.

Es ist ja nicht mal böse gemeint. Aber der Hinweis, mal
selber etwas zu lesen, ist manchmal schon angebracht.

von Klaus W. (mfgkw)


Lesenswert?

Mag ja sein, daß es eine alte Platte von mir ist, immer
auf Doku zu verweisen.

Hatte ich mich doch unlängst erdreistet, in einer Klausur
nach dem alten Freund fork() zu fragen.
Und das kommt dann dabei raus...
http://mfgkw.dyndns.org/siehe_man_fork.jpg

von Hc Z. (mizch)


Lesenswert?

:) „man fork” ist ganz richtig, dort steht doch alles ...

Immerhin: dort wäre gleich am Anfang klar und deutlich gestanden, dass 
man <unistd.h> dafür includen muss (wie <stdio.h> bei „man snprintf”)...

von yalu (Gast)


Lesenswert?

Klaus Wachtler schrieb:
> ok, aber mein Gemecker ist wohl auch berechtigt m.E..

Natürlich ist es das. Eigentlich hätte die Frage des TE ja lauten
müssen:

  "Ich habe bei der Verwendung von sprintf die Warnung "..." bekommen
  und beim Lesen der Dokumentation festgestellt, dass man dafür stdio.h
  includen muss. Aber warum ist sprintf in stdio.h und nicht in string.h
  deklariert?"

> Und das kommt dann dabei raus...
> http://mfgkw.dyndns.org/siehe_man_fork.jpg

Grintz :) Da scheint jemand in der Vorlesung aufgepasst zu haben. Ich
nehme an, sie/er hat dafür die volle Punktzahl bekommen, oder?.

von Klaus W. (mfgkw)


Lesenswert?

nö, da war ich ungnädig.
Ich habe mich amüsiert und trotzdem 0 Punkte spendiert.

Schließlich hatte ich in der Vorlesung ja mehr dazu erzählt
als nur man fork...

von Klaus (Gast)


Lesenswert?

Klaus Wachtler schrieb:
> nö, da war ich ungnädig.
> Ich habe mich amüsiert und trotzdem 0 Punkte spendiert.

hehe, ich hätte an der Stelle nen halben Gnadenpunkt spendiert, weil die 
Antwort witzig und nicht vollkommen falsch ist ;)

von Klaus W. (mfgkw)


Lesenswert?

naja, er hatte sich bei anderen Fragen besser geschlagen,
das kommt unterm Strich schon hin, und an einer Grenze zur
besseren Note liegt er eh nicht.

(Und "nicht falsch" bedeutet nicht "beantwortet die Frage".)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.