Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Mäscht JLI'ler
Anmeldedatum: 22.05.2003 Beiträge: 150 Wohnort: Bad Hofgastein\Österreich Medaillen: Keine
|
Verfasst am: 02.07.2003, 10:35 Titel: int in struct laden |
|
|
Ich möchte mit hilfe der fopen() funktion zahlen in eine struct laden, aber irgendwas geht da nicht! Ich kann zwar einen text laden aber de brauche ich nicht!
mein code sieht ungefähr so aus: (fehler sind natürlich dabei, weil ich ihn nur aus dem gedächnis schreibe)
Code: |
struct SP_VAL
{
int x,y,x1,y1;
};
FILE *stream;
fopen("test.txt",sizeof(char),stream);
fread(sp_val,sizeof(char),stream);
fclose(stream);
|
geht das so oder irgendwie anders?? _________________ Motz´z mi net o, i bin ofänga!! AEIOU für immer |
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 02.07.2003, 10:47 Titel: |
|
|
ich würde das ganze zuerst mal in eine binäre datei schreiben da man die daten einfach als einen typ speichern kann.
Code: |
SP_VAL StrukturName;
FILE *stream;
stream=fopen("test.bin","rb+");
fread(&StrukturName.x,sizeof(int),1,stream);
fread(&StrukturName.y,sizeof(int),1,stream);
fread(&StrukturName.x1,sizeof(int),1,stream);
fread(&StrukturNamey1,sizeof(int),1,stream);
fclose(stream);
|
_________________ http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.
Never touch a running System - der Systemling |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 02.07.2003, 11:58 Titel: |
|
|
Code: |
fread(&StrukturName ,sizeof(SP_VAL),1,stream);
|
_________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Mäscht JLI'ler
Anmeldedatum: 22.05.2003 Beiträge: 150 Wohnort: Bad Hofgastein\Österreich Medaillen: Keine
|
Verfasst am: 03.07.2003, 06:23 Titel: |
|
|
kann ich dann einfach im editor war schreiben und dann als zB "Test.bin" speichern oder muss ich es vorher mit fwrite() speichern? _________________ Motz´z mi net o, i bin ofänga!! AEIOU für immer |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 03.07.2003, 08:01 Titel: |
|
|
Wenn du versuchst, eine Datei zum Lesen zu öffnen, die es nicht gibt, liefert fopen() NULL zurück. Wenn du sie zum schreiben öffnest wird die Datei angelegt. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 03.07.2003, 09:58 Titel: |
|
|
Nein du kannst es nicht einfach im editor speichern, da es die datentypen direkt speichert. _________________ http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.
Never touch a running System - der Systemling |
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 03.07.2003, 11:07 Titel: |
|
|
Hazel hat Folgendes geschrieben: | Code: |
fread(&StrukturName ,sizeof(SP_VAL),1,stream);
|
|
Du willst direkt eine Struktur laden, schau mal auf den Namen des Themas! _________________ http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.
Never touch a running System - der Systemling |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 03.07.2003, 12:12 Titel: |
|
|
Wenn SP_VAL so definiert ist:
Code: |
struct SP_VAL
{
int x,y,x1,y1;
};
|
, ist mein Code von der Funktion her äquivalent mit deinem.
Das Thema lautet "ints in eine struct" laden. Das tut mein Code doch! In der Struktur sind 4 Integers definiert, also kann er garnichts anderes laden. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 03.07.2003, 12:15 Titel: |
|
|
Code: |
fopen("test.txt",sizeof(char),stream);
|
Und was soll das für ein Konstrukt sein? In der MSDN steht das so drin:
Code: |
stream = fopen("test.txt", [ZUGRIFFSMODUS]);
|
_________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 03.07.2003, 13:20 Titel: |
|
|
Hazel hat Folgendes geschrieben: | Und was soll das für ein Konstrukt sein? |
schau mal nach oben:
Mäscht hat Folgendes geschrieben: | mein code sieht ungefähr so aus: (fehler sind natürlich dabei, weil ich ihn nur aus dem gedächnis schreibe) |
_________________ http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.
Never touch a running System - der Systemling |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 03.07.2003, 13:23 Titel: |
|
|
Hey, komm mal vom Teppich. Ich habe nur auf einen Fehler hingewiesen. Du musst nicht jeden meiner Posts kommentieren. Wenn Mäscht ein Problem damit hat, kann er es mir selber sagen. ;) _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Mäscht JLI'ler
Anmeldedatum: 22.05.2003 Beiträge: 150 Wohnort: Bad Hofgastein\Österreich Medaillen: Keine
|
Verfasst am: 20.07.2003, 19:31 Titel: |
|
|
He! Streitet da nicht herum! Ja ich habe einen Fehler gemacht, weil ich einiges verwechselt habe! Ich habe nämlich von irgendeinem PC geschrieben und habe mich nicht mehr so genau an das alles erinnern können! Deshalb der fehler bei fopen()!! _________________ Motz´z mi net o, i bin ofänga!! AEIOU für immer |
|
Nach oben |
|
|
gl_echse JLI'ler
Anmeldedatum: 01.01.2003 Beiträge: 105
Medaillen: Keine
|
Verfasst am: 21.07.2003, 12:45 Titel: |
|
|
Code: |
int* read()
{
char* data = getDataFormFile(); //die schreibarbeit erspare ich mir jetzt
int retvalue[4];
for(int i=0;i<4;i++)
{
union
{
char c[4];
int i;
} u;
u.c[0] = data[i];u.c[1] = data[i+1];u.c[2] = data[i+2];u.c[3] = data[i+3];
retvalue[i] = u.i;
}
return i;
}
|
wäre byteweise.
oder dann als ganzzahlen:
Code: |
int* read()
{
char* data[4] = getDataFormFile(); //die schreibarbeit erspare ich mir jetzt
int retvalue[4] = {atoi(data[0]), atoi(data[1]), atoi(data[2]), atoi(data[3])};
return retvalue;
}
|
hoffe ich konnte hier ma klarheit schaffen.
wobei er dass dann so in den struct laden würde:
Code: |
union{
blastruct s;
int i[4];
}data;
data.i = read();
blastruct bla = data.s;
|
edit: ich vergess einfach zu oft die codetags |
|
Nach oben |
|
|
|