C Make-File

Hallo Habo,
ich habe gerade folgendes Problem und zwar habe ich 3 Dateien

Die main.c mit folgendem Inhalt
Code:
#include <stdio.h>
#include "prak8_3arrayfunctions.h"

int main()
{
  char werte[20];
  int anz_werte=0,biggest=0, _2smallest=0, kleinste=0;
  float erg=0;
  static int smallest=0;
  
  /*Werte einlesen */
  einlesen(&werte, &anz_werte);
  /*mittelwert*/
  erg = mittelwert(&werte,anz_werte);
  printf("%2.2f\n", erg);
  /*biggest ausgeben*/
  biggest = biggestfktn(&werte, anz_werte);
  printf("%i\n", biggest);
  /*smallest ausgeben*/
  kleinste = smallestfktn(&werte, anz_werte);
  printf("%i\n", kleinste);
  
  /*_2smallest =  secondsmallestfktn(&werte, anz_werte); 
  printf("%i", _2smallest);*/
  
  return 0;
}

Die Headerdatei mit folgendem Inhalt
Code:
int einlesen(char werte[],int *anz_werte);
float mittelwert(char werte[],int anz_werte);
int biggestfktn(char werte[],int anz_werte);
int smallestfktn(char werte[],int anz_werte);

und die Datei mit den Funkionen
Code:
#include <stdio.h>
#include "prak8_3arrayfunctions.h"
int einlesen(char werte[], int *anz_werte)
{
 int i=0,t=0;
 char input[4];

  for(i=0;i<20;i++)
  {
      printf("Wert:");
      scanf("%s", input);
      /* Input auf EOF prüfen */
      if(0 == strncmp(input, "EOF", 3))
      {
          *anz_werte = i;
          return 0;
      }
      /*sonst input in int umwandeln und in array schreiben */
      werte[i] = atoi(input);
      printf("nums[%d] = %d\n", i, werte[i]);    
  }
}

float mittelwert(char werte[], int anz_werte)
{
int z=0; 
float erg=0;
  for(z=0;z<anz_werte;z++)
  {
  erg = erg + werte[z];
  }
  erg = erg / anz_werte;
  return erg;
}

int biggestfktn(char werte[], int anz_werte)
{
int y=0;
int biggest;
  biggest = werte[0];
  for(y=1;y<anz_werte;y++)
  {
    if(werte[y] > biggest)
    {
     biggest = werte[y];
    }
  }
return biggest;
}
int smallestfktn(char werte[], int anz_werte)
{
int t=0;
int smallest;
  smallest = werte[0];
  for(t=0;t<anz_werte;t++)
  {
   if(werte[t] < smallest)
   {
   smallest = werte[t];
   }
  } 
return smallest;
}

jetzt kompiliere ich die Datei
main mit gcc -c main.c
die Datei mit den Funktionen mit
gcc -c funktionen.c

und anschließend bastel ich mir mit
gcc -o main main.o funktionen.o eine ausführbare Datei.

Jetzt rufe ich die Datei auf und ich bekomme folgende Fehlermeldung :
Segmentation fault (core dumped).
Was hat das zu bedeuten? Als ich die ganzen Funktionen noch nicht in eigenen Dateien hatte lief alles wunderbar.

Wenn ich allerdings die main.c kompilieren möchte bekomme ich mehrere Warnungen
prak8_3main.c:12: warning: passing argument 1 of 'einlesen' from incompatible pointer type
prak8_3main.c:14: warning: passing argument 1 of 'mittelwert' from incompatible pointer type
prak8_3main.c:17: warning: passing argument 1 of 'biggestfktn' from incompatible pointer type
prak8_3main.c:20: warning: passing argument 1 of 'smallestfktn' from incompatible pointer type

Aber wie gesagt nur Warnungen...
Habe ich irgendwas beim verlinken oder so falsch gemacht oder woher kommt diese Fehlermeldung?

LG,weau
 
Naja solange es trotzdem läuft.

Aber wenn ich du wär wurde ich die Funktionen anders umsetzen, nämlich so,




int einlesen(char *werte,int *anz_werte);
float mittelwert(char *werte,int anz_werte);
int biggestfktn(char *werte,int anz_werte);
int smallestfktn(char *werte,int anz_werte);


und dann in main mit.

int main(){
char werte[]....
einlesen(werte, anz_werte)

char *werte und char werte2[] sind im grunde genommen beide pointer,
werte2 ist ein pointer auf werte2[0], also kannst du einfach denn namen des buffers als string übergeben, dann sollte es auch keine Warnung mehr geben.
 
Zurück
Oben