Входной файл с информацией, разделенной запятыми

Как я могу прочитать входной файл, содержащий строки и двойные числа, разделенные запятыми, с несколькими строками. Я хочу сохранить строки в 2D-массиве, например char Teams[5][40]. Я хочу сделать то же самое для каждой строки чисел. Итак, для второй строки чисел я хочу char probFG[5][10], а для третьей строки probTD [5][10].

Я хочу, чтобы каждое число сохранялось в другом индексе массива, но я хочу убедиться, что все индексы каждого массива соответствуют соответствующим столбцам.

Team1,0.80,0.30
Team1,0.30,0.20
Team1,0.20,0.70
Team1,0.70,0.80
Team1,0.90,0.20

Как бы вы это сделали, принимая во внимание использование строкового потока, потому что я хотел бы использовать числа позже? В основном, как вы используете массивы символов в соответствии со строковыми потоками.


person user3247278    schedule 18.02.2014    source источник
comment
Какой язык вы используете?   -  person Daniel A.A. Pelsmaeker    schedule 18.02.2014
comment
@Virtlink, я думаю, C, потому что тег strtok   -  person emcas88    schedule 18.02.2014


Ответы (1)


Ну, я предполагаю, что язык C, вот код, который, я думаю, вам нужен:

#include <stdio.h>
#include <string.h>
#include <cstdlib>

const int N = 100000;

static char buffer[N]; //buffer to read the user input
static char Teams[N][40];
static char probFG[N][10];
static char probTD[N][10];

int main ()
{
    FILE *file = fopen("myFile.txt","r"); //open the file(i assume is a txt)
    int lineIndex = 0; //keep track of the current row

    //reading the file
    while(fscanf(file,"%s",buffer) != EOF) {
        int index = 0; //this int keep the track of the current column
        char * pch;
        pch = strtok (buffer,",");
        while (pch != NULL) { //split the string
            //printf("%s\n",pch);
            if(index == 0) 
                strcpy(Teams[lineIndex],pch);
            else if(index == 1)
                strcpy(probFG[lineIndex],pch);
            else
                strcpy(probTD[lineIndex],pch);
            pch = strtok (NULL, ",");

            index++;
        }

        lineIndex++;
    }

    //if you want to convert the char to float use this function
    //as an example here is the sum of the first two numbers in the first row
    double a = atof(probFG[0]);
    double b = atof(probTD[0]);

    double c = a + b;

    printf("%lf\n",c);

    return 0;
}

Надеюсь, поможет.

person emcas88    schedule 18.02.2014
comment
если вы считаете, что мой ответ правильный, пожалуйста, примите его, любые сомнения вы можете задать мне - person emcas88; 18.02.2014