Wahrscheinlich eine wirklich einfache Antwort, aber ich kann es jetzt nicht wirklich sehen. Zwei Funktionen:FILE Zeiger nicht in Funktion aktualisiert
#include <stdio.h>
#include <stdlib.h>
#define FILMS_FILE "qwerty.txt"
void InitReading(FILE * input, char * file_name)
{
input = fopen(file_name, "r");
if (input == NULL)
{
printf("blabla!\n");
exit(1);
}
}
void ReadFilms(node * films)
{
FILE *input = NULL;
struct film *film_obj;
node *next;
bool stop = false;
InitReading(input, FILMS_FILE);
if (!input)
{
printf("pointer is null");
}
while (!stop)
{
// do other meaningful stuff
}
}
Soweit ich weiß, dass der Zeiger immer dann aktualisiert werden soll, und ich sollte keine FILE
Zeiger in InitReading()
zurückzukehren, aber es scheint, dass input
gleich bleibt nach InitReading()
Aufruf. Ich habe es bereits behoben, indem ich InitReading()
von void
zu FILE *
Art ändere, aber ich kann nicht herausfinden, warum in der Erde nicht der Zeiger aktualisiert wird.
Vielen Dank.
Nun, der Zeiger "Eingang" sehr gut ** ist ** updated. Verwenden Sie einen Debugger, um es zu sehen. Sie haben wahrscheinlich vergessen, dass C ** streng ** pass-by-value ist. – Olaf
Wenn Sie einen Zeiger bearbeiten möchten, übergeben Sie einen Zeiger an einen Zeiger. – Kiloreux
einen Wert ändern, einen Zeiger übergeben, einen Zeiger ändern einen Zeiger auf einen Zeiger übergeben. – Thomas