-
Problem mit SerWrite
Hab n kleines Problem mit SerWrite
Hier ein kleiner Ausschnitt
Code:
w=(char)a;
SerWrite(w,10);
und dann kommt:
test.c:21: warning: passing arg 1 of `SerWrite' makes pointer from integer without a cast
und er kann des dann auch nicht schreiben. Hat wer ne Ahnung, wie ich des hinkrieg?
-
probier mal
SerWrite("abcde",5);
-
SRT noch was
w muss als char oder unsigned char deklariert sein
alternativ als array
char w[1];
der ausdruck
w = (char)a; wirkt so nicht ... um das ascii zeichen a zu erhalten musst du 'a' schreiben. (shift+"#" fürs einfache hochkomma)
und serwrite erwartet einen pointer auf ein char array ... wenn du nur eine variable hast musst du ihre adresse übergeben, also
serwrite(&a,1); & löst hier die adresse der varuiable a auf
bei einem array ist der bezeichner OHNE eckige klammer schon ein pointer auf den anfang also
char WA[1]; // bei der deklaration gibt die ziffer die anzahl der felder im array an
WA[0] = 'a'; // beim zugriff aufs array IMMER darauf achten das du mit dem index arbeitest und der beginnt bei 0 und hört bei (länge - 1) auf
serwrite(WA,1);
ansonsten
char w = 'a';
serwrite(&w,1);
-
thx für schnelle und kompetente Hilfe
\:D/ \:D/ \:D/ \:D/ \:D/ \:D/ \:D/ \:D/
Edit: zu früh gefreut :-# : wenn a ein gemessener (integer) Wert sein soll,
Code:
char w[1];
int a;
//a messen...
w[0]=a;
SerWrite(w[0],10);
Kommt der Fehler
test.c:19: warning: passing arg 1 of `SerWrite' makes pointer from integer without a cast
-
du musst den wert erst in zeichen umwandeln etwa so:
Code:
char w[10];
int a;
//a messen...
itoa(a, w, 10);
SerWrite(w,10);
-
da tut sich nur ein kleines Problem auf: Die Funktion itoa() gibt es scheinbar nicht
Code:
test.c:18: warning: implicit declaration of function `itoa'
-
du must noch folgendes include reinschreiben:
Code:
#include <stdlib.h>
mfg liggi
-
jetzt kennt des Programm zwar itoa(), aber es kommen jetzt 2 andere fehler:
warning: passing arg 2 of `itoa' makes pointer from integer without a cast
warning: assignment makes integer from pointer without a cast
Hier das dazugehörige Programm:
Code:
#include "asuro.h"
#include "stdlib.h"
int i,a;
char w;
unsigned int taster;
int main(void){
Init();
while(1){
taster=PollSwitch();
if (taster!=0){
a=1; //wird später durch Messwert ersetzt
w=itoa(a,w,2);
SerWrite(&w,1);
}
}}
-
w muss ein char ARRAY sein ... strings also zeichenketten werden immer als arrays von char angelegt die auf eine NULL also binär null nicht ascii enden
mach auch char w; einfach char w[6]; maxwert von int ist 65000 das sind 5 zeichen + die abschliessende null
und im serwrite nicht vergessen das & vorn wieder wegzumachen, denn bei einem array ist der bezeichner selbst ein zeiger
-
und das dritte Parameter von itoa gibt nicht die Länge, sondern die Basis an, zum beispeil 10 für Dezimalsystem oder 16 für Hexsystem.
mfg liggi