Werte nach links verschieben

Hallo,

ich habe folgendes Problem:

ich habe eine Funktion, diese soll einzelne Werte aus einer Datei nacheinander einlesen und weiter verarbeiten.
Wenn die Anzahl der eingelesener Werte größer als die Variable N ist, so sollen alle zuvor eingelesene Werte um eine stelle nach links verschoben werden, ( d.h. der erste gespeicherte Wert wird durch zweiten ersetzt, der zweite durch dritten usw…)

Hier ist ein ausschnitt aus meiner Funktion, leider funktioniert das ganze nicht richtig, vielleicht findet einer von euch den Fehler:

Meine Frage bezieht sich speziell auf das umspeichern der Werte!

double einlesen(double* ungefiltert, char* filname_1, char* filename_2, S_dig_filt* o_dig_filt,double gefiltert)
{
int anzahl = 0;
int h_wert = 0;
int help = 0;
int m=0;
int N = o_dig_filt -> N;
double* K = o_dig_filt -> K;
char hilf[80];
double* produkt=0;
double prod_sum = 0;
double koef_sum = 0;
int z=1;
int fop=0;

double *un = 0;
int anz = 0;
int anl = 1;
FILE *fi;

fi=fopen (filname_1, „r“);
ungefiltert=(double*)malloc(31*sizeof(double));
un=(double*)malloc(31*sizeof(double));

while (fgets(hilf, 80, fi) != NULL)
{

ungefiltert[anzahl]=(double)atoi(hilf);

if(anzahl > N)
{
anz=0, anl=1;

for(anz=0, anl=1; anl

Hallo Alexander,

Ich weiss zwar nicht, was genau Dein Problem ist, aber ein paar Sachen fallen mir auf die Schnelle auf:

Statt#

> ungefiltert=(double\*)malloc(31\*sizeof(double));

muss

 ungefiltert=(double\*)malloc(32\*sizeof(double));

stehen.

> ungefiltert[anzahl]=(double)atoi(hilf);

hier musst Du sicher stellen, dass anzahl

for(anz=0, anl=0; anz

Da un[31] nicht definiert ist, ist

> for(anz=0, anl=0; anz

die richtigere Variante.

Mfg,
Pürsti

Hallo Pürsti,

vielen Dank für deine Hilfe!!!

mfg,
Alexander