fstream Schreibeposition bestimmten und char einfügen

bRa1NwAsh

Grünschnabel
Hallo,


ich bin neu hier möchte gerne eine Textdatei öffnen und Zeile für Zeile an bestimmten Stellen ein char einfügen und gegebenenfalls die restlichen Leerzeichen ignorieren/löschen. Als Anmerkung noch die sollte wie auch dem Topic zu entnehmen in C++ gesehen.

//Edit:
Die Datei(.csv) beisteht aus diesen Datengerüst. Die Datensätze sind jeweils in das erste Element der Spalte geschrieben und somit ein String. Das Grundgerüst verstehe ich, nur wenn ich an nach diesen Stellen den String durch ";" teilen möchte überschreibt er mit den nachfolgenden char.
Diese Textdatei sieht wie folgt aus:

0102Hans__________________________Peter_________________________012349988
0304Anton_________________________Schlau_________________________012349988
0506Test__________________________User__________________________012349988

...

//( "_" = " " / Unterstrich zu ersetzen durch Leerzeichen)

/*Syntax sollte wie folgt aussehen:
dd.mm
Vornamefeld(immer gleiche Größe 30 Zeichen, aufgefüllt mit Leerzeichen)
Nachname(aufgefüllt mit Leerzeichen)
Nummer(1234)
weitere Nummer(9988) */


Das ganze soll nachher so ausssehen:

0102;Hans;Peter;01234;9988;
0304;Anton;Schlau;01234;9988
0506;Test;User;01234;9988;

Würde mich über Hilfe freuen:)
 
Zuletzt bearbeitet:
Hi

das die chars beim Schreiben in die datei überschrieben werden, ist normal.
Wenn du an mehreren Stellen was einfügen willst, lädst du sie am einfachsten gleich komplett und schreibst den kompletten Inhalt nach den Änderungen wieder raus.

Gruß
 
Wenn du eine Datei hast, in der steht:
abcd
kannst du ein m so einfügen:
abmd
aber nicht so:
abcmd

Um das zu erreichen, müsstest du alles nach dem m neu schreiben.
Hier zwar nur ein d, können aber auch 10 GB sein.
Ändert nichts daran.
Wenn du jetzt an mehreren Stellen was einfügen willst, wäre es besser, statt für jeden Buchstaben alles dahinter neu schreiben gleich die ganze Datei ins Programm einzulesen und dann einmal mit allen eingefügten Sachen wieder rausschreiben.
 
OK, ich nehme mal an, die Nummern sind immer gleich lang:
C:
FILE *r;
FILE *w;
w=fopen("tabelle.csv");
r=fopen("datei.txt","r");
char line[1000];
int n1;
char user[100];
char user2[100];
int n2;
int n3;
char unnoetig[1000];
while(fgets(&line,10000,r)!=0)
{
sscanf(line,"%d%[^_]%[_]%[^_]%[_]%5d%4d",&n1,&user,&unnoetig,&user2,&unnoetig,&n2,&n3);
fprintf(w,"%d;%s;%s;%d;%d",n1,user,user2,n2,n3);
fputs("\n",&w);
}
Ist nicht getestet, sollte aber gehen
 
@brunlorenz:
C:
char line[1000];
while(fgets(&line,10000,r)!=0)

Ist da char** nicht eine Referenz zu viel? Und die 10000 würden auch einen Overflow erzeugen, falls ein so langer String drin wäre ;).

[Offtopic]
PS (Schweizerdeutscher Smalltalk ;)):
Cool, do gits ja no meh Schwizer!
[/Offtopic]
 
Zurück