Datei in Array
-
Kann mir mal jemand sagen wie ich eine Datei in ein array laden lasse.
hab schon zu viel ausprobiert und es nich geschafft.
-
Eigentlich nicht anders, als wenn du in einen Puffer einliest.
(Ein Array kann auch als Pointer behandelt werden)#include "stdio.h" int main() { unsigned char array[128] = {0}; FILE *dadey; if (dadey = fopen("c:\\data.txt", "r")) { fread(array, sizeof(char), 128, dadey); fclose(dadey); } }
-
Meinst du vielleicht in einem 2. Dim. char Array?
-
im 2D char Array.
array: field[78][22](0-77,0-21)
pointer: FILE *ptr
-
mir niemand helfen?
-
Sehe ich das richtig, dass es sich wahrscheinlich um eine Textdatei handelt, deren genaue Größe (max. Anzahl Zeichen pro Zeile etc.) Dir bekannt ist und dass Du den Inhalt gerne in dem array haben möchtest, sodass Du auf die Zeilen/Spalten einzeln zugreifen kannst?
In dem Fall könntest Du das ja so oder ähnlich machen:#include <cstdio> int main() { char field[78][22] = {0}; FILE *file = fopen("test.txt", "r"); if(file != NULL) { int pos = 0; while(!feof(file) && pos < 78) { fgets(field[pos], 22, file); pos++; } } for(int i = 0; i < 78; i++) printf("%s", field[i]); return 0; }
-
werd ma mein QTXT posten.
//Include of header files #include <stdio.h> #include <conio.h> //Variables char field[78][22]; char player,way,wall,sign,keypress; int x,y,posx,posy,c; char* filename="field.fm"; FILE* ptr; //Initialing int initial(){ //Initial variables posx=1; posy=1; player='#'; way=':'; wall='|'; sign=way; //Header text textcolor(12); gotoxy(80/2-4,1);printf("ESC=EXIT"); textcolor(2); gotoxy(80/2-8,2);printf("G=Gang M=Mauer"); //Initial fieldarray for(y=0;y<=21;y++){ for(x=0;x<=77;x++){ field[x][y]='|'; } } //Set editor charactere on definied position field[posx][posy]=player; //Game field were give out for(y=0;y<=21;y++){ for(x=0;x<=77;x++){ gotoxy(x+2,y+3); if(field[x][y]==player) textcolor(10); if(field[x][y]==wall) textcolor(15); if(field[x][y]==way) textcolor(14); printf("%c",field[x][y]); } } } inline int keyboard(){ //When push a char there are save in 'keypress' if(kbhit()){ keypress=getch(); } } int calculation(){ //When push any char in 'int keyboard' the choice value were give out on old player position if(keypress!=0){ field[posx][posy]=sign; gotoxy(posx+2,posy+3); if(sign==way) textcolor(14); if(sign==wall) textcolor(15); printf("%c",field[posx][posy]); } //Calculation of move switch(keypress){ case 72: if(posy>1) posy--; break; case 80: if(posy<20) posy++; break; case 75: if(posx>1) posx--; break; case 77: if(posx<76) posx++; break; } //Player char were give out on moment player position field[posx][posy]=player; gotoxy(posx+2,posy+3); textcolor(10); printf("%c",field[posx][posy]); //Sign choice if(keypress=='g') sign=way; if(keypress=='m') sign=wall; //'keypress' is nothing when don´t push ESC in 'int keyboard' if(keypress!=27){ keypress=0; } } int ending(){ textcolor(15); gotoxy((80/2)-23,25/2); printf("Feld Speichern? [J]a/"); keypress=0; do{ if(kbhit()){ keypress=getch(); } }while(keypress!='j'); if(keypress=='j'){ field[posx][posy]=player; ptr=fopen(filename,"w+"); fputs(field,ptr); fclose(ptr); } } //Mainfunction int main(){ initial(); do{ keyboard(); calculation(); }while(keypress!=27); ending(); }
ich werd aus deinem BSP QTXT nicht schlau.
zu deinem beispiel währe ma eine kleine erläuterung gut.
oder gibts da vieleicht noch ne andere lösung?P.S.: Sollte ich mich anderen einfacheren sachen widmen? mach C erst seit 1-2
wochenMFG
THX
-
Erläuterung (gekürzt):
//Dein Feld char field[78][22] = {0}; //Öffnen der Datei, in der die Daten gespeichert sind FILE *file = fopen("test.txt", "r"); if(file != NULL) { int pos = 0; //aktuelle Zeile die eingelesen wird //solange das Ende der Datei nicht erreicht ist und weniger als //78 Zeilen eingelesen wurden, wird eine Zeile eingelesen und //ins array kopiert. while(!feof(file) && pos < 78) { fgets(field[pos], 22, file); pos++; } }
-
hab das jetzt so eingebaut:
//Initialing int initial(){ //Decleration int loadpos = 0; //Initial variables posx=1; posy=1; player='#'; way=':'; wall='|'; sign=way; //Header text textcolor(12); gotoxy(80/2-4,1);printf("ESC=EXIT"); textcolor(2); gotoxy(80/2-8,2);printf("G=Gang M=Mauer"); //Initial fieldarray ptr = fopen(filename, "r"); if(ptr != NULL){ while(!feof(ptr) && loadpos < 78){ fgets(field[loadpos], 22, ptr); loadpos++; } } //Set editor charactere on definied position field[posx][posy]=player; //Game field were give out for(y=0;y<=21;y++){ for(x=0;x<=77;x++){ gotoxy(x+2,y+3); if(field[x][y]==player) textcolor(10); if(field[x][y]==wall) textcolor(15); if(field[x][y]==way) textcolor(14); printf("%c",field[x][y]); } }
nun sollte das feld so ausgegeben werden:
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
|:||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|
|:||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|
|:||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|
|:||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|
|:||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|
|:||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|
|:||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|
|:||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|
|:||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|
|:||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|
|:||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|
|:||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|
|:||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|
|:||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|
|:||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|
|:||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|
|:||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|
|:||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||:|
|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||aber es wird wirres zeug ausgegeben!
Woran kanns liegen?
-
Hast du schon mal überprüft, ob deine Zeichen auch richtig in field[][] eingelesen werden??