mikrocontroller.net

Forum: PC-Programmierung Zeigerarray an Unterfunktion übergeben (C)


Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?
#include <stdio.h>
#include <stdlib.h>

FILE *pFile;

int main(int argc, char *argv[])
{
   double *Test_Array;
   double debug_variable;
   int x=45;
   int n;

   Test_Array = (double *)malloc((10 +1) * sizeof(double));
   for (n=0;n<10;n++)
   {
       x = x+1;
       Test_Array[n] = x;
       debug_variable = Test_Array[n];
   }
   _ausgeben (Test_Array);
   return 0;
}


_ausgeben (double *Array[])
{
   int n;

   pFile = fopen ("Test_Ausgabe.txt","w");
   for (n=0; n<=10; n++)
   {
       fprintf (pFile,"Zahl %d: %d\n", n, Array[n]);
       printf ("Zahl %d: %d\n", n, Array[n]);
   }
   fprintf (pFile, "\n");
   fclose (pFile);
}


Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.