Compiler/Computer problem?



  • hallo erstmal!

    also folgendes problem hab mit mvc6.0 ein kleines prog ausprobiert welches
    zwei zahlen addieren soll...der compiler zeigt keine fehler an nur wenn ich es starte kommt immer das gleiche ergebnis raus 😡 dann hab ich das ganze schritt für schritt mit dem debugger durchgeschaut, alle variablen haben vorher
    den wert -803562 oder so gespeichert.
    im debugger wird das ergebnis auch korrekt berechnet aber nicht auf der console ausgegeben dafür erscheint die fehlermeldung:

    loaded 'C:\WINNT\System32\ntdll.dll', no matching symbolic information found.
    Loaded 'C:\WINNT\system32\KERNEL32.DLL', no matching symbolic information found.

    also format c:
    alles neu installiert...und problem nicht beseitigt... 😡 😡
    dann die lösung ein neuer compiler muß her, dev-c++ installiert
    aber auch hiermit funzt es nicht bekomme immer den gleichen wert ausgegeben
    egal was ich eingebe

    #include <stdio.h>
    #include<windows.h>
    void main(void)
    {
    int a;
    a=0;
    printf("a");
    scanf("%i",&a);
    printf("%i",&a);
    Sleep(1500);

    }

    Hiilllffeeeeeeeeeeeeee!!

    holg



  • mit &a bekommst du die Adresse von a. Ich schätze du willst hier aber den Wert ausgeben..

    printf("%i", a);



  • Warum machst Du das nicht mit C++?

    #include <iostream>  // wegen cout und cin und endl
    #include <conio.h>   // wegen getch()
    using namespace std; // ansonsten ist std::cout usw. notwendig
    
    int main() 
    { 
      int a=0; 
      cout << a << endl; // cout ist der Standardausgabestrom 
                         // endl "flusht" den Puffer und gibt '\n' aus 
      cin  >> a;         // cin ist der Standardeingabestrom 
      cout << a; 
    
      getch();           // wartet auf Tastendruck (nicht Standard-C++, aber angenehm)
    }
    

    Zur Vermeidung des getch() bietet Standard-C++ folgendes Konstrukt an:

    void wait() 
    { 
        cin.clear(); 
        cin.ignore(cin.rdbuf()->in_avail()); 
        cin.get(); 
    }
    

    Einfach vor main() einbinden. Damit kann man getch() durch die eigene Funktion wait() ersetzen.

    Falls Du auf den Elementen von <cstdio> bestehst, dann z.B. so:

    #include <cstdio>  
    #include <windows.h> // fuer Sleep(...) 
    
    int main()           // main() muss int zurueck geben 
    {  
      int a=0;  
      printf("Bitte geben Sie einen Wert fuer a ein: ");  
      scanf("%i",&a);    // Adresse von a als Parameter nur bei scan notwendig 
      printf("%i",a);  
      printf("\n%i",&a); // Adresse der Variable a   
      Sleep(2000);       // Das sollte man eher mit getch() loesen 
    }
    

    Als allgemeinen Einstieg in die Programmierung empfehle ich:
    http://www.highscore.de/grundlagen/

    Als Einstieg in C++ empfehle ich:
    http://home.arcor.de/cpp_kurs/cpp/toc.htm
    http://www.highscore.de/cpp/einfuehrung/
    http://www.highscore.de/cpp/aufbau/index.html

    Ein sehr schönes Kapitel zum Thema Zeiger / Referenzen / dynamische Allozierung:
    http://www.highscore.de/cpp/einfuehrung/zeiger.html



  • danke leute 🙂
    mein fehler war der das ich wie dr.greenthumb schon richtig bemerkt hat die
    speicheradresse ausgeben habe und nicht das was drin stand

    so kann man seinen sonntag auch rumkriegen naja wenigstens startet w2k jetzt
    schneller...

    also nochmals vielen dank

    holg



  • hallo!

    haette da noch n code der nicht macht was er soll und zwar:

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

    void main(void)
    {
    int ergebnis,zahl;
    char eingabe[80];
    printf("bitte eine zeichenkette eingeben\n\n");
    gets(eingabe);
    ergebnis=atoi(eingabe);
    printf("der wert ist %i\n",ergebnis);

    printf("bitte eine ganzzahl eingeben\n\n");
    scanf("%i",&zahl);
    sprintf(eingabe,"%i",zahl);
    printf(" der string lautet %s\n",eingabe);
    }

    laut meinem übungsbuch (h.erlenkötter c programmieren von anfang an)
    soll die funktion atoi als parameter eine zeichenkette erhalten und diese in int umwandeln...nur leider bekomme ich immer den wert 0 zurück
    wenn sich das mal jemand anschauen könnte

    danke
    holg



  • #include <cstdio>
    #include <cstdlib>
    
    using namespace std;
    
    int main(void)
    {
    int ergebnis,zahl;
    char eingabe[80];
    printf("bitte eine zeichenkette eingeben\n\n");
    gets(eingabe);
    ergebnis=atoi(eingabe);
    printf("der wert ist %i\n",ergebnis);
    
    printf("bitte eine ganzzahl eingeben\n\n");
    scanf("%i",&zahl);
    sprintf(eingabe,"%i",zahl);
    printf(" der string lautet %s\n",eingabe);
    }
    

    Der Compiler beschwert sich zwar (the `gets' function is dangerous and should not be used), ansonsten läuft es einwandfrei...

    The atoi() function converts str into an integer, and returns that integer. str should start with some sort of number, and atoi() will stop reading from str as soon as a non-numerical character has been read. For example,

    i = atoi( "512.035" );

    would result in i being set to 512.

    ( http://www.cppreference.com/stdstring_details.html#atoi )


Anmelden zum Antworten