/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
findes filen?
Fra : Danni Finne


Dato : 24-05-01 08:40

Hej med jer.

Hvordan kan jeg i alm ansi C under dos checke om en fil findes i forvejen?

--
Danni Finne



 
 
Anders Bo Rasmussen (24-05-2001)
Kommentar
Fra : Anders Bo Rasmussen


Dato : 24-05-01 09:24

On Thu, 24 May 2001 09:40:09 +0200,
Danni Finne <danni@finne.dk> wrote:

>Hej med jer.
>
>Hvordan kan jeg i alm ansi C under dos checke om en fil findes i forvejen?

Hvad med at se om du kan åbne den for læsning med fopen?

--
Anders Bo Rasmussen mailto:fuzz01@spamfilter.dk
Frimestervej 42 1.tv http://www.fuzz.dk
2400 Kbh. NV
Denmark

Danni Finne (24-05-2001)
Kommentar
Fra : Danni Finne


Dato : 24-05-01 18:33

> Hvad med at se om du kan åbne den for læsning med fopen?

Jeg løste det med nedenstående:

int handle;
//O_EXCL-melder fejl hvis filen eksisterer
if ((handle = open(filnavn, O_EXCL)) == -1)
{
close(handle); // tja ellers åbner/lukker vi for hurtigt
// filen eksisterer ikke, den skal oprettes
if ((handle = open(filnavn, O_CREAT | O_WRONLY | O_TEXT)) == -1)
{
perror("Filen eksisterer ikke og fejlen lyder: ");
}
else
{
// skriv header
write(handle, header, strlen(header));
}
}
else
{
// filen eksisterer og den skal åbnes som append
if ((handle = open(filnavn, O_APPEND | O_WRONLY | O_TEXT)) == -1)
{
perror("Filen eksisterer, men fejlen lyder: ");
}
}




Kent Friis (24-05-2001)
Kommentar
Fra : Kent Friis


Dato : 24-05-01 18:43

Den Thu, 24 May 2001 19:32:53 +0200 skrev Danni Finne:
>> Hvad med at se om du kan åbne den for læsning med fopen?
>
>Jeg løste det med nedenstående:
>
>int handle;
>//O_EXCL-melder fejl hvis filen eksisterer

Iflg min manual gælder det kun hvis du samtidig specificerer
O_CREAT.

>if ((handle = open(filnavn, O_EXCL)) == -1)
>{
>close(handle); // tja ellers åbner/lukker vi for hurtigt
>// filen eksisterer ikke, den skal oprettes
> if ((handle = open(filnavn, O_CREAT | O_WRONLY | O_TEXT)) == -1)

Den linie burde kunne slås sammen med den open du har ovenfor.

> {
> perror("Filen eksisterer ikke og fejlen lyder: ");
> }
> else
> {
> // skriv header
> write(handle, header, strlen(header));
> }
>}
>else
>{
>// filen eksisterer og den skal åbnes som append
> if ((handle = open(filnavn, O_APPEND | O_WRONLY | O_TEXT)) == -1)
> {
> perror("Filen eksisterer, men fejlen lyder: ");
> }
>}

Mvh
Kent
--
http://www.celebrityshine.com/~kfr/

Danni Finne (24-05-2001)
Kommentar
Fra : Danni Finne


Dato : 24-05-01 22:13

> Iflg min manual gælder det kun hvis du samtidig specificerer
> O_CREAT.

Ja det virker godt nok ikke nu når jeg startede min IDE op igen og prøvede.
Jeg kunne ellers have sværget at det virkede tidligere idag, med de linier
jeg postede?

Nå, men problemet er, at hvis filen eksisterer, skal der appendes til den.
Hvis den ikke eksisterer skal den oprettes, der skal skrives en header og
der skal begyndes at skrives til den (det er en logfil)

MVH
Danni



Anders Bo Rasmussen (24-05-2001)
Kommentar
Fra : Anders Bo Rasmussen


Dato : 24-05-01 22:21

On Thu, 24 May 2001 23:12:53 +0200,
Danni Finne <danni@finne.dk> wrote:

>> Iflg min manual gælder det kun hvis du samtidig specificerer
>> O_CREAT.
>
>Ja det virker godt nok ikke nu når jeg startede min IDE op igen og prøvede.
>Jeg kunne ellers have sværget at det virkede tidligere idag, med de linier
>jeg postede?
>
>Nå, men problemet er, at hvis filen eksisterer, skal der appendes til den.
>Hvis den ikke eksisterer skal den oprettes, der skal skrives en header og
>der skal begyndes at skrives til den (det er en logfil)

Kan du ikke åbne den for appending og så bruge ftell, til at se om du er
i starten af filen?

--
Anders Bo Rasmussen mailto:fuzz01@spamfilter.dk
Frimestervej 42 1.tv http://www.fuzz.dk
2400 Kbh. NV
Denmark

Danni Finne (24-05-2001)
Kommentar
Fra : Danni Finne


Dato : 24-05-01 23:24

Burde nedenstående ikke kunne gøre tricket?

int handle;

if ((handle = open("test.txt", O_APPEND | O_TEXT)) == -1)
{
// hvis der ikke kan skrives videre på filen,
// så findes den ikke og skal oprettes
if ((handle = open("test.txt", O_CREAT | O_TEXT)) == -1)
{
perror("Error:");
}
else
{
// hvis den er succesfully oprettet skal header skrives
write(handle, "header\n", 7);
}
}



Danni Finne (24-05-2001)
Kommentar
Fra : Danni Finne


Dato : 24-05-01 23:58

> Burde nedenstående ikke kunne gøre tricket?

med O_WRONLY i begge open sætninger gør det...

> if ((handle = open("test.txt", O_APPEND | O_WRONLY | O_TEXT)) == -1)



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste