Textdatei auslesen und werte Variablen zuweisen
-
der fehler lag woanders FILE *fp; ... so muss die definition wohl sein
mfg, TFTS
-
ups
... hab ich auch nich gesehen ;/
-
jetz hab ich zwar keine fehler mehr, aber auf meinen variablen liegen leider nicht die werte ... da weiss ich jetz auch nicht was ich noch machen könnte.
kann mir bitte jemand helfen?
danke schonmal
mfg, TFTS
-
mein code im moment
{ char buffer[500]; FILE *fp; double f,a; f=0; a=0; fp=fopen("Z:\\txt100.csv","rt"); if (fp==NULL) return; fgets(buffer,14,fp); sscanf(buffer,"%lf,%lf,",&f,&a); fclose(fp); m_minimum7.Format("f= %f",&f); m_minimum6.Format("a= %f",&a); UpdateData(false); }
ich möchte also die 14. Zeile auslesen, mach ich das denn mit diesem code oder hab ich da die fgets funktion falsch verstanden ... auf jeden fall liegen am ende keine werte auf f und a
bitte helft mir
mfg, TFTS
-
TFTomSun schrieb:
{ char buffer[500]; FILE *fp; double f,a; f=0; a=0; fp=fopen("Z:\\txt100.csv","rt"); if (fp==NULL) return; fgets(buffer,14,fp); sscanf(buffer,"%lf,%lf,",&f,&a); fclose(fp); m_minimum7.Format("f= %f",f); // das & wech m_minimum6.Format("a= %f",a); // hier auch... UpdateData(false); }
-
nee das sind doch nur static textfelder auf denen ich mir a und f ausgeben will... das hab ich bis jetz immer so gemacht ... funktioniert eigentlich
ist es mit meinem code nun eigentlich die 14. Zeile die ich da auslese?
mfg, TFTS
-
natürlich nicht...
-> MSDN !!!! (menschneskind zum 1000ten mal!)
fgets liest nur eine Zeile aus der Datei aus, der 2. Parameter ist die Größe des char Buffers!!! (in deinem Fall 500)du musst entweder mit fseek (glaub ich) an deine bestimmte Stelle in der Datei springen oder vor der Schleife 13 mal fgets machen...
PS.: Guter Tip von mir...
Lies dir das verdammte Buch durch, was ich dir gegeben hab!!!Greez
PPS.: Benutz den Debugger von VS und schau dir an, was in deinem charbuffer drinsteht.. dann klappts auch!
-
war nen moment eher ... habs auch grad gelesen dass es nicht die zeile ist, in deinem buch steht leider nicht wie man die zeile beim einlesen setzt. da wird nich mal die fget funktion benutzt zum datei einlesen.
ich hab jetz ne schleife gemacht und 15 mal fget drin ... danach hab ich ne schleife gemacht in der dann die werte ausgelesen werden sollen
tut er aber leider immer noch nich
hm...
mein code im moment:{ char buffer[50]; FILE *fp; double f[500],a[500]; int i; fp=fopen("Z:\\txt100.csv","rt"); if (fp==NULL) return; for (i=1;i==15;i++) fgets(buffer,50,fp); for (i=0;i<20;i++) { fgets(buffer,50,fp); sscanf(buffer,"%lf,%lf,",&f[i],&a[i]); } fclose(fp); m_minimum7.Format("f= %f",f[0]); m_minimum6.Format("a= %f",a[0]); UpdateData(false); }
mfg, TFTS
-
verwend mal den debugger und sag an welcher stelle er "nicht tut"...
-
es geht jetzt... jetzt brauch ich nur noch die passende bedingung wenn file ende erreicht > return
hab gelesen dass es jmd so gemacht hat
if (fgets(buffer,50,fp)==NULL)
return;geht aber nicht so richtig
mfg, TFTS
-
if (feof(file))
return;bzw.
while (!feof(file))
{
// tu das was du tun willst
}
return ... ;ka ???
-
funktioniert doch mit der if bedingung, zu beachten ist nur dass er während der if bedingung die funktion fgets gleichzeitig ausführt ... ich hatte also somit 2x in einer schleife die fgets funktion ausgeführt. jetz hab ich die funktion nur in der if bedingung drin und es klappt
danke an alle die mir bei dem problem geholfen haben
mfg, TFTS