Как читать как строки, так и целые из файла по отдельным строкам - PullRequest
0 голосов
/ 23 января 2012

, так что я искал ваш сайт, и мне все еще неясно, как это сделать, поэтому позвольте мне попытаться объяснить это как можно лучше.

У меня есть такой входной файл:

2
Joe Flacco
1 3 5 6 7 8
Tom Brady
7 9 10 15 52 53

Первое число - это число людей в файле, а следующее - их имя и фамилия.Далее 6 интервалов между [0,53], которые являются их номерами «лотереи».В любом случае, я могу заставить свой код набрать первое число, но получить их имена и номера непросто.

Последняя часть - привести его в соответствие с объявленной нами структурой (которую мы должны использовать, который содержит переменные firstName [20] lastName [20] и числа [6]. Я знаю, что я не знаю, как сделать все это правильно, но я публикую свой код, чтобы вы, ребята, могли видеть, что я делаю. Я оцениваю любыеи все помогают. Кроме того, я пытаюсь научиться делать это, а не заставлять вас выбирать программу для меня, поэтому любые объяснения приветствуются.

for(int i=0; i < numPlays;i++)
{   
        char firstName[20];
        char lastName[20];
        for(int x=0; x<3;x++)
       fscanf(fr, "%c", &firstName[x]);
       for(int x=0; x<6;x++)
       fscanf(fr, "%c", lastName[x]);   
        for(int g=0; g<6; g++)
        {
        fscanf(fr, "%d", &Steve.numbers[g]);
        }
        temp[i]= Steve;
            //Tester code, lets hope this works
        for(int x=0; x<3;x++)
        printf("The persons name is %c.\n",&firstName[x]);
        //printf("The persons last name is %c.\n",temp[i].lastName);
}

Ответы [ 3 ]

1 голос
/ 23 января 2012

Использование fgets strtok и atoi даст вам то, что вам нужно. Что касается структуры вашей программы, вы, вероятно, хотите что-то вроде этого:

typedef struct Player {
    char name[20];
    int numbers[6];
} Player;
#define SIZE(x) (sizeof(x)/sizeof(*(x)))

Player readplayer(){
      Player p;
      int x;
      char * num;
      //read a line with fgets;
      //memcpy() to p.name;
      //read another line
      for(num=strtok(line, " "),x=0;x<SIZE(p.numbers);x++, num=strtok(NULL," "))
          p.numbers[x] = atoi(num);
      return p;     
}

int main()
{
     //read a line with fgets
     int x, nplayers = atoi(line);
     Player *players = malloc(nplayers*sizeof(Player));
     for(x=0;x<nplayers;x++)
         players[x] = readplayer();
}
0 голосов
/ 23 января 2012

Вы можете отделить чтение от файла и анализировать содержимое, т.е. определить readline() и проанализировать каждую строку независимо, пример .

0 голосов
/ 23 января 2012

Вы можете использовать функцию fgets () для этой цели.он будет читать строки как String.после прочтения числового значения в виде строки просто преобразуйте его в целое число.

...