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...


Anmelden zum Antworten