Hallo,
ich hab nun meine Liste fertig und will die zum Einen auf meiner Konsolle ausgeben (das funktioniert) und zum Anderen in einer Textdatei festhalten
hier der Auszug aus meinem Code:
Mein Problem jetzt ist, das ich die Listenausgabe nicht in meine Textdatei bekomme.
das hängt auch mit dem cast in Zeile 24 zusammen. ab da an giebt es Probleme. Beim Kopellieren ist allles ok aber in Zeile 25 wird die Zahl nicht an meinen string gehangen. Wenn ich Zeile 24-26 auskommentiere, Zeigt er mir alle wieder auf meiner Konsole an. mit den Beiden Zeilen wier weder etwas auf der Konsole angezeigt, noch in eine Datei geschrieben.
definition aus meinem struct
Kann mir da jemand weiter helfen?
Liebe Grüße.
ich hab nun meine Liste fertig und will die zum Einen auf meiner Konsolle ausgeben (das funktioniert) und zum Anderen in einer Textdatei festhalten
hier der Auszug aus meinem Code:
Java:
void print_all(node* list, void* (*get)(void*))
{
node* kopf = list;
node* aktl_Elem = list;
FILE *file2;
char* string = NULL;
int zahl = 0;
if(kopf == NULL && kopf -> content == NULL)
{
return;
}
else
{
while(kopf != (aktl_Elem = aktl_Elem -> left)) // durchläuft die liste ienmal
{
printf(" %i. ", aktl_Elem -> nodeCounter); // gibt den Listenindex aus
string = (char*) get(aktl_Elem -> content); // gibt den Listeninhal auf der konsole aus und liest diesen dan iknstring ein
zahl = aktl_Elem -> lineCounter; // liest die Zeilennummer der eingelesenen Wörter ein
printf(" %i", zahl);
printf("\n");
strcat(string, " "); // hängt an jedes Wort ein blank
strcat(string, (char*) zahl ); // Zeilennummer ist vom type int in meinem Struct und wird gecastet um an string angehängt zu werden
printf(" String: %s", string); // zur Prüfung soll mir das ausgegeben werden
fputs(string, file2); // Nun soll der komplette String in die Ausgabedatei gespeichert werden
}
}
}
...
//Auszug aus der Main-Funkion
...
// Überprüfung, ob eine Textdatei übergeben wurde.
if(argc > 1 && (file1 = fopen(argv[2], "r")) != NULL && (file2 = fopen(argv[1], "w")) != NULL)
{
// Gesamten Textinhalt auslesen, bis zum Textendezeichen.
while(fgets(buffer, SIZE, file1) != NULL)
{
counter1++; // Zählt die Zeilen
int wortLineCounter = 0;
int schalter = 0; // Nicht wichtig... ist nur für Bubblesort-Algorithmus
// Wörter einlesen
wort = strtok(buffer, splitt);
// Wörter solange einlesen, wie Wörter über Buffer übergeben werden.
while(wort != NULL)
{
anhaengen(aktl_Elem, wort, copyString, counter1);
wort = strtok(NULL, splitt);
wortLineCounter++;
schalter = 1;
}
if(schalter == 1)
{
sort(aktl_Elem, wortLineCounter, schranke);
schranke += wortLineCounter;
}
}
// Gibt alle Listenelemente aus
print_all(aktl_Elem, printString); //Aufruf zur Ausgabe auf der Konsole und zum Speichern in einer txt-Datei.
fclose(file2);
fclose(file1);
}
Mein Problem jetzt ist, das ich die Listenausgabe nicht in meine Textdatei bekomme.
das hängt auch mit dem cast in Zeile 24 zusammen. ab da an giebt es Probleme. Beim Kopellieren ist allles ok aber in Zeile 25 wird die Zahl nicht an meinen string gehangen. Wenn ich Zeile 24-26 auskommentiere, Zeigt er mir alle wieder auf meiner Konsole an. mit den Beiden Zeilen wier weder etwas auf der Konsole angezeigt, noch in eine Datei geschrieben.
definition aus meinem struct
Java:
typedef struct node
{
struct node* right; // Zeiger auf das Nachfolgerelement
struct node* left; // Zeiger auf das Vorgängerelement
void* content; // Für den Dateninhalt
int lineCounter;
int nodeCounter;
} node;
node* init_Liste();
node* anhaengen(node* list, void* neuer_String, void* (*set)(void*), int counter);
void sort(node* list, int wortLineCounter, int schranke);
void print_all(node* list, void* (*get)(void*));
node* delete_Node(node* list);
node* delete_Liste(node* list);
Kann mir da jemand weiter helfen?
Liebe Grüße.
Zuletzt bearbeitet: