Schwarz-Weißbilder einlesen und ausgeben
-
Cobain schrieb:
Ich führe es ganz normal bei eclipse aus aber es wird nur eine Meldung gemacht, dass ich Bilder einsetzen soll und beendet.
Genau das dachte ich mir. Du musst die Bildernamen als Parameter übergeben, wie das in Eclipse funktioniert musst du selber rausfinden. Verstehst du den Code? Das mit den Bildernamen als Parameter sieht man es nämlich eigentlich auf den ersten Blick.
-
das sehe ich auch, jedoch funktioniert der Zugriff einfach nicht, denn die Bilddateien haben den selben Namen wie im Quellcode und befinden sich ausserdem im selben Ordner von der C-Datei.
-
tmpString ist nicht Nullterminiert.
Die Dateien müssen auch im aktuellen Verzeichnis (current working directory) sein.
Es kann das Verzeichnis sein in dem die .exe liegt. Muss aber nicht.Welches das bei dir ist, musst du herausfinden.
-
Und woher weißt du, dass der Zugriff nicht klappt?
Du überprüfst nicht den Rückgabewert vonfopen
.
-
Wie oben bereits erwähnt bin ich das erste mal mit solch einer Aufgabe konfrontiert in der eine Datei im Programm gelesen wird. Ich bekomme einen Text ausgespuckt und ging davon aus, dass wohl die Verbindung zwischen Bilddatei und Code nicht übereinstimmt.
Für nützliche Infos bin ich definitiv dankbar.
-
Du musst das Programm außerhalb von eclipse starten, also mit einem Doppelklick drauf oder über die Kommandozeile.
-
Du musst das Programm außerhalb von eclipse starten
"muss" ist ein wenig hart ausgedrückt - in jeder IDE gibt es Einstellung für die Kommandozeilen Parameter
könnte helfen:
http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.cdt.doc.user%2Ftasks%2Fcdt_t_run_arg.htm
zu deinem Verzeichnis/Datei-Problem:
normalerweise wird alles relativ zum Arbeitsverzeichnis gefunden wenn z.B. bei fopen nur ein Absolut-Pfad drinn steht - der ist aber fast nie dort wo deine C-Dateien liegen, oder dein Executable - also würde ich erstmal einen Vollpfad in der als Kommandozeilen-Parameter übergeben - damit klappt es immer
zu Fehler verstehen:
-du musst wissen wie man Breakpoints setzt und durch den Code steppst - damit findest du schnell die Fehler-du solltest immer prüfen ob deine Funktionsaufrufe (z.B. fopen usw.) ohne Fehler bestanden wurden - falls du das nicht verstehst - Internet->Google->der Befehl und lesen
viel Erfolg
-
Habe es nun mehrere male über der Kommandozeile laufen lassen, jedoch wird immer die Ausgabe "Es muss mindestens ein Bild eingegeben werden." ausgespuckt.
-
Zeig mal deinen Aufruf.
-
Nach Zeile 30 müssen zwei Argumente übergeben werden.
-
tutor@tutor-virtual-machine:~/Arbeitsfläche$ /home/tutor/workspace/Aufgabe3-SWBILD/Debug/SWBILD
Es muss mindestens ein Bild eingegeben werden.
tutor@tutor-virtual-machine:~/Arbeitsfläche$
-
Und jetzt noch den Bildpfad übergeben.
-
kenne mich übrigens mit dem ausführen der kommandozeile null aus habe es nur eben auf gut glück geschafft.
und was meinst du genau mit dem bildpfad ? etwa ebenfalls in die kommandozeile einführen ?
-
tutor@tutor-virtual-machine:~/Arbeitsfläche
ist das Prompt, wobei~/Arbeitsfläche
dein aktuelles Verzeichnis ist. ~ ist der Pfad von deienm home directory./home/tutor/workspace/Aufgabe3-SWBILD/Debug/SWBILD
ist der volle (inkl. Pfad) Dateiname von deinem Programm (Das SWBILD heißt).Fehlt also noch der Dateiname von dem Bild, getrennt durch Leerzeichen:
/home/tutor/workspace/Aufgabe3-SWBILD/Debug/SWBILD /pfad/zu/deinem/Bild.bmp /pfad/zu/einem/anderen/bild.bmp
-
Cobain schrieb:
kenne mich übrigens mit dem ausführen der kommandozeile null
Dann such mal im Netz.
Irgendwas wie
kommandozeile linux einführung
. Das ist besser als Nullwissen.
-
habe es mit den einsetzen der bilder so wie oben beschrieben gemacht habe auch an die Leertaste gedacht aber nun steht in der Konsole "Speicherzugriffsfehler (Speicherabzug geschrieben)"
-
Dann sind zumindest genug Argumente übergeben.
Aber du hast noch einen Fehler in deinem Programm.
Einen möglichen Grund nannte ich schon: https://www.c-plusplus.net/forum/p2476725#2476725Es gibt viele Gründe, warum fopen fehlschlägt.
Es kann aber auch ein anderer Fehler sein.