06. maj 2001 - 14:29
Der er
10 kommentarer og 1 løsning
Indlæsning af int fra fil.
Jeg skal indlæse en integer variable fra en fil. Men kan indtil videre kun indlæse den som en char. Hvordan indlæses den som integer? eller hvordan konverterer man en char til integer?
Annonceindlæg fra Kingston Technology
har har lavet noget ligende kan det bruges: void read(istream & is) { int var,intergertal; while (!is.eof()) { is >> var; if (is.good()) intergertal=var; if (is.peek()==\'\\n\') is.get(); //cout <<\"hentet var: \"<< var << \", good(): \" << is.good()<<endl; } void main () { ifstream fil(\"test.dat\"); read(fil); fil.close(); } Bare skriv hvis du mangler forklaring...
forresten er det lavet til ms visual c++ 6.0 husk at #include <fstream> (og <iostream> hvis du indkommenterer cout\'en). det er taget ud af en sammenhæng. I dit tilfælde kunne det måske være mere hensigts at read(istream &is) returnerede en integer.
Ok, jeg har lavet følgende: void read(istream & is) { int var,intergertal; ifstream antal_medlemmer_fil(\"Antal_medlem.dat\"); while (!is.eof()) { is >> var; if(is.good()) intergertal=var; if(is.peek()==\'\\n\') is.get(); cout << \"Hentet var:\" << var <<\",good():\" << is.good(); } } ....og under main() kalder jeg read(), her udskrives følgende fejl. C:\\Programmer\\Microsoft Visual Studio\\MyProjects\\P 1\\hhh\\hhh.cpp(177) : error C2660: \'read\' : function does not take 0 parameters jeg forstår ikke programmet, men jeg skal bare hente et enkeltstående tal ind fra en fil.
Hvorfor ikke bare: // Open file for readonly: FILE* file = fopen(\"myfile.yzx\", \"r\"); if (file == NULL) exit(0); // Get the int: int nTegn; if (1 != fread(&nTegn, sizeof(int), 1, file)) exit(0); // Udskriv nTegn: printf(\"%i\", nTegn);
Din fejl får du nok fordi du mangle at oprette et ifstream objekt (hos mig \'fil\') når du kalder read skal dette objekt overføres. se min main: void main () { ifstream fil(\"test.dat\"); //oprettelse af ifstream objekt. read(fil); // her kaldes read med ifstream objektet som parameter. fil.close(); // her lukkes filen } Hvis joha\'s version holder så køb den. Jeg tog jo bare noget jeg tidligere har brugt til en øvelse, hvor jeg skulle læse 10.000 tal ind og finde gennemsnittet.
Jeg kan ikke få det til at virker. jeg indlæser fra følgende fil.... ifstream antal_medlemmer_fil(\"Antal_medlem.dat\");
/* ATOF.C: This program shows how numbers stored * as strings can be converted to numeric values * using the atof, atoi, and atol functions. */ #include <stdlib.h> #include <stdio.h> void main( void ) { char *s; double x; int i; long l; s = \" -2309.12E-15\"; /* Test of atof */ x = atof( s ); printf( \"atof test: ASCII string: %s\\tfloat: %e\\n\", s, x ); s = \"7.8912654773d210\"; /* Test of atof */ x = atof( s ); printf( \"atof test: ASCII string: %s\\tfloat: %e\\n\", s, x ); s = \" -9885 pigs\"; /* Test of atoi */ i = atoi( s ); printf( \"atoi test: ASCII string: %s\\t\\tinteger: %d\\n\", s, i ); s = \"98854 dollars\"; /* Test of atol */ l = atol( s ); printf( \"atol test: ASCII string: %s\\t\\tlong: %ld\\n\", s, l ); }
Jeg tror problemet bedst løses ved at indlæse en char og derefter konvertere den til integer. Hvordan gøres dette?
Dette er en dårlig løsning, da en char kun kan indeholde 256 værdier. Hvis du endelig vil vide det ville koden være: // Open file for readonly: FILE* file = fopen(\"myfile.yzx\", \"r\"); if (file == NULL) exit(0); // nTal indeholdet tallet! int nTal = fgetc(file); // Close the file: fclose(file);
ok, send et svar istedet for kommentar og du får point. mvh
ok, men jeg samler ikke på point, så jeg vælger ofte kun at kommentere. ~joha~
Kurser inden for grundlæggende programmering