[VisualC++] Vullen van een array

Pagina: 1
Acties:

  • [J.d.I.] DirtyHarry
  • Registratie: December 1999
  • Laatst online: 24-07 11:33
Ik ben bezig met een progje te maken waarmee ik een textbestandje kan openen/inlezen en bepaalde waarden vervolgens in een array of table gooien. Ik ben redelijk beginner op het gebied van Visual C, dus ik weet zo 1 2 3 niet hoe dit moet.
Het textbestandje bestaat uit wat meetgegevens en daaronder meetdata (van een proef). Dus zo:

HR-XRDScan
FileName, 1_5mm.x00
FileDateTime, 19-Oct-2001,10:04
Sample, monochr. slit 1,5x1,5mm
Reflection, 0 0 0
Wavelength, 1.540560
GenkVmA, 45, 40
Omega, 34.34730
TwoTheta, 68.93960
X, -45.20
Y, -47.70
Phi, 0.0
Psi, -0.090
ScanType, CONTINUOUS
ScanAxis, Omega/2Theta
FirstAngle, 33.90330
ScanRange, 0.88800
StepWidth, 0.00100
TimePerStep, 1.50
NrOfData, 889
ScanData
2.6667
2.0000
0.6667
5.3333
2.6667
1.3333
5.3333


Ik wil alles wat onder de term ScanData staat in een array gooien om er vervolgens een grafiek van te kunnen maken. Ik weet alleen niet hoe ik alles t/m "ScanData" weg kan laten en vervolgens die waarden stuk voor stuk in een array kan zetten.
Er is vast wel iemand hier die weet hoe dat moet :)

  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Lees het lijn per lijn met getchar tot je een EOL tegnkomt.
Dan controleer je de char*, istie (strcmp) "Scandata" dan begin je %f te fscanffen

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op zondag 21 oktober 2001 22:35 schreef XTerm89D het volgende:
Lees het lijn per lijn met getchar tot je een EOL tegnkomt.
Dan controleer je de char*, istie (strcmp) "Scandata" dan begin je %f te fscanffen
Het gaat over C++ hoor, niet over C ;) Dan moet je het dus doen met ifstream :)

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Zoiets krijg je dan:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ifstream * l_file = new ifstream("bla.dat");
char     l_buffer[64];
int   l_count = 0;
float   l_values[16];

while (! l_file->eof())
{
    l_file >> l_buffer;

    if (strcmp(l_buffer, "ScanData"))
    {
      while (! l_file->eof())
      {
        l_file >> l_values[l_count++];
      }
    }
}

  • [J.d.I.] DirtyHarry
  • Registratie: December 1999
  • Laatst online: 24-07 11:33
Ah ok daarmee kan ik in ieder geval de term ScanData vinden. Maar vervolgens moet ik elke volgende regel in een tabel zien te stoppen.

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op zondag 21 oktober 2001 22:56 schreef [J.d.I.] DirtyHarry het volgende:
Ah ok daarmee kan ik in ieder geval de term ScanData vinden. Maar vervolgens moet ik elke volgende regel in een tabel zien te stoppen.
waarvoor denk je dat dit is dan: ?
code:
1
2
3
4
      while (! l_file->eof())
      {
        l_file >> l_values[l_count++];
      }

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op zondag 21 oktober 2001 22:46 schreef marcusk het volgende:
Zoiets krijg je dan:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ifstream * l_file = new ifstream("bla.dat");
char     l_buffer[64];
int   l_count = 0;
float   l_values[16];

while (! l_file->eof())
{
    l_file >> l_buffer;

    if (strcmp(l_buffer, "ScanData"))
    {
      while (! l_file->eof())
      {
        l_file >> l_values[l_count++];
      }
    }
}
ik zie het nut niet helemaal van het alloceren van een nieuwe ifstream... kost alleen maar geheugen. Dat kun je toch net zo goed op de stack doen

zo dus:
code:
1
ifstream l_file ("bla.txt");

Bovendien moet het een if NOT strcmp zijn, strcmp retourneert namelijk 0 als ze gelijk zijn. Dus:
code:
1
if (!strcmp (l_buffer, "ScanData"))

Verder vind ik underscores lelijk, maar dat is subjectief :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • [J.d.I.] DirtyHarry
  • Registratie: December 1999
  • Laatst online: 24-07 11:33
waarvoor denk je dat dit is dan: ?
code:
--------------------------------------------------------------------------------
while (! l_file->eof())
{
l_file >> l_values[l_count++];
}
--------------------------------------------------------------------------------
Oops sorry, ik ben niet helemaal wakker geloof ik :+

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op zondag 21 oktober 2001 23:03 schreef OiSyN het volgende:
ik zie het nut niet helemaal van het alloceren van een nieuwe ifstream... kost alleen maar geheugen. Dat kun je toch net zo goed op de stack doen
je hebt gelijk dat het netzo goed op de stack kan (en dat is idd wel mooier), maar dan kost het toch niet mionder geheugen :?
Bovendien moet het een if NOT strcmp zijn, strcmp retourneert namelijk 0 als ze gelijk zijn.
oeps... schaam :)
Verder vind ik underscores lelijk, maar dat is subjectief :)
Ik vind ze mooi :P (Maar vooral erug handig met die m_ l_ en p_ dingen voor vars (ala Curry ;)))

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op zondag 21 oktober 2001 23:08 schreef marcusk het volgende:

[..]

je hebt gelijk dat het netzo goed op de stack kan (en dat is idd wel mooier), maar dan kost het toch niet mionder geheugen :?
[..]
Nou, het gaat niet van je heap af, bovendien kost alloceren op de heap meer geheugen dan alloceren op de stack wegens administratie, EN je moet m later niet vergeten te deleten, anders krijg je memory leaks.
En verder is een new retelangzaam, omdat ie moet zoeken naar lege memory blocks enzo, maar dat maakt nu natuurlijk geen fuck uit :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • [J.d.I.] DirtyHarry
  • Registratie: December 1999
  • Laatst online: 24-07 11:33
Hmm strange, bij mij kent hij de kreet ifstream niet, zegt hij dat dat een undefined symbol is...
Ik heb Borland C++ Builder 5.0

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

#include <iostream.h> ?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • [J.d.I.] DirtyHarry
  • Registratie: December 1999
  • Laatst online: 24-07 11:33
Nu zegt hij dat ifstream een undefinded structure is :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

oh, include <fstream.h>, my bad

Maar dit kun je natuurlijk allemaal vinden in de msdn

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op zondag 21 oktober 2001 23:33 schreef OiSyN het volgende:
Maar dit kun je natuurlijk allemaal vinden in de msdn
of hier

trouwens, het is toch #include <fstream> in C++ ? :)

  • [J.d.I.] DirtyHarry
  • Registratie: December 1999
  • Laatst online: 24-07 11:33
Jep, ik vraag weer veel te veel :)
iig bedankt voor de hulp!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op zondag 21 oktober 2001 23:37 schreef marcusk het volgende:

[..]

of hier

trouwens, het is toch #include <fstream> in C++ ? :)
ja als je gebruik maakt van namespaces wel ja
maar dan moet hij weer using namespace std; ofzo doen, en dat brengt alleen maar verwarring met zich mee :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op zondag 21 oktober 2001 22:43 schreef marcusk het volgende:
Het gaat over C++ hoor, niet over C ;) Dan moet je het dus doen met ifstream :)
:Z

Okee ik zie de smile maar je zult zien dat er over een maand weer een newbie komt die 'm niet zag en begint te mekkeren dat je in C++ printf niet mag gebruiken...

...wat heiligschennis is natuurlijk. :P

Professionele website nodig?

Pagina: 1