VR6 Geschrieben 6. Februar 2008 Geschrieben 6. Februar 2008 Hallo "Fachinformatiker", ich bin ein relativ neuer C-Neuling. Ich hab n Roboter den ich programmiere. Mein Programm hat eine Batterie() Funktion, die ermittelt den Batteriestand. Desweiteren ein ID für jeden Robo. Jetzt möchte ich den Batteriestand (int) der ID (char) anhängen. Dieser Vorgang wird in ner While-Schleife wiederholt, aber nur alle 1000mal, aus Performancegründen. Also grob zusammengefasst: ich will eigentlich nur chars bzw. chars mit int verknüpfen. weiß hier vielleicht einer weiter ??? Zum Problem: Es kommende Fehlermeldungen: test.c:66: warning: assignment makes integer from pointer without a cast test.c:69: warning: passing arg 2 of `itoa' makes pointer from integer without a cast test.c:70: warning: passing arg 1 of `strcat' makes pointer from integer without a cast test.c:70: warning: passing arg 2 of `strcat' makes pointer from integer without a cast test.c:71: warning: passing arg 1 of `SerPrint' makes pointer from integer without a cast _________________________________ anscheindend wandelt itoa volt nicht in text um, warum? Hier der Code: #include <stdlib.h> #include <string.h> #include <stdio.h> #include "asuro.h" int volt, zaehler; char text; char test; int main(void) { Init(); while(1) { if(zaehler % 1000 == 0) { test = "id:001->Bat:"; volt = Batterie(); itoa(volt, text, 10); strcat(test, text); SerPrint(test); } zaehler++; } } Für Hilfe wäre ich dankbar. Gruß VR6 Zitieren
Klotzkopp Geschrieben 6. Februar 2008 Geschrieben 6. Februar 2008 Ein char ist nur ein einzelnes Zeichen. Wenn du in C mit Zeichenketten arbeiten willst, musst du char-Arrays verwenden. Du bist übrigens dafür verantwortlich, dass diese Arrays groß genug sind. Zitieren
VR6 Geschrieben 6. Februar 2008 Autor Geschrieben 6. Februar 2008 Also das heißt das ich dann das schreibe? zB: char text[255]; char test[255]; Zitieren
Klotzkopp Geschrieben 6. Februar 2008 Geschrieben 6. Februar 2008 Ja, das sieht gut aus. Du kannst allerdings den ersten Text nicht einfach mit einer Zuweisung hineinkopieren, sondern musst dafür strcpy verwenden. Zitieren
VR6 Geschrieben 6. Februar 2008 Autor Geschrieben 6. Februar 2008 Ok danke so funzt es. Nochmal n kleines Verständnisproblem. In C gibts ja anscheindend Zeichenketten nur als char, also kein Datentyp String. Wenn ich dann dem Char-Array etwas zuweisen will, muss ich dann immer strcpy nehmen? Anscheindend bin ich C# verwöhnt, wo ich ich nem String einfach n Wert zuweisen kann. Zitieren
Guybrush Threepwood Geschrieben 6. Februar 2008 Geschrieben 6. Februar 2008 Ja. Statt dem itoa würde ich aber einfach sprintf nehmen. Da kannst du das alles genau wie mit printf ausgeben nur das die Ausgabe im String landet. char test[255]; int i = 5; sprintf (test,"Der Inhalt %s ist %i","der Variablen i", i); [/PHP] Bzw. noch besser statt sprintf ist je nach Entwicklungsumgebung _snprintf oder sprintf_s wo du noch die Größe deines Arrays angeben kannst damit nicht aus versehen darüber hinausgeschrieben wird. Zitieren
VR6 Geschrieben 6. Februar 2008 Autor Geschrieben 6. Februar 2008 Aha jetzt versteh ich das solangsam ... PHP-Code: char test[255]; int i = 5; sprintf (test,"Der Inhalt %s ist %i","der Variablen i", i); So wie ich das sehe wird i in den String davor gepackt und dieser in test, oder? Und für was steht das %i und %s? Zitieren
Klotzkopp Geschrieben 6. Februar 2008 Geschrieben 6. Februar 2008 So wie ich das sehe wird i in den String davor gepackt und dieser in test, oder?So ähnlich. Der erste Parameter ist der Ziel-String. Der zweite ist der Formatstring, der bestimmt, was und wie in den Zielstring geschrieben wird. Dazu dienen die Formatfelder im Formatstring, das sind diese Dinger mit dem Prozentzeichen. Hier findest du eine Referenz: printf - C++ Reference Die nachfolgenden Parameter werden von links nach rechts den jeweiligen Formatfeldern zugeordnet, und entsprechend in den Zielstring geschrieben. Zitieren
VR6 Geschrieben 6. Februar 2008 Autor Geschrieben 6. Februar 2008 Ah okay ... jetzt raff ich es -> Danke :uli Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.