c Schreibe den string in Datei Zeile für Zeile
fwrite funktioniert nicht, was ist falsch an meinem code?
void printTree (struct recordNode* tree) {
char* report1;
FILE *fp = fopen("test.txt","w");
if (tree == NULL) {
return;
}
//if(fp) {
counter2++;
printTree(tree->right);
fwrite(fp,"%d\n", tree->pop);
//putc(tree->pop, fp);
//report1 = printf("%s = %d\n");
printTree(tree->left);
//}
fclose(fp);
}
- Ich glaube, Sie sollten fprintf für die formatierte Ausgabe an stream...
- Versuchen Sie, fprintf(), kann sein das es funktioniert. Ansonsten wieder Bearbeiten
- Es wird sehr hilfreich für Sie, um die Optionen verwenden, die für maximale Warnungen in Ihrem compiler. Achten Sie auf die Warnungen und fix alle. Jeder compiler hätte Sie darüber informiert, dass dieser code falsch ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
fwrite
nicht tun, formatierte Ausgabe wie die, die Sie brauchenfprintf
:fwrite
hat den folgenden Prototyp:und, da Sie sich nicht selbst geben es, dass alle wichtigen vierten parameter (Datei-handle) in Ihrem Aufruf, kann es ziemlich gut, was auch immer es gefällt.
Einen anständigen compiler sollten warnen Sie über diese.
Sie haben auch ein anderes problem hier. Jedes mal, wenn Sie diese Funktion aufrufen, erstellen Sie die Ausgabe-Datei neu. Das ist nicht gut für eine rekursive Funktion, da jeder wiederkehrenden Ruf zerstören die Informationen, die bereits geschrieben.
Können Sie die Datei öffnen möchten außerhalb des rekursiven Funktion und einfach verwenden es innerhalb es.
Etwas wie:
fprintf (fp, "%s %d\n", tree->district, tree->pop);
. Wenn es um format-strings, "es kann nur einen geben".fprintf (fp, "Report 1\n");
vor dem betretenprintTreeRecur()
. Wenn Sie es wollen, in Ihre regulären Linien, fügen Sie es im format-string wie:fprintf (fp, "Report 1: %s %d\n", tree->district, tree->pop);
.