CKurs - Aufgaben zu C

Google

Kommandozeile auswerten

Aufgabenstellung:

Ändern sie bitte das C-Programm vom Übungsblatt 7 , sodass der Name der Meßwertedatei beim Aufruf des ausführbaren Programms übergeben wird:
           
                        ./progname filename

Ihr Programm soll auch folgendes überprüfen:
  - ob der Benutzer das ausführbare Programm mit dem richtigen Argument <filename> aufgerufen hat. Falls nicht bitte Programmausführung mit einer Usage-Meldung abbrechen.
  - ob die eingegebene Datei existiert. Falls nicht bitte Programmausführung mit einer Fehlermeldung abbrechen.

Lösung

CCode:

#include <stdio.h>

double average(double data[], int count){
int i;
double summe=0;
for (i=0;i<count;i++)
summe+=data[i];
return summe/(count);
}

int main(int argc, char **argv)
{
double *data;
int count=0;
int datasize=10;
double actdata;
FILE *fdata;
if(argc < 2) {
fprintf(stderr, "Aufruf via progname filename");
return 0;
}
if ((fdata = fopen(argv[1], "r")) == NULL)
{
fprintf(stderr, "Datenfile kann nicht gefunden werden. \n");
return -1;
}
count=0;
data=(double*)malloc(sizeof(double)*datasize);
while(fscanf(fdata,"%lf",&actdata)!=EOF){
count++;

if (count > datasize) {
datasize+=10;
data=(double*)realloc(data,sizeof(double)*datasize);
}
data[count-1]=actdata;
}

printf("%f",average(data,count));
return 0;
}

Eingabe von:

c8.exe data.txt

liefert:

Ausgabe stdout:

9.962963