C Probleme beim öffnen einer *.txt Datei.

OP #3219753
Lesenswert?
• ▲
▼
Hallo

ich hoffe die C-Speziallisten können mir bei folgendem
Probleme helfen.

Ich möchte double Zahlen aus der Textdatei m.txt auslesen. Die Datei
möchte ich mit der Funktion MessdatenLesen(datei, messwA); öffnen.


Wenn ich das versuche kommt diese Fehlermeldung:

Unbehandelte Ausnahme bei 0x6ca060a6 in messdaten.exe: 0xC0000005:
Zugriffsverletzung beim Schreiben an Position 0x00000000.

Ich vermute einen Zeigerfehler hab aber schon in einigen Büchern die
Kapitel über Zeiger und Arrays gelesen und nichts gefunden was mir
hilft.

Dateien sind hochgeladen



Vielen Dank



Marcel
Angehängte Dateien:
Gast #3219768
Lesenswert?
• ▲
▼
so weiter:

du speicherst deine Daten überhaupt nicht im Array.

> if((messwA[ret]<=OBEN) && (messwA[ret]>=UNTEN))
ret ist hier die falsche variabel, müsste i sein.

1
 for(i=0; i<ret; ++i)
2
  {
3
    if((messwA[ret]<=OBEN) && (messwA[ret]>=UNTEN))
4
    {
5
      ++n;
6
    }
7
  }
8
  retA=i/(ret/100);
9
  return retA;
wozu die schleife wenn du n überhaupt nicht verwendest?
OP #3219835
Lesenswert?
• ▲
▼
So soll die Schleife aussehen.
1
double Auswertung(double messwA[], int ret)
2
{
3
  double retA;
4

5
  int i, n=0;
6
  for(i=0; i<ret; ++i)
7
  {
8
    if((messwA[ret]<=OBEN) && (messwA[ret]>=UNTEN))
9
    {
10
      ++n;
11
    }
12
  }
13
  retA=(n/ret)*100;
14
  return retA;
15
}

danke für den Hinweis. Leider sind meine Programmierfähigkeiten noch 
sehr schlecht ich setze alles dran dazu zulernen.
#3220086
Lesenswert?
• ▲
▼
Marcel S. schrieb:
> Hallo Peter,
>
> vielen Dank für die hilfreichen Tipps.
>
> Das Programm funktioniert jetzt. Ich würde mich sehr freuen wenn ihr mir
> sagt was ich noch verbessern kann. Ich möchte durch eure Kritik
> dazulernen.

ABgesehen von der GUI Diskussion:

gets ist eine "Funktion non grata". Also eine Funktion die du NIEMALS 
benutzen solltest. Immer fgets benutzen!

Du hast keine Kontrolle darüber, was dein Benutzer an der Tastatur alles 
aufführt. Der kann dir da eine Eingabe von
1
kkkkkkkkkkkkkkkkkkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaallllllllllllllllllllllddddddddddddddddddddd

reinpfriemeln, welche gets versucht in dein Array zu stopfen. Was 
natürlich schief geht, weil dein Array nur 31 Elemente groß ist. D.h. 
gets, bzw. dein Benutzer schaffen es mit links, dass sich dein Programm 
selber die Variablen zerschiesst. gets kann dich davor nicht schützen. 
fgets kann es.

gets ist eine Funktion, die es so wie sie ist, nie in den C-Standard 
hätte schaffen sollen. Deine beste Option ist es, völlig zu vergessen 
bzw. zu verdrängen, dass diese Funktion überhaupt existiert. Streiche 
sie aus deinem 'Wortschatz'.
1
    fgets( datei, sizeof(datei), stdin );

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren