Googlehupf
Erfahrenes Mitglied
Hi,
ich hab mir schon ein paar Tutorials durchgelesen, die ich aber nicht im Bezug auf mein Bsp verstehe.
Ich weis nur das malloc() Bytes von z.B. Integer reserviert(Oder?), aber wie und was man genau darunter versteht leider nicht.
Darum hier mal ein Bsp(Fragen stehn in den Comments):
lg Googlehupf
ich hab mir schon ein paar Tutorials durchgelesen, die ich aber nicht im Bezug auf mein Bsp verstehe.
Ich weis nur das malloc() Bytes von z.B. Integer reserviert(Oder?), aber wie und was man genau darunter versteht leider nicht.
Darum hier mal ein Bsp(Fragen stehn in den Comments):
C++:
#include <stdio.h>
#include <stdlib.h>
#define MAX_STRLEN
int get_lineno(FILE *infile);//ermittelt die Länge, also die Zeilen der .txt Datei
void main()
{
char filename[MAX_STRLEN]="daten_in.txt";
int file_len = 0;
FILE *inFile=NULL;
double *arrayValues=NULL;//was bedeutet das genau mit NULL im Bezug auf Pointer?
double *actVal = NULL;//gleiche wie oben
int n=0;
inFile=fopen(filename,"rt");//liest aus .txt datei
if (inFile != NULL) //inFile wird NULL wenn Datei ende oder ein andere Fehler auftritt oder? Was wären den solche "anderen Fehler" z.b?
{
file_len=get_lineno(inFile);//unterprogrammaufruf, file_len=dateilänge, Anzahl der Zeilen
rewind(inFile);
arrayValues=malloc(sizeof(double)*file_len);//Wie schon gesagt reseviert der Befehl Bytes(falls das erwähnte stimmt :D) Double-Bytes oder? Aber bitte erklärt einfach die ganze Zeile
if (arrayValues != NULL)//Warum schreibt man hier arrayValues ungleich NULL?
{
actVal=arrayValues;//Warum soll actVal = arrayValeus sein? Was hat das für einen Sinn? Warum nicht mit arrayValues weiter machen?
for(n=0; n<file_len; n++)
{
fscanf(inFile,"%lf",actVal);
actVal++;//Hier zeigt es immer um eins weiter auf die nächste Speicherstelle in eine Adresse, wo man Werte speichern kann oder?
}
actVal=arrayValues;//gleiche wie oben
for(n=0; n<file_len; n++)
{
printf("%lf\n",*actVal);
actVal++;//gleiche wie oben
}
free(arrayValues);//Naja, free=frei Speicherfreigabe vielleicht? Wenn ja was ist darunter genau gemeint?
}
else
{
printf("Memory allocation failure for Data of File %s !\n",filename);
}
fclose(inFile);
}
else
{
printf("File %s could not be opened!\n",filename);
}
//getchar();
}
int get_lineno(FILE *infile)
{
int len =0;
double dummy;
while (!feof(infile))
{
if (fscanf(infile,"%lf",&dummy) == 1)
{
len++;
}
}
return (len);
}
lg Googlehupf
Zuletzt bearbeitet: