---
title: "spara struct till fil"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/42021-spara-struct-till-fil"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "Niclas Ohlsson"
published: "2002-04-19T09:01:50.000Z"
updated: "2002-04-26T07:54:16.000Z"
replies: 5
views: 362
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/42021-spara-struct-till-fil"
---

# spara struct till fil

## #1 — Niclas Ohlsson, 2002-04-19T09:01Z

Jag har en struktur som ser ut så här
struct TSpar
{
char \*Namn;
char \*Info;
char \*Ingred;
char \*Fil;
};

Innehåller massa pekare
Hur sparar man dessa till en fil.
Har bara lyckats att spara adresserna och inte innehållet

Permalänk: https://www.webforum.nu/p/42021

## #2 — Beatbox, 2002-04-19T09:22Z

Ett bra sätt är ju att skapa en parameter som talar om längden på varje post i structen.

```
struct TSpar 
{ 
char *Namn;
unsigned int NamnLen; 
char *Info; 
unsigned int InfoLen; 
char *Ingred; 
unsigned int IngredLen;
char *Fil; 
unsigned int FilLen;
};
```

Permalänk: https://www.webforum.nu/p/649284

## #3 — UlfT, 2002-04-19T09:51Z

Ett enkelt sätt är att du bestämmer dig för hur stora textfält du vill ha i structen.

```
struct TSpar
{
char Namn[20];
char Info[20];
char Ingred[20];
char Fil[20];
}
```

Då är det bara att skriva ner structen till en fil (öppna för binär skrivning). Structens storlek är alltid konstant. Nackdelen är att du måste bestämma dig en gång för alla för hur stor structen ska vara.

Då skriver du ner structen genom

```
filpekare = fopen("filnamn", "wb");
fwrite(TSparVariabel, sizeof(TSpar), 1, filpekare);
```

Permalänk: https://www.webforum.nu/p/649308

## #4 — Swey, 2002-04-19T11:35Z

Det finns flera sätt.
1\. Spara strängens längd följt av strängens innehåll.

int len = strlen(sträng) + 1; // Längd inkl. 0-terminator
fwrite(&len, sizeof len, 1, fp);
fwrite(sträng, len, 1, fp);

fread(&len, sizeof len, 1, fp);
sträng = new char\[len\];
fread(sträng, len, 1, fp);

2\. Spara strängen direkt följt av 0-terminator eller radbrytning. När du läser in så skapar du en buffert och söker efter 0-terminator eller radbrytning. Finns det ingen så ökar du bufferns storlek och fortsätter söka tills det är funnet.

3\. Använd fast längd. Exempel i tidigare inlägg.

Permalänk: https://www.webforum.nu/p/649398

## #5 — Honken, 2002-04-26T06:54Z

Jag har problem när jag ska spara min struktur, som ligger i en headerfilen cars.h:

struct Player
{
	bool started;
	bool owncar;
	bool active;
	int money;
	int totmoney;
	string pl_name;
	int pl_caryrmodel;
	int pl_carprice;
	int pl_carhp;
	int pl_cartopspeed;
	
};

Sedan kör jag funktionerna savegame() och loadgame()

int main()
{
    // Här anropas funktionerna savegame() och loadgame()
{

void loadgame()
{
	FILE\* file;

	file = fopen("test", "wb");

	fread(player_1, sizeof(Player), 1, file);
	
	fclose(file);

	huvudmeny();
}

void savegame()
{
	FILE\* file;
	
	file = fopen("test", "wb");

	fwrite(player_1, sizeof(Player),1, file);
	
	fclose(file);
	
	huvudmeny();

}

Vad gör jag för fel, vill gärna få det att funka...

Felmedelandet blir:

C2664: 'fread' : cannot convert parameter 1 from 'struct Player' to 'void \*'
 No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

Tackar för all hjälp jag kan få .........

Permalänk: https://www.webforum.nu/p/658212

## #6 — UlfT, 2002-04-26T07:54Z

Pröva att skicka in en pekare till player_1.

```
fread( &player_1, sizeof(Player), 1, file);
```

Permalänk: https://www.webforum.nu/p/658261

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/42021-spara-struct-till-fil
