array rechtsbündig einlesen



  • hallo,

    gibt es eine möglichkeit stdin "rechtsbündig" einzulesen?
    wenn ich also ein array mit fünf stellen habe, aber von stdin nur 3 gelesen werden,erhalte ich normal "123 ". Ich würde jetzt gerne direkt " 123" einlesen.
    (also ohne zusätzliches "hilfsarray".

    mfg Christoph



  • Fange bei (Anzahl der Elemente im Array - 1) an und zähle den Index rückwärts.



  • Hallo,

    Ich lese mittels scanf("%s",str) ein und nicht die einzelnen chars.
    gibt es da einen parameter für %s, so wie ich z.b. mit printf("%-i",int) eine zahl linksbündig ausgebe?

    mfg Christoph



  • LordJaxom schrieb:

    Fange bei (Anzahl der Elemente im Array - 1) an und zähle den Index rückwärts.

    dann sind die doch verkehrtrum, bzw. spiegelverkehrt, bzw. gespiegelt
    🙂



  • gibt es da einen parameter für %s, so wie ich z.b. mit printf("%-i",int) eine zahl linksbündig ausgebe?

    Keine Ahnung, wahrscheinlich schon.
    Wenn nicht, nimm eben sprintf.



  • Scanf kennt die Anzahl der Zeichen nicht im Voraus, direktes Einlesen geht so nicht.
    Du kannst die Buchstaben innerhalb des Puffers in einer Schleife verschieben, oder memmove benutzen. Sprintf ginge auch, in Verbindung mit einem zweiten Puffer, weil sprintf keine sich überlappenden Speicherbereiche mag.
    Achso und wenn du den Nullterminator überschreibst, wird dein String für die meisten Standardfunktionen unbrauchbar.

    Gruß,
    B.B.



  • Geht es hier um deine Zahlenkonvertierung?
    Fang doch einfach am letzten Index an, ohne irgendwas zu verschieben.
    Dann weiter bis Index 0.
    Den letzten Index holst du dir mit i = strlen( buf) -1.
    ⚠ fgets schummmelt noch ein '\n' mit rein, also voher entfernen ⚠


Anmelden zum Antworten