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
Du hast vermutlich das #include ... mit der Datei vergessen, in der der Prototyp von sprintf deklariert wird.
Stefan B. schrieb: > Du hast vermutlich das #include ... mit der Datei vergessen, in der der > Prototyp von sprintf deklariert wird. <stdio.h>
erstens string.h und nicht String.h, und zweitens wieso string? snprintf ist in stdio.h, siehe Doku dazu...
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.
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.
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
:) „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”)...
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?.
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...
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 ;)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.