21. juli 2003 - 10:39
Der er
16 kommentarer og 1 løsning
tilføje linje til fil
Hvordan får jeg den til at skrive en linje til en allerede existerende fil ? den må dog ikke tilføje linjen til filen, hvis den existere. please help :-)
Annonceindlæg fra Deloitte
tak, mangler stadigvæk så den ikke skriver den samme linje flere gange.
Hvilken compiler bruger du? //>Rune
Dev-C++ og/eller Microsoft Visual Studio.NET 2003
Fil = fopen("c:\fil.fil","a") //>Rune
a står for Append! Thx 4 Poinz //>Rune
Vil dette kunne bruges ? og hvad står b for? Fil = fopen("c:/Fil.fil", "w+b+a");
Uha, kan jeg sq ik' lige huske :-( Men prøv at slå fopen op i referencen! //>Rune
b står for binary. Og skal næppe bruges i denne sammenhæng.
21. juli 2003 - 13:52
#10
Hmm min fejl then! //>Rune
21. juli 2003 - 13:56
#11
for at svare på spørgsmålet: ..<snip snip>...den må dog ikke tilføje linjen til filen, hvis den existere. her er koden: (stil endelig sprøgsmål :-o) compilet med MSVC (microsoft) #include <fstream.h> #include <string.h> int main(int argc, char* argv[]) { //indlæs tekst char strInText[200]; char strFilename[]={"test.txt"}; cin >> strInText; //åben fil ifstream file(strFilename, ios::binary); char c; int i=0; bool bLineFound=true, bNotEof; //gennemløb fil while( bNotEof=(file.read(&c, 1)!=NULL) ) { //har vi læst en linie ind? if(c==0x0a || c==0x0d) { if(i!=0) { if(bLineFound) { cout << "\nlinie findes allerede!\n"; break; } } i = 0; bLineFound=true; } else { //compare line if(strInText[i]!=c) bLineFound=false; i++; } //udkommenter nedenstående for at se filens indhold //cout << c; } file.close(); if(!bNotEof) { //tilføj nye tekst til fil ofstream fileappend(strFilename, ios::binary | ios::app); strcat(strInText, "\r\n"); fileappend.write(strInText, strlen(strInText)); fileappend.close(); } return 0; }
21. juli 2003 - 13:58
#12
for god ro og orden : bNotEof burde nok hede bTextFound efter oprettelse af ofstream og ifstream bør man teste om det gik godt med file.is_open().. mvh Sovsekoder
21. juli 2003 - 14:00
#13
filen læses igennem byte for byte, hver linie sammenlignes med indstrengen - hvis der findes et match hopper den ud af while-løkken og slutter. Hvis linien ikke findes går den ind i den sidste if betingelse (if(bNotEof)...), her appendes den nye linie...
21. juli 2003 - 14:05
#14
sovsekoder> Vil du ik' lige kontakte mig på rune@medions.dk //>Rune
21. juli 2003 - 14:14
#15
det bedste er nu at poste, her i denne tråd - så folk kan få glæde af det.. - men det kan vi vel oxo gøre bagedder - (bagefter)
21. juli 2003 - 14:31
#16
sovsekoder> Jeg vil kalde det meget dårlig stil at læse text filer binært og teste på <CR> eller <LF>.
21. juli 2003 - 14:41
#17
lol, arne :-) point taken ;)
Kurser inden for grundlæggende programmering