Ich versuche, eine Datei aus einem Verzeichnis zu bekommen und im Speicher zu behalten, ist das Ziel, dann Informationen aus der Dateistruktur nach Struktur in eine tmp-Datei zu kopieren, einige zu tun Bearbeiten, dann speichern Sie die neue Information in einer neuen Datei. Alles, was ich gerade versuche, ist, die Datei zu holen und dann auszudrucken.Drucken von einer Datei in c ist völlig falsch
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
typedef struct hw5_struct {
char f_name[12];
char l_name[12];
int age;
float height;
}HW5_struct;
void printThisFile(FILE *data);
int main(int argc, char *argv[]) {
const char *fileLocation = argv[1];
FILE *originalData = fopen(fileLocation, "r");
if(access(fileLocation, F_OK) != -1)
printf("The file at %s exists\n", argv[1]);
printThisFile(originalData);
//int sizeOfOriginalData = sizeOf(&originalData);
}
void printThisFile(FILE *data) {
printf("printThisFile called\n");
int c;
if (data) {
printf("printing file contents now:\n");
while((c = getc(data)) != EOF)
printf("%c", c);
fclose(data);
}
}
Er druckt die folgenden:
FredHutcheson À@LarryStarchÍ̼@LucyLu-FredFlintstone 33£@BarnyRubbleÍÌ[email protected]³@RobertHenderson7ffÆ@BobbyNLMcÍ̼@BettyDurnanJPBFloodProfÀ@
Ich weiß nicht wirklich, was es soll, wie genau aussehen, aber seine definitiv nicht.
Kompilieren Sie mit allen Warnungen und Debug-Informationen (so 'gcc -Wall -Wextra -g' mit [GCC] (http://gcc.gnu.org/) .....). Dann ** benutze den Debugger ** 'gdb'; Verwenden Sie auch ein oktales oder hexa dump Dienstprogramm, um den Inhalt der Datei zu verstehen, z. [od] (http://man7.org/linux/man-pages/man1/od.1.html) –
Auf den ersten Blick sieht Ihre Ausgabe mit Ihrem impliziten Dateiformat kompatibel aus. –
Die Verwendung von 'access()' ist meist sinnlos. Wenn Sie es benutzen wollen, rufen Sie es an, bevor Sie 'fopen()' aufrufen, aber Sie sollten nicht stören. Sie sollten überprüfen, dass die Datei in der Funktion geöffnet wurde, die 'fopen()' aufruft, nicht die aufgerufene Funktion. Wenn Sie nicht wissen, was in der Datendatei enthalten sein soll, wie können wir Ihnen helfen? Vielleicht müssen Sie das Programm zeigen, das diese Datensätze in die Datei geschrieben hat. Du hast 'fwrite()' benutzt, oder? Warum nicht 'fread()' verwenden, um die Datensätze zurück zu lesen? –