Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

Also das heißt das ich dann das schreibe?

zB:

char text[255];

char test[255];

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.

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.

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?

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.

Ah okay ... jetzt raff ich es -> Danke :uli

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.