20. august 2002 - 10:56
Der er
11 kommentarer og 2 løsninger
Overskriv linie i tekstfil (visual C++ 6.0)
Jeg har en tekstlinie som skal indsættes i en tekstfil, sådan at linien i den oprindelig fil overskrives. Jeg kender linie nummeret i tekstfilen, hvordan gør jeg det?
Annonceindlæg fra DE-CIX
20. august 2002 - 12:52
#1
Med mindre du vil til at lave en masse fix-fakserier i den originale file, er det nemmeste nok: #include <stdio.h> #include <conio.h> int main(void) { FILE *inpFile; FILE *outpFile; int lineCount; char buffer[256]; char *nyLinie = "Denne linie skal sættes ind på linie 10."; if ((inpFile = fopen("C:\\gl_fil.txt", "rt")) == NULL || ((outpFile = fopen("C:\\ny_fil.txt", "wt")) = NULL) return -1; lineCount = 0; while (fgets(buffer, sizeof(buffer)-1, inpFile) != NULL) { if (++lineCount == 10) fputs(outpFile, nyLinie); else fputs(outpFile, buffer); }; fclose(outpFile); fclose(inpFile); return 0; } Eller noget i den stil.
20. august 2002 - 13:08
#2
hvad bruges inpFile til?
20. august 2002 - 13:14
#3
og hvorfor opstår denne fejl: error C2664: 'fputs' : cannot convert parameter 1 from 'struct _iobuf *' to 'const char *'
20. august 2002 - 13:31
#4
Den oprindelige fil læses fra inpFile og "dumpes" over i ourpFile - med den ønskede linie udskiftet med den nye. fputs(nyLinie, outpFile); og fputs(buffer, outpFile); i stedet for.
20. august 2002 - 13:42
#5
Jeg er nødt til at overskrive den oprindelige fil (kildekode til et program), kan jeg ikke indlæse filen på en eller anden måde så jeg ikke får 2 filer ud af det i sidste ende...?
20. august 2002 - 14:18
#6
selvom jeg prøver ovenstående version får jeg en assertion fejl: stream != NULL ...
21. august 2002 - 11:59
#7
Du kan jo altid "dumpe" output filen i C:\TEMP, slette den gamle og flytte den nye derover. Alternativt, skal du bare "hælde" outpFile tilbage i inpFile: fopen(inpFile, "C:\\gl_fil.txt", "r+t"); // Både læse og skriv. fopen(outpFile, "C:\\temp\\ny_fil.txt", "w+t"); // Både skriv og læs. fseek(inpFile, 0, SEEK_SET); fseek(outpFile, 0, SEEK_SET); while (fgets(buffer, sizeof(buffer)-1, outpFile) fwrite(buffer, inpFile); fclose(inpFile): fclose(outpFile); remove("C:\\temp\\ny_fil.txt");
21. august 2002 - 14:18
#8
hvad med assertion fejlen, ved du hvorfor jeg får den?
21. august 2002 - 15:10
#9
Hvad f..... betyder assertion fejl: stream != NULL - er det virkeligt alt hvad du får ???
22. august 2002 - 07:34
#10
Når jeg kører programmet (kompile går godt) får jeg: Debug assertion failed! Program: .... (stien til programmet) file: fputs.c line 48 Expression: stream!=NULL For information blah blah
22. august 2002 - 11:18
#11
BTW fwrite kaldes med 4 parametre, hvordan får jeg fat i det to sidste? (size og count)
29. august 2002 - 07:54
#12
Jeg tror jeg lukker spørgsmålet, der er ikke kommet nogen respons i den sidste uge. Soepro får naturligvis nogle point for indsatsen...
29. august 2002 - 08:32
#13
fwrite(buffer, sizeof(buffer), 1 /* eet element af buffer's størrelse */, inpFile);
Kurser inden for grundlæggende programmering