Problem beim Compilieren
-
Also ich habe nach ganz langer Zeit mal wieder angefangen kleine Sachen in C/C++ zu schreiben.
Hab zwischen durch nur PHP und Java gemacht weils beruflich halt gefragt war.Da mir mit der Zeit das Visual Studio einfach zu groß geworden ist und irgendwie nur sehr schlecht funktioniert hat, habe ich mir nun einen anderen Editor genommen: Code::Blocks
Erste kleine sachen gemacht ala "Hallo World". Soweit auch noch kein problem. Nun dann wollte ich ein altes projekt zurück ins leben rufen an dem ich in meiner ausbildung gescheitert bin (2006). Das prejekt war in c geschrieben und ich wollte es damals in OOP umbauen.
nun gut, ich hab die conioex.c und die conioex.h hinzugefügt und das alte programm rein kopiert. Anschließend auf "build" geklickt und kriege folgenden fehler:
undefined reference to `_clrscr`
nun gehe ich mal davon aus das die conioex.c nicht mit compiliert wurde. Habe in ordner bin auch nur eine main.o aber keine conioex.o
In den Settings ist ein GNU GCC Compilier selectet. Ich denke der basiert auf MinGW. Bin mir aber nicht sicher. Nun frage ich mich, ob ich einen fehler im programm habe oder ob ich einfach den Compiler anders einstellen muss.
Wenns wirklich am kompiler liegt, müsste das thema verschoben werden.
Die probleme ändern sich übrigens auch nicht wenn ich draus c++ projekte mache.Vllt kann man mir da ja helfen.
Lieben Dank schon mal
Sqwan
-
Klassisch.
Wenn man nicht-ANSI C konforme Aufrufe verwendet, scheitert man spätestens beim Umstieg auf einen anderen Compiler. Deshalb: verwende Standards, soweit es geht. Du stehst dann wohl vor der Entscheidung, doch wieder VS zu nehmen oder aber deine offensichtlich selbstgebastelten, compiler- und/oder plattformabhängigen Funktionen schrittweise an evtl. vorhandenen ebenfalls plattformabhängigen Erweiterungen deines neuen Compilers anzupassen. Vielleicht funktioniert für deinen Fall ja schon#include <conio.h> /* compiler+plattformabhängig!! */
CodeBlocks unterstützt doch auch andere Compiler, auch VC++. Installiere falls noch nicht vorhanden VS2005 aus deiner damaligen Zeit nach und binde ihn in CodeBlocks ein. Könnte klappen.
-
So... Hab jetzt einfach Visual Studio genommen.
Ein problem hab ich aber noch:
void loadMap(char * pfad) { FILE *datei; int i = 0; datei = fopen ("map1.txt", "r"); char * c; if (datei != NULL) { while((c = fgets(line[i],LAENGE,datei)) != NULL) { //printf ("%s",line[i]); line[i]; i++; } } fclose (datei); }
Wenn ich das in den Debugger gebe zeigt dieser mir jedes zweite c als leer an.
11111111111111111111111111111111111111111111111111 1 1 1 1 1 1 1 1 1 1 111 1 1 11111 1 1 1111111 1 1 111111111 1 1 11111111111 1 1 1 111 1 1 1 1 111 1 1 1 11111111111 1 1 1 111 1 1 1 1 111 1 1 1 1111111 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11111111111111111111111111111111111111111111111111
Das ist die txt dazu. Die ist genau 50x50 Zeichen.
line[51][51] <-- Sollte alles mit \n rein gehenfor(int i=0; i<=100; i++) { printf("%s",line[i]); }
Auch meine Ausgabe bestätigt mir das ich 100 durchläufe für alle ausgaben brauche.
Hat vllt jemand eine erklärung dazu?
-
Wenn 50 Zeichen pro Zeile + '\n' + '\0' muss line mind. 52 Zeichen lang sein!
fgets liest max. LAENGE-1 Zeichen ein, das '\n' wird somit nicht gelesen sondern erst beim 2. Mal (falls LAENGE==51 ist). Dein Programm kann schon damals nicht korrekt gelaufen sein.