Mit "Sscanf" String auf Int durchsuchen



  • Es heißt nicht umsonst Bibliothek. Die Funktionen sind schon compiliert in einer Datei zusammengefasst. Das kann eine statische oder dynamische Library sein.
    Daher bekommst du meist nicht den Code der Funktionen zu sehen.

    Der Name hängt vom System ab.
    Auf Unixsystemen meist libc
    Bei Microsoft: MSVCRT.DLL (Microsoft Visual C Run Time)
    Oder von GNU die glibc
    Da gibt es auch den Code von: https://sourceware.org/git/?p=glibc.git;a=tree

    Man kann auch selber Librarys bauen. Das ist kein Hexenwerk.



  • Jepp, hab das gerade ein bisschen gegooglet und paar interessante Sachen dazu gefunden, werd das mal probieren mir selbst eine zu "basteln".

    Aber noch mal zurück, ich google schon ne Zeit, aber finde nix( evtl. such ich auch falsch)... Wie die Standartfunktionen der C-Stan-Bibliothek programmiert sind... gibt´s da ne Seite wo man sich das angucken kann? Wär oft interessant.

    Im K&R steht meist zu veröffentlichten Beispielen "the C Standard Library Function to XY is similar"... ähnlich..

    Und wenn wir schon dabei sind: Kann mir evtl. noch jmd. Bibliotheken für C empfehlen, die man gängig brauchen kann, zB.: MP3 abspielen, JPG anzeigen, evtl . Verzeichnissarbeit... sowas in die Richtung? Also die Winapi aussen vor gelassen 🙂



  • beginner_offl schrieb:

    ... gibt´s da ne Seite wo man sich das angucken kann? Wär oft interessant

    Jepp, Wie oben geschrieben bei der glibc.

    Oder als Buch: The Standard C Library von P. J. Plauger



  • Merci, das werd ich mir mal genauer ansehen.



  • Und wenn wir schon dabei sind: Kann mir evtl. noch jmd. Bibliotheken für C empfehlen, die man gängig brauchen kann, zB.: MP3 abspielen, JPG anzeigen, evtl . Verzeichnissarbeit... sowas in die Richtung? Also die Winapi aussen vor gelassen 🙂

    Bzw.: Wie macht Ihr sowas, die Profis? Gar nicht mit C wahrscheinlich, aber wenn man´s doch braucht , z.B.: für nen kleinen Gimmick oder so... WinApi oder doch eher was anderes?



  • bin[LSB-j]=(i%2)+'0';
    

    Warum hier '0' ?? Kann mir das jemand erklären?

    Und hier :

    char binzahl[] = "10100101";
    char *pc = binzahl;
    
    unsigned int result = 0;
    
    while (*pc) {
      result *= 2;
      result += (*pc -'0');
      ++pc;
    }
    

    pc zeigt doch auf denn ersten Char, von Links her gelesen. Müsste doch dann Wertigkeit viel höher sein?? Die Schleife müsste doch rückwerts laufen?



  • binary_ask schrieb:

    bin[LSB-j]=(i%2)+'0';
    

    Warum hier '0' ?? Kann mir das jemand erklären?

    '0' ist 48 (ASCII-Code).
    '0'+5=53 und das ist der ASCII-Code von '5'.



  • char binzahl[] = "10100101";
    char *pc = binzahl;
    
    unsigned int result = 0;
    
    while (*pc) {
      result *= 2;
      result += (*pc -'0');
      ++pc;
    }
    

    ???? Ich verstehe das mit result *2 und das von links nach rechts lesen nicht. Normal lese ich eine Bin Zahl von rechts nach linkts? 1, 2, 4, 8, usw



  • binary_ask schrieb:

    ???? Ich verstehe das mit result *2 und das von links nach rechts lesen nicht. Normal lese ich eine Bin Zahl von rechts nach linkts? 1, 2, 4, 8, usw

    Verfolge das Verfahren mit Debugger oder Schreibtischtest.



  • Habe ich gerade gemacht. Ja funktioniert schon. Aber wie kommt man darauf? Hat das damit etwas zu tun, das schieben so etwas wie x2 nehmen ist?



  • binary_ask schrieb:

    Habe ich gerade gemacht. Ja funktioniert schon. Aber wie kommt man darauf? Hat das damit etwas zu tun, das schieben so etwas wie x2 nehmen ist?

    Jo, Schieben und *2 nehmen ist gleich.
    Vielleicht hat's auch was mit dem Hornerschema zu tun.


Anmelden zum Antworten