Osaako joku neuvoa, miten saan ensimmäisen rivin poistettua tekstitiedostosta ??
File sisältää:
aaaaaaaaaaaaaaa
bbbbbbbbbbbbb
ccccccccccccc
ddddddddddddd
ja se pitäisi saada näyttämään
bbbbbbbbbbbbb
ccccccccccccc
dddddddddddd
Tämänhetkinen kooodini, on seuraava:
(avaa tiedoston, kopio tämän ja nimeää uudelleen alkuperäiseksi)
Koettanut tuolla FSEEK-jutulla, mutta se ei toimi halutulla tavalla
#include
#define ERR_OPEN_1 11
#define ERR_OPEN_2 12
#define ERR_READ 13
#define ERR_WRITE 14
#define ERR_SEEK 15
int f_err_report(int mode) {
if(mode==ERR_OPEN_1) fprintf(stderr,"error opening file1n");
if(mode==ERR_OPEN_2) fprintf(stderr,"error opening file2n");
else if(mode==ERR_READ) fprintf(stderr,"error reading from file");
else if(mode==ERR_WRITE) fprintf(stderr,"error writing to file");
else if(mode==ERR_SEEK) fprintf(stderr,"error looking up a position");
exit(1);
}
int main( void )
{
FILE *stream;
FILE *new;
char line[512];
int result;
int i;
char ch;
int renameFile=0;
stream = fopen( "testi.txt", "r" );
new = fopen( "uusi.txt", "w" );
result = fseek( stream,30, SEEK_SET);
while(!feof(stream)) {
ch=getc(stream);
if(!feof(stream))
putc(ch,new);
else break;
if(ferror(stream)) f_err_report(ERR_WRITE);
}
fclose(stream);
fclose(new);
renameFile=rename("uusi.txt", "testi.txt");
if (renameFile!=0)
perror("Error in renaming file.");
return 0;
}
File sisältää:
aaaaaaaaaaaaaaa
bbbbbbbbbbbbb
ccccccccccccc
ddddddddddddd
ja se pitäisi saada näyttämään
bbbbbbbbbbbbb
ccccccccccccc
dddddddddddd
Tämänhetkinen kooodini, on seuraava:
(avaa tiedoston, kopio tämän ja nimeää uudelleen alkuperäiseksi)
Koettanut tuolla FSEEK-jutulla, mutta se ei toimi halutulla tavalla
#include
#define ERR_OPEN_1 11
#define ERR_OPEN_2 12
#define ERR_READ 13
#define ERR_WRITE 14
#define ERR_SEEK 15
int f_err_report(int mode) {
if(mode==ERR_OPEN_1) fprintf(stderr,"error opening file1n");
if(mode==ERR_OPEN_2) fprintf(stderr,"error opening file2n");
else if(mode==ERR_READ) fprintf(stderr,"error reading from file");
else if(mode==ERR_WRITE) fprintf(stderr,"error writing to file");
else if(mode==ERR_SEEK) fprintf(stderr,"error looking up a position");
exit(1);
}
int main( void )
{
FILE *stream;
FILE *new;
char line[512];
int result;
int i;
char ch;
int renameFile=0;
stream = fopen( "testi.txt", "r" );
new = fopen( "uusi.txt", "w" );
result = fseek( stream,30, SEEK_SET);
while(!feof(stream)) {
ch=getc(stream);
if(!feof(stream))
putc(ch,new);
else break;
if(ferror(stream)) f_err_report(ERR_WRITE);
}
fclose(stream);
fclose(new);
renameFile=rename("uusi.txt", "testi.txt");
if (renameFile!=0)
perror("Error in renaming file.");
return 0;
}
Vastaukset 4
Vanhimmat
Kirjoita tiedosto uudelleen alkaen toisesta rivistä.
Miten saan kohdistettua edellisessä koodissa pointterin 2 riviin ??
Jos tarkoituksesi on tosiaan poistaa rivejä, niin lue tiedosto rivi (eikä merkki) kerrallaan (fgets) ja tallenna luetut rivit toiseen tiedostoon vasta toisesta rivistä alkaen.
poista eka alkio ja array takasin txt tiedostoksi