Zeigerarray an Unterfunktion übergeben (C)

Gast #1980402
Hallo,

ich möchte in C ein Programm schreiben, in dem ich ein Array von Zeigern 
in der Hauptfunktion definiere und die Werte, auf die die Zeiger zeigen, 
in einer Unterfunktion ausgebe.

Bisher gibt er die Werte aber noch nicht aus. Kann mir jemand sagen, was 
ich falsch mache?
1
#include <stdio.h>
2
#include <stdlib.h>
3

4
FILE *pFile;
5

6
int main(int argc, char *argv[])
7
{
8
   double *Test_Array;
9
   double debug_variable;
10
   int x=45;
11
   int n;
12

13
   Test_Array = (double *)malloc((10 +1) * sizeof(double));
14
   for (n=0;n<10;n++)
15
   {
16
       x = x+1;
17
       Test_Array[n] = x;
18
       debug_variable = Test_Array[n];
19
   }
20
   _ausgeben (Test_Array);
21
   return 0;
22
}
23

24

25
_ausgeben (double *Array[])
26
{
27
   int n;
28

29
   pFile = fopen ("Test_Ausgabe.txt","w");
30
   for (n=0; n<=10; n++)
31
   {
32
       fprintf (pFile,"Zahl %d: %d\n", n, Array[n]);
33
       printf ("Zahl %d: %d\n", n, Array[n]);
34
   }
35
   fprintf (pFile, "\n");
36
   fclose (pFile);
37
}
Tobias schrieb:
> ich möchte...

Soll heißen: du musst als Hausaufgabe...?

---

Diese beiden passen nicht zusammen:

Tobias schrieb:
> in dem ich ein Array von Zeigern

Tobias schrieb:
> double *Test_Array;

So definierst du kein Array von Zeigern, sondern ein Array
von double-Werten.

Tobias schrieb:
> Test_Array = (double *)malloc((10 +1) * sizeof(double));

Das sieht auch nach einem Array von doubles aus.
Bei einem Array von Zeigern auf double müsste es heißen:
Test_Array = (double **)malloc((10 +1) * sizeof(double*));

Wieso eigentlich 10+1?
Du verwendest doch nur 10 Elemente, oder?

Zumindest hier:
Tobias schrieb:
> for (n=0;n<10;n++)

Hier dagegen 11:
Tobias schrieb:
> for (n=0; n<=10; n++)

Außerdem ist deine Funktion bei ihrem Aufruf nicht deklariert.
Das sollte zumindest eine Warnung geben.
Offenbar ignorierst du Warnungen, das ist grundsätzlich falsch.
Noch falscher ist es, uns diese Warnungen vorzuenthalten.
Dadurch muß hier jeder selber rätseln, was alles falsch ist;
das macht nur unnötig Arbeit.

Ein eigener Name (hier für die Funktion) mit einem _ am Anfang
ist auch immer eine schlechte Idee. Laß das einfach bleiben,
es hat keinen Sinn.

Eine klare Beschreibung, was dein Programm machen soll, würde
allen - auch dir selbst vor allem - sehr helfen.

Tobias schrieb:
> fprintf (pFile,"Zahl %d: %d\n", n, Array[n]);

Eine double wird nicht mit %d ausgegeben, sondern mit %f oder %e
oder %g.

Tobias schrieb:
> Bisher gibt er die Werte aber noch nicht aus.

Das heißt genau was?
Er gibt gar nichts aus? Oder etwas Falsches? Und was?
Soll man das raten, oder kannst du dich klarer ausdrücken?

Tobias schrieb:
> Kann mir jemand sagen, was
> ich falsch mache?

Vieles, siehe oben.
Und vor allem: das alles steht in jedem C-Buch.
So etwas kann man lesen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.