Frage zu Vektor...



  • #include "stdafx.h"
    #include "stdio.h"
    
    long xo[100];
    long i=0;
    int f=0;
    
    int main()
    {printf("Geben Sie 100 Zahlen ein, bestaetigen Sie nach jeder eingegebenen Zahl mit Enter\n");
    	while(f<=100){
    	scanf("%d", xo[i]);
    	f++;
    	printf("\n");
    	i++;}
    	return 0;
    }
    
    #include <iostream>
    
    void wait ()
    {
        std::cin.clear();
        std::cin.ignore(std::cin.rdbuf()->in_avail());
        std::cin.get();
    }
    

    Wenn ich in der Konsole eine Zahl eingegeben und mit "Enter" bestätigt habe, kommt die Meldung "long-Vektor.exe funktioniert nicht mehr.".
    Woran liegt das?
    Ich hoffe auf hilfreiche Antworten! 🙂

    Gruß



  • An mikroskopisch kleinen schwarzen Loechern, die die Elektronen in deiner CPU fressen. Sie werden immer dann erzeugt, wenn in einem Programm C mit C++ gemischt und ausgefuehrt wird. Desweiteren fangen die meisten Programmierer bei 0 an zu zaehlen. Nach hundert Mal sind sie also bei 99 angelangt. Hey, das erinnert mich an 99 Bottles of Beer.



  • Das mit 99 und 100 ist mir auch eben noch aufgefallen.
    Ok, also liegt's daran, dass ich einen C++-Compiler habe, aber die Spraceh C lerne.



  • Ok, also liegt's daran, dass ich einen C++-Compiler habe, aber die Spraceh C lerne.

    Nein, aber alles, was in wait() drinsteht, ist C++. Einfach weglassen!

    Mach mal aus Zeile 11

    scanf("%d", xo+i);
    


  • Ok, so funktionniert es.
    Ich verstehe aber nicht warum 😕
    Es wäre nett, wenn es jemand erklären könnte. 👍



  • Gastus schrieb:

    Ok, so funktionniert es.
    Ich verstehe aber nicht warum 😕
    Es wäre nett, wenn es jemand erklären könnte. 👍

    Weil scanf die Speicheradressen der Variablen als Argument(e) erwartet und nicht die Variablen selbst.



  • aaahh natürlich!
    vielen dank für die schnelle hilfe! 🙂


Anmelden zum Antworten