sprintf-Warning

OP #1548266
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
Gast #1548801
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.
#1548821
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.
#1548859
:) „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”)...
Gast #1549093
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?.
Gast #1549266
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 ;)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.