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
Du solltest den String vorher abschneiden: string[4]=0; printf("%s",string);
Hallo, habe es so ausprobiert, wie du es gesagt hast, aber da meckert der Kompiler, dass der string zu kurtz ist. Bzw der string xx den ich in string reinschreiben will zu lang. Hmm... Was nun??
Dominik schrieb: > Hmm... > Was nun?? Zeig deinen Code, dann hört das Rätselraten auf dieser Seite des Bildschirms auf.
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
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.
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
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.
Aus meiner Erinnerung: Tuts ein printf("%.4s", text); nicht auch?
@ DirkB Das war die Lösung für mein Problem, so hat es funktioniert... Super.. Danke an alle
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.