Anzahl der zeichen in String angeben Printf %S

Gast #1897342
Lesenswert?

Hallo,
ich stehe vor dem Problem, dass ich eine string XX habe in dem eine 8 
zeichen lange kette drinne steht. In einer printf ausgabe kann ich  mir 
den String mit %s ausgaben lassen. Funktioniert auch, nun habe ich aber 
das problem das ich nur die ersten 4 Zeichen des Strings ausgeben 
darf...
Gibt es da eine möglickeit wie z.B. bei einer float, da kann man ja auch 
beschreiben wie viele vor und nachkomma stellen man ausgeben will.


Vielen Dank im Vorraus
Gast #1897405
Lesenswert?

Sooo.. SR ist der string wo ich nur 4 Zeichen ausgeben möchte..



printf_P(PSTR("%-2d    %s   %-7lu    %-2.1f    %s    %d\r"),
             address, NA_STRING, system_GetSerialNumber() == 0xFFFFFFFF 
? 0
             : system_GetSerialNumber(), system_GetHardwareRevision(),
                                    SR, GetTotalNumberOfErrors());



Mein Ansatz war jetzt:

char shortSR[4] = SR;


printf_P(PSTR("%-2d    %s   %-7lu    %-2.1f    %s    %d\r"),
             address, NA_STRING, system_GetSerialNumber() == 0xFFFFFFFF 
? 0
             : system_GetSerialNumber(), system_GetHardwareRevision(),
             shortSR, GetTotalNumberOfErrors());



und da Meckert halt der Komiler...



Gruß Dominik
#1897413
Lesenswert?

Dominik schrieb:
> Sooo.. SR ist der string wo ich nur 4 Zeichen ausgeben möchte..
>

Ich nehme an SR ist der bewusste Kandidat?

>
> Mein Ansatz war jetzt:
>
> char shortSR[4] = SR;

Nein. Das geht so nicht.

Wenn schon, dann könntest du dir den Teil des Strings umkopieren

  char shortSR[5];
  strncpy( shortSR, SR, 4 );
  shortSR[4] = '\0';

aber abhängig davon, wer oder was SR eigentlich ist, gibt es auch noch 
einfachere Möglichkeiten. Nur leider kann man dazu nicht viel mehr 
sagen, denn den interessanten Teil, wie SR eigentlich aussieht, hast du 
wieder mal nicht gezeigt.

Bei Code-Ausschnitten gehören immer die Variablendeklarationen mit dazu! 
Denn abhängig von deren genauen Datentypen tun sich unterschiedliche 
Wege auf.
Gast #1897419
Lesenswert?

Ok....

Also was SR ist..

/// software revision.
#define SR "1.03/15.10.2010"


ich möchte halt das Datum abtrennen, da es nur an einer betimmten stelle 
mit ausgegeben werden soll (andere printf ausgabe)


Gruß

Dominik
#1897427
Lesenswert?

Dominik schrieb:
> Ok....
>
> Also was SR ist..
>
> /// software revision.
> #define SR "1.03/15.10.2010"
>
>
> ich möchte halt das Datum abtrennen, da es nur an einer betimmten stelle
> mit ausgegeben werden soll (andere printf ausgabe)

Was spricht dann dagegen, dass du

#define REVISION  "1.03"
#define REV_DATE  "15.10.2010"

und an bewusster anderer Stelle gibst du beides hintereinander mit dem 
von dir vorgesehenen Trennzeichen aus.

 die andere Stelle
   printf( "%s/%s", REVISION, REV_DATE );
    // oder:   printf( REVISION "/" REV_DATE );


Auf jeden Fall hast du dann die Revision 'freistehend' und brauchst an 
den Stellen, an denen du nur die Revision benötigst, keine Klimmzüge.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren