Problem mit Ausgabe
-
Guten Tag,
ich habe ein Programm geschrieben aber habe 2 Probleme...- funktioniert die ausgabe in der Konsole "NUR" wenn ich ein "endl" dranhänge, andernfalls gibt es mir garnichts aus.
2)Das Dokument welches erzeugt wird hat eine leerstelle am anfang der 2.,3. und 4. Zeile. Zusätzlich noch hinter der 4. ...
Die Daten die das programm nimmt kommen aus einem textdokument..
#include <conio.h> #include <iostream.h> #include <stdlib.h> #include <stdio.h> int main() { char Tab[4][23]={0}; int Zeile=0; int Spalte=0; char Abbruch = 'x'; int i =0; int Kom1 = 0; int Kom2=0; int Erg=0; FILE *ProDat; ProDat=fopen("Produkt.txt","r"); if(ProDat!= NULL) { cout<<"Die Datei wurde erfolgreich geoeffnet"<<endl; cout<<endl; } else { cout<<"Die Datei wurde nicht geoeffnet"<<endl; exit(1); } while(!feof(ProDat)) { fgets(Tab[i],22,ProDat); cout<<Tab[i]; i++; } cout<<endl; cout<<endl; for (Zeile = 0; Zeile<=3; Zeile++) { for ( Spalte =0; Spalte<=21;Spalte++) { Tab[Zeile][Spalte] = tolower(Tab[Zeile][Spalte]); if(Tab[Zeile][Spalte] == ',') Tab[Zeile][Spalte] = '-'; if(Tab[Zeile][Spalte] == ';') Tab[Zeile][Spalte] = '+'; } } for(Erg = 0; Erg < 6;) {//for Erg auf for (Zeile = 0; Zeile<=3; Zeile++) {//for Zeile auf for ( Spalte =0; Spalte<=22;Spalte++) {//for Spalte auf if(Tab[Zeile][Spalte] == '-') {//if Tab='-' auf Kom1 = Spalte; Spalte= Spalte+1; for (Spalte; Spalte<=22;Spalte++) {//for Spalte++ auf if(Tab[Zeile][Spalte] == '-') {//if Tab='-' auf Kom2 = Spalte; Erg = Kom2-Kom1; if(Erg != 6) {//if Erg=6 auf for (Spalte=22; Spalte>Kom1; Spalte--) {//for Spalte-- auf Tab[Zeile][Spalte]=Tab[Zeile][Spalte-1]; }//for Spalte-- zu if(Spalte==Kom1) {//if Spalte=Kom1 auf Spalte = Kom1+1; Tab[Zeile][Spalte] = '0'; }//if Spalte=Kom1 zu }//if Erg=6 zu break; }//if Tab='-' zu }//for Spalte++ zu break; }//if Tab='-' zu }//for Spalte zu }//for Zeile zu }//for Erg zu cout<<Tab[0]<<Tab[1]<<Tab[2]<<Tab[3]<<endl; FILE *ProDat1; ProDat1=fopen("Maschine.txt","w"); fwrite (Tab, sizeof(Tab[0]) , sizeof(int) , ProDat1 ); fclose(ProDat); fclose(ProDat1); getch(); return 0; }
Die Daten sind (Produkt.txt):
67663,1082,L,773,32;
67663,1082,R,773,32;
67663,920,O,773,32;
67663,920,U,773,32;Es soll nachher so aussehen(Machine.txt):
67663-01082-l-773-32+
67663-01082-r-773-32+
67663-00920-o-773-32+
67663-00920-u-773-32+Danke für die Hilfe im voraus
-
Nulltens: Das Ding sieht ja schlimm aus. Vielleicht solltest du nur jeweils eine Zeile einlesen, verarbeiten und wieder ausgeben. (und simple Textersetzungen kriegst du auch mit replace() hin).
Erstens:
funktioniert die ausgabe in der Konsole "NUR" wenn ich ein "endl" dranhänge, andernfalls gibt es mir garnichts aus.
Die Ausgabe funktioniert schon so, wie sie soll. Allerdings landen die Daten erst einmal in einem Zwischenspeicher und werden erst ans System weitergegeben, wenn dieser voll ist (oder du dem Programm mit flush sagst, daß es das jetzt erledigen soll).
(endl schreibt erst ein \n und führt danach flush aus)
Zu zweitens kann ich nichts sagen, aber vermutlich baust du dir diese Leerstellen selber in die Ausgabe ein.
-
ich habe jetzt mal die ganze verarbeitung auskommentiert...
in der erzeugten datei sind jetzt noch mehr nullstellen am anfang!
Kann es sein das ich was beifopen
schon falsch gemacht hab?
-
Hallo,
es wird einfach das in der Datei gespeichert, was in char Tab[4][23] drinsteht.Gruß, p.