Was ist der Fehler im Programm



  • Hallo,

    ich habe ein Programm geschrieben, dass eine zufällige Zahl zwischen 1 und 49 ausgibt:

    /* Datei: Entschlüsselung.c */

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include <time.h>

    int a;
    int b;
    int Antwort2;

    int main (int argc, char *argv[])

    {

    int Antwort= MessageBox(NULL,"Wollen sie eine Zufallszahl fuers Lotto? ","Lottogenerator:", MB_ICONQUESTION |MB_YESNOCANCEL);

    if(IDYES==Antwort)
    {
    int Antwort= MessageBox(NULL,"Die Zahl wird generiert","Lottogenerator:", MB_ICONINFORMATION |MB_OK);
    srand(time(0));
    b = 1+(rand() % (50-1));
    int Antwort2= MessageBox(NULL,"Die Zahl lautet: %d",b , "Lottogenerator:", MB_ICONINFORMATION |MB_OK);
    }
    if(IDNO==Antwort)
    {
    int Antwort= MessageBox(NULL,"Der Vorgang wird nun abgebrochen","Lottogenerator:", MB_ICONSTOP |MB_OK);
    return 0;
    }
    if(IDCANCEL==Antwort)
    {
    return 0;
    }

    while (1);

    }

    In der fetten Zeile ist ein Fehler. Eigentlich soll in dieser Zeile die Zufallszahl, die in der int Variable b gespeichert ist, ausgegeben werden.
    Mein Compiler gibt folgende Fehlermeldung aus: invalid conversion from `int' to `const CHAR*'

    Kann mir jemand helfen den Fehler zu beseitigen?

    Vielen Dank Macl



  • ^^MessageBox hat keine variable argumentenliste. musste erstmal den string im speicher (mit sprintf z.b. erzeugen) und dann einen zeiger darauf an MsgBox übergeben.
    🙂



  • lol ich finde dass wäre ne schöne neue Methode Parameter zu übergeben:D



  • DAnke für deine Antwort, aber ich fang gerade erst an in C zu programmieren 😕 .
    Ich kann leider mit den ganzen Begriffen nix anfangen.
    Könntet ihr die Zeile berichtigen.

    DAnke

    Macl 😃



  • /*
    int MessageBox(
        HWND hWnd,
        LPCTSTR lpText,
        LPCTSTR lpCaption,
        UINT uType
    );
    */
    char buffer[256];//*wirdschonreichen*
    sprintf(buffer,"Die Zahl lautet: %d",b);
    int Antwort2= MessageBox(NULL,buffer,"Lottogenerator:", MB_ICONINFORMATION |MB_OK);
    

    so in der richtung 😕



  • klg71 schrieb:

    lol ich finde dass wäre ne schöne neue Methode Parameter zu übergeben

    kannst ja 'ne funktion basteln, mit 'vsprintf', die dann die MsgBox anzeigt.
    🙂



  • Echt super nooblolo!!! 👍
    funktioniert 😃

    Danke



  • noobLolo schrieb:

    [cpp]
    char buffer[256];//*wirdschonreichen*

    ^^reicht locker. *fg*
    🙂



  • ;fricky schrieb:

    noobLolo schrieb:

    [cpp]
    char buffer[256];//*wirdschonreichen*

    ^^reicht locker. *fg*
    🙂

    Ha! Stimmt. Wo ist nwp2, wenn's einmal sicher wird schon reichen?
    🙂



  • ja ich gebe ja zu es war ein bischen zu viel evtl. hätte man es auch so machen können

    #include <limits.h>;
    #define TO_STR(x) #x
    #define TO_NUM(x) TO_STR(x)
    #define GET_INT_MAX_AS_STRING TO_NUM(INT_MAX)
    
    char buffer[sizeof("Die Zahl lautet: ")+sizeof(GET_INT_MAX_AS_STRING)];
    

    😉



  • noobLolo schrieb:

    ja ich gebe ja zu es war ein bischen zu viel

    Ja. 🙂
    Mammutlottozahlen oda watt.
    Ich will ja nicht kleinlich sein :D, aber wo ist der Platz für den Terminator?



  • ich dachte sizeof("")==1 also ist der bei sizeof im gegensatz zu strlen schon dabei, also erster string liefert den terminator 2.string braucht noch das minus also brauchen wir keine -1 und dann wars das:)



  • Ok, supi, war meine Dusseligkeit 😃



  • die andere Variante war für mich logischer 🙂



  • das macht sie auch nicht besser 😉 wie schon richtig bemerkt wurde, wird ne ganze menge speicher verschwendet...


Anmelden zum Antworten