Veröffentlicht 6. Februar 200817 j 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
6. Februar 200817 j 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.
6. Februar 200817 j Ja, das sieht gut aus. Du kannst allerdings den ersten Text nicht einfach mit einer Zuweisung hineinkopieren, sondern musst dafür strcpy verwenden.
6. Februar 200817 j 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.
6. Februar 200817 j 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.
6. Februar 200817 j 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?
6. Februar 200817 j 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.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.