Hallo SarthakBhatt,
der Fehler steckt in dieser Zeile
Code:
fclose("file_cats");
Die Anführungszeichen (Gänsefüßchen) sind hier fehl am Platz.
Die Variable file_cats enthält einen Pointer auf irgendeinen Speicherbereich, der Informationen rund um die offene Datei enthält.
Du übergibst jedoch dem fclose-Befehl versehentlich einen Zeiger auf den festen String "file_cats" (und alles, was danach kommt).
Dieser befindet sich zudem in einem aus Sicherheitsgründen schreibgeschützen Speicherbereich, nämlich einer im RAM befindlichen Kopie der exe-Datei.
Ein guter Compiler sollte solche Fehler erkennen.
Versuch mal, ob du bei deinem Compiler Warnmeldungen oder ähnliches aktivieren kannst.
So wird es funktionieren:
Damit ist schon mal der konkrete Fehler aus der Welt geschafft.
Darüber hinaus habe ich noch ein paar kleinere Überarbeitungen vorgenommen,
so dass es den meines Wissens üblichen Gepflogenheiten entspricht.
Man kann sich so einfach besser miteinander austauschen.
Saubere Einrückungen sind wichtig, damit man leichter auf eine Blick sieht, was wie zusammengehört.
Ich hoffe, ich konnte dir ein bisschen weiterhelfen, und wünsche dir viel Erfolg mit C.
Code:
#include <stdio.h>
int main(int argc, char **argv)
{
double numbers[6] = {0,0,0,0,0,0};
int i;
FILE *fp;
if ((fp = fopen("cats.txt", "r")) == NULL)
{
printf("This file doesn't exist.\n");
return 1; /* ungleich 0 heisst Fehler */
}
for (i=0; i < 6; i++)
{
if(1 == fscanf(fp, "%lf\n", numbers + i))
{
printf("numbers[%d] = %f\n", i, numbers[i]);
}
else
{
printf("error reading numbers[%d.\n", i);
}
}
fclose(fp);
return 0; /* 0 heisst OK */
}
Lesezeichen