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);
      }
    }
    

Log in to reply