Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Dann zeig deinen Code. Mit Raten kommen wir nicht weiter.
Ohne die Funktion ist jetzt alles zusammen im Hauptcode (main)!Die Funktion ist auch nicht das Thema. Die Frage ist: Wo ist das Array deklariert und wo wird es benutzt? Ist es derselbe Gültigkeitsbereich (z.B. innerhalb einer Funktion) ?
int hoehe = 100;
int breite = 100;
int karte[99][99];
for (i = 0; i < hoehe; i ++)
{
for (ii = 0; ii < breite; ii ++)
{
karte[ii][i] = 0;
}
}
Nein. Du hast irgendwo einen Fehler gemacht. Diese Stelle hast du nicht gezeigt.Der ist etwas lange würde ich sagen... Die wichtigen Stellen, wo der Fehler auftritt, habe ich euch ja bereits gezeigt. Der restliche Code sollte auch stimmen.
Es muss doch irgendeinen Grund geben, warum dieser Fehler überhaupt auftritt, oder? Kann man nicht anhand von diesem Grund den Fehler finden?
Das werden doch dann aber nicht mehrere hundert Zeilen Code sein, oder? Zeig den Code.Ohne die Funktion ist jetzt alles zusammen im Hauptcode (main)!
Wenn ich das richtig sehe, umfasst KARTE jeweils 99 Werte in beiden Dimensionen (also jeweils von 0 - 98)!
Deine Schleifen werden aber von '0' bis '99' (<100), also 100-mal durchlaufen, oder?
Anfangs hatte ich das auch noch in Funktionen verteilt. Seit diesem Fehler habe ich nun mal alles zusammengefasst...Das werden doch dann aber nicht mehrere hundert Zeilen Code sein, oder? Zeig den Code.
breite = 2293468
hoehe = 4201946
ii = 100
i = 0
Hi.
Ich hab das Programm mal im Debugger laufen lassen. Ergebnis:
SegFault, Werte der Variablen:
Angeblich sollte das doch anders sein... ;-]Code:breite = 2293468 hoehe = 4201946 ii = 100 i = 0
Warum liest du die erste Zeile nicht mit fgets und die Breite und Höhe mit sscanf aus?
Werte die irgendwoher gelesen werden, sollten immer geprüft werden.
Gruß
Das Einlesen von "hoehe" und "breite" dürfte schieflaufen, da "cnt" nicht initialisiert wurde.
char c;
int cnt; //<-- hier ;) (Standartwert ist meines Wissens nach ja 0)
while ((c = fgetc(datei)) != '\n')
{
if (cnt == 0) {
breite += (c - '0') * 10;
}
else if (cnt == 1) {
breite += (c - '0');
}
else if (cnt == 3) {
hoehe += (c - '0') * 10;
}
else if (cnt == 4) {
hoehe += (c - '0');
}
cnt += 1;
}
Ziemlich sicher. \edit wenn ich das Einlesen der Dimension so mache:Dann kann es doch aber nicht sein, dass die Ausgabe korrekt ist :S
Bist du sicher, dass du exakt den richtigen Input hast (keine zusätzlichen Bits)?
if (fscanf(datei, "%u %u", &breite, &hoehe) != 2) {
// Fehler
return 1;
}
int c;
while ((c = fgetc(datei)) != EOF && c != '\n'); // skip to the next line
Falsch. Die Variable ist nicht initialisiert und besitzt somit einen zufälligen Wert.Aber sicher und zwar gleich davor:
Code:int cnt; //<-- hier ;) (Standartwert ist meines Wissens nach ja 0)
Ziemlich sicher. \edit wenn ich das Einlesen der Dimension so mache:
dann erhalte ich in der Ausgabedatei den Wert 119.C:if (fscanf(datei, "%u %u", &breite, &hoehe) != 2) { // Fehler return 1; } int c; while ((c = fgetc(datei)) != EOF && c != '\n'); // skip to the next line
Beachte auch, das fgetc einen Integer und keinen char zurückgibt! Und das Höhe und Breite negativ sein können, ist wohl auch etwas ungünstig.
Falsch. Die Variable ist nicht initialisiert und besitzt somit einen zufälligen Wert.