Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Leerzeilen in geschriebene Textdatei einfügen/wegnehmen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
24.05.2005, 22:17 Uhr
etech



hallo miteinander,

habe folgendes Problem : wegen einer Druckdatei eines Matrixdruckers für ein SCO Unix,
verspringt der Drucker immer an einer bestimmten Stelle...

Habe mir jetzt ein kleines Skript gecodet, um diese Datei einzulesen, zu bearbeiten und wieder zu schreiben..

Wie kann ich jetzt an einer bestimmten Zeilennummer (zähle Sie ja mit), zwei Zeilen weniger schreiben und dies an einer anderen Stelle wieder einfügen ?

Ich führe das Prog in dem Verzeichniss aus, in dem die Datei liegt.

Ich glaube ich brauche ein zweidimensionales Array, bin aber nicht so der crack :-(

Wäre, um jeden Rat dankbar..

mfg

Ramin


C++:
#include<stdio.h>
#include<string.h>

int main (void)
{
FILE *fp_quelle, *fp_ziel;
char namequelle[256], nameziel[256];
char zeile[256];
int zeilennr=0;
int MaxZeichen=256;

printf("Name der Quell-Druck-datei : ");
gets(namequelle);
printf("Name der Zieldatei-Druck-Datei : ");
gets(nameziel);

fp_quelle=fopen(namequelle,"r");
  if (NULL==fp_quelle)
   {
    puts("Fehler beim Oeffnen der Druck-Datei ! \n");
    puts("Wahrscheinlich falscher Dateiname angegeben ! \n");
    puts("Bitte Programm erneut ausfuehren  \n");
    getchar();
    return(-1);
   }
  
fp_ziel=fopen(nameziel,"w");
   if (NULL==fp_ziel)
    {
     puts("Anlegen der Zieldatei nicht moeglich ! \n");
     getchar();
     return(-1);
    }
    
  fgets(zeile,MaxZeichen,fp_quelle); //Lese Zeile
  while(!feof(fp_quelle))            //Bis Dateiende
   {
    zeilennr++;
     if(zeilennr==30)
      {
       //fputs(zeile-2,fp_ziel); --> hier veruche ich zu manipulieren ????
      }
    fprintf(fp_ziel,"%4d",zeilennr); //Schreiben der Zeilennummern in Datei-->ausdokumentieren !!
    fputs(zeile,fp_ziel);
    fgets(zeile,MaxZeichen,fp_quelle);
   }
  
   fclose(fp_quelle);
   fclose(fp_ziel);
   printf("%d Zeilen in neue Druck-Datei geschrieben \n",zeilennr);
  
   fflush(stdin);
   getchar();
    
   return(0);
  
}


Dieser Post wurde am 24.05.2005 um 22:18 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.05.2005, 22:20 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


einfach die gewünschte zeile(n) in einem char array zwischen und dann an der gewünschten stelle in die datei schreiben...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.05.2005, 22:24 Uhr
etech



mhh, kannst Du mir bitte ein Codebeispiel geben ?

wie unterbinde ich, dass man die beiden zeilen nicht schreibt, also an der stelle die beiden zeilen "weglässt" und dann an einer anderen zeilenstelle mehr schreibt ?

thx
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.05.2005, 22:26 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


na wenn du die zeilennummer dir merkst weisst du doch das du gerade die zeile nicht schreiben willst...

also in etwa in der art


C++:
if(zeilennummer!=auszulassende_zeile){
  //schreibe in datei...
  //und merk dir die zeile in einem char array für später...
}



--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 24.05.2005 um 22:27 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.05.2005, 22:46 Uhr
etech



habe es folgendermaßen versucht, jedoch klappt es nicht so, da er nur anstatt Zeile 28 eine 29 schreibt, jedoch keine Zeile weglässt. Was mach ich falsch ?



C++:
  while(!feof(fp_quelle))            //Bis Dateiende
   {
    zeilennr++;
     if(zeilennr!=28)
      {
       //fputs(zeile-2,fp_ziel); --> hier veruche ich zu manipulieren ????
       fprintf(fp_ziel,"%4d",zeilennr); //Schreiben der Zeilennummern in Datei-->ausdokumentieren !!
       fputs(zeile,fp_ziel);
       fgets(zeile,MaxZeichen,fp_quelle);
      }


Dieser Post wurde am 24.05.2005 um 22:54 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.05.2005, 22:47 Uhr
etech



wie füge ich den code vernünftig in das forum ein ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: