probleme mit lesen und schreiben in datei
-
servus, hab ein kleines problem mit dem code. dieser code hängt die daten einer datei an die andere dran. das prog geht auch soweit. es soll nun aber alle tabulatorzeichen durch leerzeichen der zu kopierenden datei ersetzen. ich hab aber kein plan wie ich das anstellen soll. vieleicht kann mir ja jemand helfen.
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>#define PUFFGROESSE 512
int main(int argc, char *argv[]){
int fd1, fd2, n1;
char puffer1[PUFFGROESSE];if((fd1=open( argv[1], O_WRONLY|O_APPEND))==-1){ // 1.Datei oeffnen zum schreiben
fprintf(stderr,"...kann '%s' nicht zum lesen oeffnen\n",argv[1]); // am Dateiende
exit(1);
}
if((fd2=open( argv[2], O_RDONLY))==-1){ // 2.Datei oeffnen zum lesen
fprintf(stderr,"...kann '%s' nicht zum lesen oeffnen\n",argv[2]);
exit(2);
}while((n1=read(fd2,puffer1,PUFFGROESSE)) > 0) // 2.Datei lesen
if(write(fd1,puffer1,n1) != n1){ // und in 1.Datei schreiben
fprintf(stderr,"...Fehler bei write\n");
exit(3);
}
return(0);
}
-
z.b. nach dem einlesen in den buffer (und vor dem abspeichern) in einer schleife die bytes durchgehen und jedes '\t' (0x09) gegen ein space (0x20) tauschen...
-
hab das gerade mal versucht aber irgendwie klappt das nicht haste evt auch noch etwas quelltext für mich?
-
while((n1=read(fd2,puffer1,PUFFGROESSE)) > 0) { // 2.Datei lesen int i = 0; char* distance = puffer1 + n1; for( ;(puffer1 + i) != distance; i++) { if(puffer1[i] == '\t') { puffer1[i] = ' '; } } if(write(fd1,puffer1,n1) != n1){ // und in 1.Datei schreiben fprintf(stderr,"...Fehler bei write\n"); exit(3); } }