Stringarray in Integerarray umwandeln ??
-
hi,
ich habe aus einer Datei 12 Zahlen in einen Array eingelesen (String) und möchte diesen nun in einen Integer-Array schaufeln. Also aus sFOND soll iFOND werden.Ich hatte mir das ganze so vorgestellt, aber es funzt net:
for (iZAEHLER=0;iZAEHLER<=11;iZAEHLER++);
{
iFOND[iZAEHLER]=atoi(sFOND[iZAEHLER]);
}
-
code posten, bzw. welche datentypen haben die 2 variablen?
-
char sFOND[11]; -> hier befinden sich die 12 Zahlen (aus Datei)
int iFOND[11]; -> is noch leer, aber hier sollen sie rein, um damit zu rechnen
-
dachte ichs mir doch...
FALSCH!
Richtig:
char sFOND[11][10];
char *sFOND[11];sonst ist es nur 1-dimensional.
der string benötigt jedoch schon eine Dimension, eine DImension dazu, damit es mehrere zahlen sind. und fertig.mfg (c)h
-
vielen dank erstmal für den tip, allerdings funzt es irgendwie noch nich richtig (für iFOND wird immer null angezeigt) , darum hier mal die funktion im ganzen:
int berechnen (int iINVEST)
{
int iZAEHLER=0;
int iFOND[11];
char sFOND[11][10];
FILE *DATEI;DATEI=fopen("fonds.txt","r");
do
{
fscanf(DATEI,"%s",&sFOND[iZAEHLER]);
iZAEHLER+1;
printf("%s\n",sFOND);
}
while(!feof(DATEI));for (iZAEHLER=0;iZAEHLER<=11;iZAEHLER++)
{
iFOND[iZAEHLER]=atoi(sFOND[iZAEHLER]);
printf ("%i\n",iFOND[iZAEHLER]);
}getch();
return 0;
}
-
zuerst mach ichs mal schöner:
EDIT: und gleichzeitig besser:int berechnen (int iINVEST) { int iZAEHLER=0; int iFOND[11]; char sFOND[11][10]; FILE *DATEI; if((DATEI=fopen("fonds.txt","r"))==NULL) // edit exit(-1); do { fscanf(DATEI,"%s",sFOND[iZAEHLER]); // edit: & wird nicht benötigt iZAEHLER++; // edit printf("%s\n",sFOND); } while(!feof(DATEI)); for (iZAEHLER=0;iZAEHLER<11;iZAEHLER++) // kleiner 11!!! { iFOND[iZAEHLER]=atoi(sFOND[iZAEHLER]); printf ("zahl: %d\n",iFOND[iZAEHLER]); // %d } getch(); return 0; }
-
weiters würde ich zum einlesen "fgets" empfehlen
fgets(char*,anz,FILE*);einlesen in einer for-schleife wäre auch besser:
for(int iZaehler=0;!feof(DATEI);iZaehler++)
...mfg (c)h
-
Warum werden die Zahlen eigentlich als Strings aus der Datei gelesen? Warum nicht mit
fscanf(DATEI,"%d",iFOND+iZAEHLER);
bzw.
fgets(buffer, sizeof(buffer), DATEI); sscanf(buffer,"%d",iFOND+iZAEHLER);
direkt als Integer einlesen?
-
das funktioniert:
BEACHTE in der textdatei:
jede Zeile maximal 9 Zeichen
Die datei hat MAXIMAL 10 Zeilen
am ende der Datei steht ein ENTER#include<conio.h> #include<stdio.h> #include<stdlib.h> void berechnen () { int iZAEHLER=0; int iFOND[11]; char sFOND[11][10]; FILE *DATEI; if((DATEI=fopen("fonds.txt","r"))==NULL) exit(-1); do { fgets(sFOND[iZAEHLER],10,DATEI); puts(sFOND[iZAEHLER]); iZAEHLER++; } while(!feof(DATEI)); for (iZAEHLER=0;iZAEHLER<11;iZAEHLER++) { iFOND[iZAEHLER]=atoi(sFOND[iZAEHLER]); printf("zahl: %d\n",iFOND[iZAEHLER]); } getch(); } int main() { berechnen(); return(0); }
mfg (c)h
-
vielen dank, jez komm ich erstmal voran...