-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: Problem mit SerWrite

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    26.01.2008
    Ort
    Ansbach
    Alter
    27
    Beiträge
    19

    Problem mit SerWrite

    Anzeige

    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?

  2. #2
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    probier mal
    SerWrite("abcde",5);
    kleinschreibung ist cool!

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.382
    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);

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    26.01.2008
    Ort
    Ansbach
    Alter
    27
    Beiträge
    19
    thx für schnelle und kompetente Hilfe
    \/ \/ \/ \/ \/ \/ \/ \/

    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

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    12.09.2007
    Alter
    23
    Beiträge
    98
    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);
    Lieber am Asuro rumschrauben als alles andere.
    Meine Homepage

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    26.01.2008
    Ort
    Ansbach
    Alter
    27
    Beiträge
    19
    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'

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    12.09.2007
    Alter
    23
    Beiträge
    98
    du must noch folgendes include reinschreiben:
    Code:
    #include <stdlib.h>
    mfg liggi
    Lieber am Asuro rumschrauben als alles andere.
    Meine Homepage

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    26.01.2008
    Ort
    Ansbach
    Alter
    27
    Beiträge
    19
    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);
    	  }	
      }}

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.382
    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

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    12.09.2007
    Alter
    23
    Beiträge
    98
    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
    Lieber am Asuro rumschrauben als alles andere.
    Meine Homepage

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •