Binär lesen und schreiben



  • Rogon schrieb:

    Wie kann ich die Daten Binär einschreiben?

    Dazu musst Du mit fwrite schreiben.



  • Rogon schrieb:

    Es ist einfach das Problem, das es nicht Binär ist 😕
    Wie kann ich die Daten Binär einschreiben?

    Lg Rogon

    Was erwartest du, du schreibst genau das in die Datein rein, das du auch eintippst. Wenn du 1111101 eingibst, steht das dann auch in der Datei.

    Aber egal, was du da eingibst, ist das erstmal eine Zeichenkette und noch keine Zahl mit der dur rechnen kannst.

    Rogon schrieb:

    Wie kann ich die Daten Binär einschreiben?

    DirkB schrieb:

    Eine Funktion die Werte zur Basis 2 ausgibt, gibt es im Standard-C nicht.
    Die musst du dir selber schreiben.

    Ich habe dir auch einen Link auf ein ähnliches Thema hier im Forum gepostet.

    @Belli:
    Er will die nicht binär haben.
    Er will eine binäre Darstellung.
    Im Prinzip ein %b für printf(), damit dann z.B. "1111101" rauskommt



  • DirkB schrieb:

    @Belli:
    Er will die nicht binär haben.
    ...

    ICH weiß das. Ich glaube, Du hast schon zwei, drei Postings vorher versucht, IHM das auch klarzumachen. Aber er fragt immer danach und ich bin kein Kindergärtner.



  • Ok, entschuldige.

    Aber wenn er da nochmal fwrite reinschreibt, kann ihm auch keine Kindergärtner mehr helfen.

    Ein Buch (für Rogon) und viel Geduld (von Rogon) mögen Wunder wirken (bei Rogon).



  • Also, ich habe jetzt fputs und es funtioniert alles!

    Weiss jemand aber wie man Binär in C umsetzt?

    Also es ist ja zahl/2 bis es 0 ist!
    Aber wie setzt man das in C um?

    Ich habe foldendes versucht:

    int zahl = 125;
    
    while(zahl/2 != 0){
    		if(zahl%2 > 0)
    		{
    		    printf("0");
    		}
    		else
    		{
    		    printf("1");
    		}
            zahl = zahl/2 - ((zahl/2)%2);
        }
    printf("0");
    }
    

    Was mache ich falsch?

    Lg Rogon 😃



  • Rogon schrieb:

    Was mache ich falsch?

    Lg Rogon 😃

    Du gibst die falsche Fehlerbeschreibung: http://www.c-plusplus.net/forum/136013

    Was passiert und was erwartest du?

    Was kann man in dem Programm falsch machen?
    - Abbruchbedingung
    - berechnung des neuen Wertes
    - falsche Reiehenfolge
    - falsche Vorstellung was passiert.

    Ich denke 4 von 4 hast du.



  • Es geht!!

    Hier mein Code:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <string.h>
    
    int main()
    {
    
    fopen("datei", "ab+");
    
    char eingabe [10];
    
    FILE* datei;
    
    if( (datei = fopen("file.giomizer", "ab+")) == NULL)
    {
    printf( "Fehler: Datei existiert nicht");
    getchar();
    return 0;
    }
    
    else
    {
    printf("Datei bereit!\n");
    }
    
    printf("Geben Sie eine Zahl zwischen 0 und 255 ein\n");
    scanf("%s", eingabe);
    
    fputs(eingabe, datei);
    fputs(" ", datei);
    
    int number;
    
        int rest;
        int y;
    
        for(y = 0; y >= 0; y--) {
        while(y < 7)
        {
            rest = number/(1 << y);
    
            number = number - rest * (1 << y);
            y++;
                fputs(rest, datei);
        }
    
        fputs(" ", datei);
    
    int test = eingabe;
    
        if
            (test == 0) {
                fputs("0", datei);
            }
    
            else if  (test == 2) {
                fputs("1", datei);
            }
    
            else if  (test == 1) {
                fputs("0", datei);
            }
    
            else if  (test%2 == 0) { //Modulo
                fputs("0", datei);
            }
    
            else if  (test%3 == 0) {
                fputs("0", datei);
            }
    
            else if  (test%4 == 0) {
                fputs("0", datei);
            }
    
            else if  (test%5 == 0) {
                fputs("0", datei);
            }
    
            else if  (test == 3) {
                fputs("1", datei);
            }
    
            else if  (test == 5) {
                fputs("1", datei);
            }
    
            else if  (test == 7) {
                fputs("1", datei);
            }
    
        else{
        fputs("1", datei);
        }
    
        fputs("\n", datei);
    
        fclose(datei); //wichtig: FILE* muss wieder geschlossen werden
    return 0;
    }}
    

    Danke an allen für eure Hilfe!
    Ihr seit super!

    Lg Rogon



  • Rogon schrieb:

    Ihr seit super!

    www.seitseid.de

    Abgesehen davon ist der Code auf unterirdischem Niveau und Du solltest dringend mit einem der empfohlenen Bücher oder Tutorials nochmal bei den absoluten Grundlagen beginnen...


  • Mod

    Wie dir in einem anderen Thread schon gesagt wurde, ist deine Lösung voller Fehler. Dass sie funktioniert ist reinstes Glück (oder Pech, denn so merkst du den Fehler erst durch Vorführeffekt). Zeile 48 ist feinstes undefiniertes Verhalten, Zeile 53 macht nicht einmal entfernt das was du denkst. Ehrlich gesagt kann ich gar nicht nachvollziehen, wie dies auch nur in irgendeinem Fall funktionieren soll, nicht einmal der Möchtegerndebugmodus einer bekannten IDE (der meiner Meinung nach eher Fehler versteckt als aufdeckt) wird dieses Programm zum Funktionieren bringen.

    Außerdem ist die ganze Grundidee des Algorithmus Müll.



  • Rogon schrieb:

    Es geht!!

    Hier mein Code:

    [...]

    Na siehst Du. Ein bisschen Mühe und Biss, dann klappt das schon. War doch gar nicht so schwer, oder?


Anmelden zum Antworten