Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Übergabe eines Strings in Funktion?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.08.2004, 14:21 Uhr
Unwissende
...die wirklich Unwissende 8-)


Hallo,
ich würde gerne in einer Funktion einen String übergeben. Im Moment übergibt meine tolle Funktion aber leider nur ein einziges Zeichen, es müssen aber mehrere Zeichen sein, diese sollen dann auf einem Display ausgegeben werden.

Hier der Aufruf der Funktion:

C++:
      get_temperature_1(UVP1,1,1, "UV1"); //UVP1



Und hier die Implementierung:

C++:
void get_temperature_1(unsigned char device_addr, int row, int col, char *name)
{
              //...
    //for further information see for: datasheet of the AD7416, Page 9, Temperature Data Format
    LCD_ClearArea(row,col);
    if (!ack_status)
    {
        if (MSB_D15==0)   //temp. + ???
        {
            predecimal_place = MSB_receive;
            sprintf(lcd_temp, "%c+%d",*name, predecimal_place);
            LCD_DisplayString(row,col,lcd_temp);
        }
            
        if (MSB_D15==1) //temp. - ???
        {
            predecimal_place = (((MSB_receive & 0xFF7F)*4)- 512)/4;
            sprintf(lcd_temp, "%d%c", predecimal_place, *name);
            LCD_DisplayString(row,col,lcd_temp);
        }
       }
    else
    {
        LCD_DisplayString(row,col,"nc");    //not connected
    }
}



--
__________________________________
Unwissenheit ist vorläufig- Dummheit für immer

Dieser Post wurde am 12.08.2004 um 14:28 Uhr von Unwissende editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.08.2004, 15:06 Uhr
(un)wissender
Niveauwart


Ersten sollte const char * name heißen.
Zweiten übergibt du schon einen String bzw. den Pointer drauf.
Das Problem liegt in

C++:
sprintf(lcd_temp, "%c+%d",*name, predecimal_place);
//soll wohl sein
sprintf(lcd_temp, "%s+%d",name, predecimal_place);



Du willst ja schließlich einen String kopieren und nicht nur den ersten Buchstaben.
--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 12.08.2004 um 15:06 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.08.2004, 16:18 Uhr
Pablo
Supertux
(Operator)


Meinst du deshalb?

C++:
sprintf(lcd_temp, "%c+%d",*name, predecimal_place);



%c ist das Format für 'ein Zeichen', %s für 0-terminierenden string, also ein char* oder ein char[]. Wenn name ein char* ist, dann ist *char nur das erste Zeichen, also kein Wunder, dass du nur ein Zeichen drucken kannst. Benutze die Funktionen von (un)wissender. Wie (un)wissender sagte, es wäre besser const char* name in der Funktion-Deklaration, damit name sich nicht ändert.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: