- Registriert
- 01.09.09
- Beiträge
- 98
Hallo, ich habe ein Problem bei der richtigen Anwendung von Pointern und Array's unter Ansi C
Im ersten schritt lasse ich einpaar Zahlen einlesen:
Aufruf :
int arraysize=20;
int num[arraysize];
einlesen(&arraysize,&num);
Funktion :
void einlesen(int *arraysize, int *num) {
FILE *datei;
const int ANZAHL = *arraysize, LAENGE=5;
char line[ANZAHL][LAENGE];
int buffer;
int i=0,error=0;
datei = fopen ("/Users/Tim/Documents/Praktikum 6/sort.dat","r+");
if (datei != NULL)
{
while ((!feof(datei))&&(error==0)) {
fgets(line,LAENGE,datei);
buffer=atoi(line);
num = buffer;
i++;
if(i==*arraysize) { error=1;}
}
} else {printf("Öffnen Fehlgeschlagen");}
}
-----------------------------------------------------------------
Das klappt meiner Meinung nach auch. Jetzt möchte ich das Array in einer anderen Funktion wieder ausgeben.
Aufruf :
ausgeben(&num,&arraysize);
Funktion :
void ausgeben(int *arraysize, int *num) {
int i=0;
do {
printf (" %i \n",*num);
i++;
} while(i<*arraysize) ;
}
-------------------------------------------------------------
Egal wie ich es drehe oder wende, es kommt immer nur Zahlenmüll raus. Als ob der Pointer auf Stellen zeigt, die es nicht gibt. Jemand ne Idee wodran das liegt? Wird das Array vielleicht in der ersten Funktion nicht ordnungsgemäß gefüllt ?
Grüße Tim
Im ersten schritt lasse ich einpaar Zahlen einlesen:
Aufruf :
int arraysize=20;
int num[arraysize];
einlesen(&arraysize,&num);
Funktion :
void einlesen(int *arraysize, int *num) {
FILE *datei;
const int ANZAHL = *arraysize, LAENGE=5;
char line[ANZAHL][LAENGE];
int buffer;
int i=0,error=0;
datei = fopen ("/Users/Tim/Documents/Praktikum 6/sort.dat","r+");
if (datei != NULL)
{
while ((!feof(datei))&&(error==0)) {
fgets(line,LAENGE,datei);
buffer=atoi(line);
num = buffer;
i++;
if(i==*arraysize) { error=1;}
}
} else {printf("Öffnen Fehlgeschlagen");}
}
-----------------------------------------------------------------
Das klappt meiner Meinung nach auch. Jetzt möchte ich das Array in einer anderen Funktion wieder ausgeben.
Aufruf :
ausgeben(&num,&arraysize);
Funktion :
void ausgeben(int *arraysize, int *num) {
int i=0;
do {
printf (" %i \n",*num);
i++;
} while(i<*arraysize) ;
}
-------------------------------------------------------------
Egal wie ich es drehe oder wende, es kommt immer nur Zahlenmüll raus. Als ob der Pointer auf Stellen zeigt, die es nicht gibt. Jemand ne Idee wodran das liegt? Wird das Array vielleicht in der ersten Funktion nicht ordnungsgemäß gefüllt ?
Grüße Tim