Arrayausgabe anders als Arrayinhalt



  • Hallo, ich habe folgendes Programm:

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <conio.h>
    
    int main()
    {
    	int map[4][4];
    
    	srand(time(0));
    
    	for(int y = 0; y < 5; y++) {
    		for(int x = 0; x < 5; x++) {
    			map[x][y] = (rand() % 10);
    			printf("%d", map[x][y]);
    		}
    	}
    	printf("\n");
    
    	for(int y = 0; y < 5; y++) {
    		for(int x = 0; x < 5; x++) {
    			printf("%d", map[x][y]);
    		}
    	}
    
    	getch();
    	return 0;
    }
    

    Jetzt ist es aber so, dass was anderes ausgegeben wird, als eigentlich im Array drinsteht.
    Genauer gesagt entsprechen die zweite bis fünfte Stelle den letzten Stellen vor der allerletzten Stelle (am besten mal anschauen).

    Ich hab keine Ahnung wieso das so ist. Ich hab auch keinen Plan, was ich falsch gemacht haben könnte. Abgesehen davon kommt während der Laufzeit, wenn ich dann ne Taste drücke, die Fehlermeldung:

    Run-Time Check Failure #2 - Stack around the variable 'map' was corrupted.

    Visual Studio zeigt auf die letzte Zeile also auf die geschlossene Klammer der main()-Funktion.

    Könnt ihr mir helfen??

    Danke schonmal fürs lesen 🙂



  • Cloppy schrieb:

    int map[4][4];
    

    Einen Array mit int???? braucht es nicht char??



  • x und y laufen über die grenzen des arrays

    außerdem solltest du vlt die laufvariablen vertauschen( x und y)



  • Kuldren schrieb:

    x und y laufen über die grenzen des arrays

    Einen Tick genauer, bitte! 😉

    Wenn du ein Array map[4][4] definierst, dann geht das von map[0][0] bis map[3][3], nicht map[4][4]! Daher musst du deine for-Schleifen einfach anpassen, und schon flutscht es! 🙂



  • Achja natürlich!
    Da hatte ich aber ein dickes Brett vorm Kopf. Hab das Array einfach zu klein gehabt^^. Jetzt läuft es einwandfrei.

    Zu der char bzw int-Sache. Ist das nicht egal? Wenn ich nur integer ins Array einlese, dann muss ich doch nicht char nehmen oder?



  • Sorry mein Fehler....geht natürlich....
    War mir bisher nur nicht bewusst...



  • Cloppy schrieb:

    Wenn ich nur integer ins Array einlese, dann muss ich doch nicht char nehmen oder?

    Dann DARFST Du nicht char nehmen!


Anmelden zum Antworten