Problem Snake Pointer/Array

arayni

Grünschnabel
Liebe Programmierer,
ich habe ein Problem.
Mein Programm chrashed immer obwohl das Feld ausgegeben wird!

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

#define YLENGTH 20
#define XLENGTH 20

#define SNAKE_MAX 20

void feld_int(char *feld[YLENGTH][XLENGTH],char fuellung);
void feld_print(char *feld[YLENGTH][XLENGTH]);

void main()
{
    char *feld[YLENGTH][XLENGTH];

    feld_int(*feld,' ');
    feld_print(*feld);


}

void feld_int(char *feld[YLENGTH][XLENGTH],char fuellung)
{
    int x,y;

    for(y=0; y<=YLENGTH; y++)
    {
        for(x=0; x<=XLENGTH; x++)
        {
            feld[y][x]=&fuellung;
        }
    }
}

void feld_print(char *feld[YLENGTH][XLENGTH])
{

    int x,y;

    for(y=0; y<=YLENGTH; y++)
    {
        for(x=0; x<=XLENGTH; x++)
        {
            printf("%c",*feld[y][x]);
        }
        printf("\n");
    }
}


LG
 
Zuletzt bearbeitet:
Hi

als erstes solltest du die Warnungen deines Compilers gründlich anschauen.
Warnungen in C und C++ sind oft schlimmer als die "echten" Fehler.
Dein Umgang mit Pointern ist so ziemlich überall falsch.

Schau dir den Code einmal an:
C++:
#include <stdio.h>
#include <stdlib.h>

#define YLENGTH 20
#define XLENGTH 20

#define SNAKE_MAX 20

void feld_int(char feld[YLENGTH][XLENGTH], char fuellung);
void feld_print(char feld[YLENGTH][XLENGTH]);

void main()
{
	char feld[YLENGTH][XLENGTH];
	feld_int(feld, ' ');
	feld_print(feld);
}

void feld_int(char feld[YLENGTH][XLENGTH], char fuellung)
{
	int x, y;
	for(y = 0; y <= YLENGTH; y++)
	{
		for(x = 0; x <= XLENGTH; x++)
		{
			feld[y][x] = fuellung;
		}
	}
}

void feld_print(char feld[YLENGTH][XLENGTH])
{
	int x, y;
	for(y = 0; y <= YLENGTH; y++)
	{
		for(x = 0; x <= XLENGTH; x++)
		{
			printf("%c", feld[y][x]);
		}
		printf("\n");
	}
}
 
Hi

als erstes solltest du die Warnungen deines Compilers gründlich anschauen.
Warnungen in C und C++ sind oft schlimmer als die "echten" Fehler.
Dein Umgang mit Pointern ist so ziemlich überall falsch.

Schau dir den Code einmal an:
C++:
#include <stdio.h>
#include <stdlib.h>

#define YLENGTH 20
#define XLENGTH 20

#define SNAKE_MAX 20

void feld_int(char feld[YLENGTH][XLENGTH], char fuellung);
void feld_print(char feld[YLENGTH][XLENGTH]);

void main()
{
    char feld[YLENGTH][XLENGTH];
    feld_int(feld, ' ');
    feld_print(feld);
}

void feld_int(char feld[YLENGTH][XLENGTH], char fuellung)
{
    int x, y;
    for(y = 0; y <= YLENGTH; y++)
    {
        for(x = 0; x <= XLENGTH; x++)
        {
            feld[y][x] = fuellung;
        }
    }
}

void feld_print(char feld[YLENGTH][XLENGTH])
{
    int x, y;
    for(y = 0; y <= YLENGTH; y++)
    {
        for(x = 0; x <= XLENGTH; x++)
        {
            printf("%c", feld[y][x]);
        }
        printf("\n");
    }
}

Danke für deine Antwort!
Die einzige Warnung war, dass main() kein integer war ,aber es crashed trotzdem. :(

C++:
#include <stdio.h>
#include <stdlib.h>

#define YLENGTH 20
#define XLENGTH 20

#define SNAKE_MAX 20

void feld_int(char feld[YLENGTH][XLENGTH], char fuellung);
void feld_print(char feld[YLENGTH][XLENGTH]);

int main()
{
    char feld[YLENGTH][XLENGTH];
    feld_int(feld, ' ');
    feld_print(feld);
    return 0;
}

void feld_int(char feld[YLENGTH][XLENGTH], char fuellung)
{
    int x, y;
    for(y = 0; y <= YLENGTH; y++)
    {
        for(x = 0; x <= XLENGTH; x++)
        {
            feld[y][x] = fuellung;
        }
    }
}

void feld_print(char feld[YLENGTH][XLENGTH])
{
    int x, y;
    for(y = 0; y <= YLENGTH; y++)
    {
        for(x = 0; x <= XLENGTH; x++)
        {
            printf("%c", feld[y][x]);
        }
        printf("\n");
    }
}
 
Ah, hab selber noch was übersehen:
Alle <= in den for-Schleifen durch < ersetzen.

Ein Array mit zB. 3 Elementen hat die Indizes [0] [1] und [2], also 3 Stück,
aber eben keine Index [3] mehr (dafür müsste es 4 Elemente haben)

Zu den Warnungen: Welchen Compiler (und Version) Verwendest du denn?
 

Neue Beiträge

Zurück