2 char arrays aus 2 editfenstern addieren..



  • Base gibt die Zahlenbasis an:
    - 10 für Dezimalzahlen (das Normale)
    - 16 für Hexadezimale (das Normale für Programmierer 🙂 )
    - 2 für Binär-/Dualzahlen

    Ich kenne TextOut nicht aber ich nehme an, es gibt einen Text aus (Text == char[] != int).
    Beispiel:

    int zahl1, zahl2;
                   zahl1= (int)strtol(buffer1, NULL, 10);
                   zahl2= (int)strtol(buffer2, NULL, 10);
                   ergebnis = zahl1 + zahl2;
    
                   char buffer[x+y];
                   sprintf(buffer,"%d",ergebnis);
    
                   TextOut(hdc, 100, 10, buffer, sizeof(buffer));
    


  • ohjaaa 😃 danke das klappt.. ich saß da jetzt schon stundenlang dran und hab rumgesucht und versucht.. danke



  • BTW:
    Du kennst den Unterschied zwischen Zahlen und Strings?

    Mach die diesen Unterschied unbedingt klar!

    Auch ganz wichtig: Arrays und Zeiger und der Unterschied dazwischen.



  • Die Standardfunktionen von ANSI-C aus <stdio> liefern das schnell und zuverlässig. Du brauchst atoi(), strcpy(), strcat() und mehr nicht.

    Merke: Das gute alte C ist nicht vergessen! 😉



  • ja die Unterschiede kenne ich 🙂 nur fehlen mir leider noch viele Befehle und die Erfahrung um alles umzusetzen was ich möchte 🙂

    dann noch gleich eine Frage zum Befehl: char buffer[x+y];

    Warum x+y?



  • weil du mit x+y auf der sicheren Seite bist, dass das Ergebnis auch da reinpasst.

    Bei 1 + 9 wäre ein Buffer mit der Größe von 1 nämlich zu klein, weil "10" 2 Zeichen breit ist.

    greetz KN4CK3R



  • Aber wenn z.B. nur x drinne steht können die zeichen doch sowieso solang sein wie int sein kann oder hab ichs noch nich verstanden.



  • metapoint2011 schrieb:

    char buffer[x+y];

    Warum x+y?

    Warum nicht? Es muß halt platz für die Summe sein. Besser sogar x+y+1 (oder 32 oder 12).
    Was würdest du nehmen?
    buffer1 = "9999" x=4
    buffer2 = "2" y=1
    summe = "10001" =5 // braucht aber 6 Zeichen Platz

    Du hast sowieso ein Problem mit deinen Puffergrößen.
    Um einen Text mit 5 Zeichen zu speichern brauchst du einen Puffer der Länge 6 um Platz für die abschließende 0 zu haben.

    int x = GetWindowTextLength(hwndEdit1); 
    char buffer1[x];                        // Hier fehlt schon Platz für die 0
    GetWindowText(hwndEdit1, buffer1, x+1); // und noch mal einen mehr?
    

    Da passt was nicht.



  • ahh.. das mit dem x+y habe ich jetzt verstanden.

    also müsste es(weil noch platz für die null fehlt) z.B.

    char buffer1[x+n];
    

    heißen und warum ich x+1 da hab weiss ich garnich mehr 😃 glaube für die 0.



  • Wenn du mit den Längen con C-Strings noch Verständnisprobleme hast, dimensioniere sie einfach grosszügiger und kümmere dich nicht um die verschwendeten Bytes. In der Zeit, die du und wir hier mit dieser Frage zugebracht haben hättest du dich längst um andere Details deines Programmes kümmern können! :p

    daddeldu! 😃



  • metapoint2011 schrieb:

    ... und warum ich x+1 da hab weiss ich garnich mehr 😃 glaube für die 0.

    Das ging dann aber in die komplett andere Richtung. Du hattest ja nur für x Zeichen Platz.

    In ein Integer passt 4 Milliarden irgendwas. Das sind 9 Stellen plus Vorzeichen plus '\0' macht 11 Zeichen.

    char  buffer[16]; // genug Platz
    


  • okay okay.. habs soweit verstanden.


Anmelden zum Antworten