---
title: "Kopiera fil"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/114257-kopiera-fil"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "taper lawyer"
published: "2004-10-24T13:12:42.000Z"
updated: "2004-10-24T20:04:16.000Z"
replies: 11
views: 393
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/114257-kopiera-fil"
---

# Kopiera fil

## #1 — taper lawyer, 2004-10-24T13:12Z

Hur gör jag för att kopiera en fil?

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

## #2 — tydal, 2004-10-24T13:23Z

Du skapar en ny fil med samma innehåll som den du vill kopiera.

Du öppnar alltså filen du vill kopiera från och filen du vill kopiera till. Sedan läser du från filen du ska kopiera från och skriver till filen du ska kopiera till. Slutligen stänger du filerna.

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

## #3 — taper lawyer, 2004-10-24T13:28Z

Kan man göra det med t ex en EXE-fil också?

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

## #4 — tydal, 2004-10-24T13:52Z

Ja, det spelar ingen roll vad det är för filer. Men du ska alltid öppna filerna binärt.

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

## #5 — taper lawyer, 2004-10-24T14:04Z

Okej, tack!
Hur gör man för att kolla om en mapp existerar, då?

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

## #6 — tydal, 2004-10-24T14:10Z

I vilket syfte? För att se om du kan kopiera dit? Det är bara att prova. Du får ett felmeddelande om det inte går.

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

## #7 — taper lawyer, 2004-10-24T14:39Z

Okej, och om man skall kolla om en fil existerar? Försöker man öppna filen då för att se om man lyckas?

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

## #8 — tydal, 2004-10-24T14:42Z

Ja.

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

## #9 — taper lawyer, 2004-10-24T16:31Z

Hm, jag har stött på vissa problem. Jag har en kod som ser ut ungefär så här:

```
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

int main(int argc, char **argv)
{
	FILE *pFile;
	long lSize;
	char *buffer;
	
	pFile = fopen(argv[0], "rb");
		
	// Läs in från filen
		
	fclose(pFile);
		
	pFile = fopen("C:\\ett_annat_ställe\\".argv[0], "wb");
		
	// Skriv en kopia
		
	fclose(pFile);
	free (buffer);
}
```

Men när jag skall kompilera så får jag fram:

> 13: error: request for member \`argv' in \`"C:\\\\ett_annat_ställe\\\\"', which is of non-class type \`const char\[66\]'
> 26: error: request for member \`argv' in \`"C:\\\\ett_annat_ställe\\\\"', which is of non-class type \`const char\[66\]'

Rad 13 är pFile = fopen(argv\[0\], "rb"); och rad 26 är pFile = fopen("C:\\\\ett_annat_ställe\\\\".argv\[0\], "wb");.

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

## #10 — luna, 2004-10-24T17:04Z

några saker som jag hittar på rak arm...

1\. argv\[0\] är namnet på ditt program och inte första argumentet. således borde du ha argv\[1\] där.

2\. raden: pFile = fopen("C:\\\\ett_annat_ställe\\\\".argv\[0\], "wb");
är mer PHP än C/C++...  ett alternativ vore...

```
char nyfil[256];
sprintf( nyfil, "c:\\ett_annat_ställe\\%s", argv[1] );
pFile = fopen( nyfil, "wb");
```

3\. en liten varning när du kör free( buffer ) när du inte allokerat minne för denna pekare.

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

## #11 — PeW, 2004-10-24T19:17Z

Man bör alltid testa sina pekare och filhandtag för att slippa otrevliga överraskningar. 

```
pFile = fopen(argv[0], "rb");
```

Kan lätt formas om till ett test:

```
if((pFile = fopen(argv[0], "rb"))==NULL)
         exit(1);
```

Och deleten av buffer:

```
if(buffer)
   free(buffer)
```

Typ ungefär :)

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

## #12 — taper lawyer, 2004-10-24T20:04Z

Tack för hjälpen allihopa! :)

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

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/114257-kopiera-fil
