Forum: Compiler & IDEs makes integer from pointer without a cast


von Simon (Gast)


Lesenswert?

Das kann doch nicht so schwer sein...


Alsa das erste ist ein array dem ich einfach nur eine 0 anhängen möchte.

ein readBuffer[20] = 0; würde es auch tun.

Aber wie sieht hier ein richtiges casten aus?
(ROM *char) ?  (Microchip)

1
char readBuffer[20];
2
readBuffer[20] = "\0";

assignment makes integer from pointer without a cast

von Simon (Gast)


Lesenswert?

Ich glaube sein Problem ist einfach nur das anführungszeichen weil er 
meint das es ein String ist und nicht ein Char '\0'.

aber kann man das irgendwie auch casten?

readBuffer[20] = "\0";

von adenin (Gast)


Lesenswert?

1
char readBuffer[20];
2
readBuffer[19] = (char)0; //wenn, dann schon richtig :P
Weil readPuffer von 0 bis 19 geht, und das sind die 20 deine char. :)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Simon schrieb:
> aber kann man das irgendwie auch casten?
>
> readBuffer[20] = "\0";

Schreibs doch einfach richtig hin:

> readBuffer[20] = '\0';

von Simon (Gast)


Lesenswert?

Mein Problem ist am ende folgendes,
ich lese aus einer Datei stueckweise zeug in einen Buffer.
1
 FSfread ((void *)readBuffer, 1, 20, fp);

Bei jedem Aufruf erhöht er auch fp->seek also sprich jeder aufruf liest 
weitere 20 bytes aus der Datei ein.

Die Datei sieht so aus:

DHCP=1
IP=127.0.0.1
....
VAR=200


Da ich aber nur 20 byte in den buffer bekomme muss ich irgendwie 
schaffen das zu parsen das ich die Variablen einzelnd bekomme.

von DirkB (Gast)


Lesenswert?

Dann lies nur bis zu einem Trennzeichen.
Das wäre wohl erstmal das '\n' für das Zeilenende.
ZUm zeilenweise lesen gibt es auch schon fertige Funktionen.

von Rolf Magnus (Gast)


Lesenswert?

Simon schrieb:
> Ich glaube sein Problem ist einfach nur das anführungszeichen weil er
> meint das es ein String ist und nicht ein Char '\0'.

Richtig. "\0" ist ein Array aus char, woraus bei der Zuweisung ein 
Zeiger auf char gemacht wird. Diesen Zeiger versuchst du, an deinen 
readBuffer anzuhängen.

> aber kann man das irgendwie auch casten?

Was stimmt denn mit '\0' nicht?

> readBuffer[20] = "\0";

Wenn es unbedingt mit "" sein muß:

readBuffer[20] = "\0"[0];

von Amateur (Gast)


Lesenswert?

Mit "X" wird eine Zeichenkette definiert. Als zwei Einzelzeichen: 'X' + 
'\0'.
Gleiches gilt für "\0" welches als Einzelzeichen '\0' + '\0' darstellt.

Die Zuweisung: xxxx[20] = bezieht sich aber auf ein Einzelzeichen.

Darüber hinaus ist bei:
char XXX [20];
XXX [20]= ?
ein absolutes Tabu, aber eine tolle Möglichkeit ein Programm ins Nirwana 
zu schicken.

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
Noch kein Account? Hier anmelden.